On Sat, Jan 15, 2011 at 4:40 PM, Simon Riggs <si...@2ndquadrant.com> wrote: > > Here's the latest patch for sync rep. >
I was looking at this code and found something in SyncRepWaitOnQueue we declare a timeout variable that is a long and another that is a boolean (this last one in the else part of the "if (!IsOnSyncRepQueue())"), and then use the boolean one as if it were the long one + else + { + bool release = false; + bool timeout = false; + + SpinLockAcquire(&queue->qlock); + + /* + * Check the LSN on our queue and if its moved far enough then + * remove us from the queue. First time through this is + * unlikely to be far enough, yet is possible. Next time we are + * woken we should be more lucky. + */ + if (XLByteLE(XactCommitLSN, queue->lsn)) + release = true; + else if (timeout > 0 && + TimestampDifferenceExceeds(GetCurrentTransactionStopTimestamp(), + now, + timeout)) + { + release = true; + timeout = true; + } the other two things are on postgresql.conf.sample: - we have two replication_timeout_client, obviously one of them should be replication_timeout_server - synchronous_replication_feedback is off by default, but docs says otherwise i also have been testing this, until now the only issue i have found is that if i set allow_standalone_primary to off and there isn't a standby connected i need to stop the server with -m immediate which is at least surprising -- Jaime Casanova www.2ndQuadrant.com Professional PostgreSQL: Soporte y capacitación de PostgreSQL -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers