Thread: BUG #11517: the pg_stat_replication.sync_stat show sync when synchronous_commit is set to be off

The following bug has been logged on the website:

Bug reference:      11517
Logged by:          the pg_stat_replication.sync_stat show sync when synchronous_commit is set
to be off
Email address:      amutu@amutu.com
PostgreSQL version: 9.2.4
Operating system:   suse linux 10 x86_64
Description:

from the doc,when synchronous_commit set to off or local,the commit will not
wait the remote slave reveive data,so it is not asynchronous replication.but
I find the pg_stat_replication wrongly report the sync_stat to sync.This can
be confused for people.

postgres=# select * from pg_stat_replication ;
-[ RECORD 1 ]----+------------------------------
pid              | 3213
usesysid         | 16387
usename          | rep
application_name | sync_slave
client_addr      | 172.25.38.154
client_hostname  |
client_port      | 54333
backend_start    | 2014-09-29 15:17:19.927457+08
state            | streaming
sent_location    | 21/A0F01C0
write_location   | 21/A0F01C0
flush_location   | 21/A0F01C0
replay_location  | 21/A0EFC88
sync_priority    | 1
sync_state       | sync

postgres=# show synchronous_standby_names ;
-[ RECORD 1 ]-------------+-----------------------
synchronous_standby_names | sync_slave,walreceiver


postgres=# show synchronous_commit ;
-[ RECORD 1 ]------+----
synchronous_commit | off
On Mon, Sep 29, 2014 at 4:45 PM, <amutu@amutu.com> wrote:

> from the doc,when synchronous_commit set to off or local,the commit will
> not
> wait the remote slave reveive data,so it is not asynchronous
> replication.but I
> find the pg_stat_replication wrongly report the sync_stat to sync.This can

This is not a bug, please refer to the documentation about
synchronous_commit:
http://www.postgresql.org/docs/devel/static/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT

When synchronous_commit is set to off, local or remote_write, the master
node does not wait for the confirmation from the sync standby that the WAL
has been flushed to disk (for remote_write it waits for the write
confirmation), and the standby is still considered as sync, of course if
synchronous_standby_names is set.
Regards,
--
Michael
I read the doc before I submit the bug
2014=C4=EA9=D4=C229=C8=D5 4:03 PM=D3=DA "Michael Paquier" <michael.paquier@=
gmail.com>=D0=B4=B5=C0=A3=BA
>
>
>
> On Mon, Sep 29, 2014 at 4:45 PM, <amutu@amutu.com> wrote:
>>
>> from the doc,when synchronous_commit set to off or local,the commit will
not
>> wait the remote slave reveive data,so it is not asynchronous
replication.but I
>> find the pg_stat_replication wrongly report the sync_stat to sync.This
can
>
> This is not a bug, please refer to the documentation about
synchronous_commit:
>
http://www.postgresql.org/docs/devel/static/runtime-config-wal.html#GUC-SYN=
CHRONOUS-COMMIT
>
> When synchronous_commit is set to off, local or remote_write, the master
node does not wait for the confirmation from the sync standby that the WAL
has been flushed to disk (for remote_write it waits for the write
confirmation), and the standby is still considered as sync, of course if
synchronous_standby_names is set.

I can't figure out this conclusion from the doc above.I appreciate it if
you point me more specifically.
> Regards,
> --
> Michael