Re: Synchronous replication

Yeb Havinga <yebhavinga@gmail.com>

From: Yeb Havinga <yebhavinga@gmail.com>
To: Fujii Masao <masao.fujii@gmail.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2010-07-27T11:48:52Z
Lists: pgsql-hackers
Fujii Masao wrote:
>> I noted the changes in XlogSend where instead of *caughtup = true/false it
>> now returns !MyWalSnd->sndrqst. That value is initialized to false in that
>> procedure and it cannot be changed to true during execution of that
>> procedure, or can it?
>>     
>
> That value is set to true in WalSndWakeup(). If WalSndWakeup() is called
> after initialization of that value in XLogSend(), *caughtup is set to false.
>   
Ah, so it can be changed by another backend process.

Another question:

Is there a reason not to send the signal in XlogFlush itself, so it 
would be called at

CreateCheckPoint(), EndPrepare(), FlushBuffer(), 
RecordTransactionAbortPrepared(), RecordTransactionCommit(), 
RecordTransactionCommitPrepared(), RelationTruncate(), 
SlruPhysicalWritePage(), write_relmap_file(), WriteTruncateXlogRec(), 
and xact_redo_commit().

regards,
Yeb Havinga