On Thu, May 13, 2010 at 8:05 PM, Simon Riggs <simon@2ndquadrant.com> wrote:
> On Thu, 2010-05-13 at 19:32 +0900, Fujii Masao wrote:
>> On Thu, May 13, 2010 at 7:22 PM, Simon Riggs <simon@2ndquadrant.com> wrote:
>> > On Thu, 2010-05-13 at 19:08 +0900, Fujii Masao wrote:
>> >
>> >> I was able to reproduce such a hang by not executing another
>> >> transaction after rollback. In this case, walsender cannot replicate
>> >> the rollback since it's not in the disk.
>> >
>> > WALWriter is not active?
>>
>> WALWriter is active, but unfortunately it doesn't flush all of the WAL
>> records in wal_buffers. Please see XLogBackgroundFlush().
>
> Yes, I wrote it. It flushes after at most 3 cycles, stated in comments.
Yeah, what is worse is that RecordTransactionAbort() doesn't update the
XLogCtl->asyncCommitLSN, so rollback might not be flushed even after at
3 cycles.
Regards,
--
Fujii Masao
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center