On Sat, Mar 5, 2011 at 9:21 PM, Simon Riggs <si...@2ndquadrant.com> wrote: > I've added code to shmqueue.c to allow this. > > New version pushed.
New comments; It looks odd to report the sync_state of walsender in BACKUP state as ASYNC. +SyncRepCleanupAtProcExit(int code, Datum arg) +{ + if (WaitingForSyncRep && !SHMQueueIsDetached(&(MyProc->syncrep_links))) + { + LWLockAcquire(SyncRepLock, LW_EXCLUSIVE); + SHMQueueDelete(&(MyProc->syncrep_links)); + LWLockRelease(SyncRepLock); + } + + if (MyProc != NULL) + DisownLatch(&MyProc->waitLatch); Can MyProc really be NULL here? If yes, "MyProc != NULL" should be checked before seeing MyProc->syncrep_links. Even though postmaster dies, the waiting backend keeps waiting until the timeout expires. Instead, the backends should periodically check whether postmaster is alive, and then they should exit immediately if it's not alive, as well as other process does? If the timeout is disabled, such backends would get stuck infinitely. Though I commented about the issue related to shutdown, that was pointless. So change of ProcessInterrupts is not required unless we find the need again. Sorry for the noise.. Regards, -- Fujii Masao NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers