On 2013-08-27 09:57:38 -0500, Merlin Moncure wrote: > + bool > + RecoveryMightBeInProgress(void) > + { > + /* > + * We check shared state each time only until we leave recovery mode. We > + * can't re-enter recovery, so there's no need to keep checking after the > + * shared variable has once been seen false. > + */ > + if (!LocalRecoveryInProgress) > + return false; > + else > + { > + /* use volatile pointer to prevent code rearrangement */ > + volatile XLogCtlData *xlogctl = XLogCtl; > + > + /* Intentionally query xlogctl without spinlocking! */ > + LocalRecoveryInProgress = xlogctl->SharedRecoveryInProgress; > + > + return LocalRecoveryInProgress; > + } > + } I don't think it's acceptable to *set* LocalRecoveryInProgress here. That should only be done in the normal routine. Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services -- Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance