From: | Ants Aasma <ants(at)cybertec(dot)at> |
---|---|
To: | Erik Rijkers <er(at)xs4all(dot)nl> |
Cc: | Joshua Berkus <josh(at)agliodbs(dot)com>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: master and sync-replica diverging |
Date: | 2012-05-17 14:10:05 |
Message-ID: | CA+CSw_t5efchPf3rPvU8CJHHm8KT+d7a-Bx=o4OjM_B9d4QWwg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Thu, May 17, 2012 at 4:53 PM, Erik Rijkers <er(at)xs4all(dot)nl> wrote:
> The count(*) was done in the way that I showed, i.e. *after* psql had exited. My understanding is
> that, with synchronous replication 'on' and configured properly, psql could only return *after*
> the sync-replica had the data safely on disk. Either my understanding is not correct or there is
> a bug in postgres sync-rep.
Commit can only return when sync-replica has the data safely on disk,
but this doesn't mean that it's visible yet.
The sequence of events is in dot notation:
commit_command -> master_wal_sync -> replica_wal_sync ->
master_commit_visible -> commit_response
replica_wal_sync -> replica_replay_wal -> replica_commit_visible
If you issue a select on the replica after getting a commit response
from master you can see that the query getting a snapshot races with
replay of the commit record.
Ants Aasma
--
Cybertec Schönig & Schönig GmbH
Gröhrmühlgasse 26
A-2700 Wiener Neustadt
Web: http://www.postgresql-support.de
From | Date | Subject | |
---|---|---|---|
Next Message | Erik Rijkers | 2012-05-17 14:24:53 | Re: master and sync-replica diverging |
Previous Message | Teodor Sigaev | 2012-05-17 13:59:31 | Re: psql bug |