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@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance

Reply via email to