any wait event for a commit in sync replication?

Started by qihua wuabout 3 years ago2 messagesgeneral
Jump to latest
#1qihua wu
staywithpin@gmail.com

We are using sync replication, if a session runs an insert, and then
commit, the client is actually waiting for commit to complete, but looks
like this wait doesn't show in pg_stat_activity.

In one session I inserted a row (auto commit), it hangs there.

example=# insert into test_timteout select '1';
^CCancel request sent
WARNING: canceling wait for synchronous replication due to user request
DETAIL: The transaction has already committed locally, but might not have
been replicated to the standby.
INSERT 0 1
example=# select pg_backend_pid();
pg_backend_pid
----------------
19325
(1 row)

During the hung period.
postgres=# select * from pg_stat_activity where pid=19325;
(0 rows)

postgres=#

If there is no event for such commit, anyway to find out such session which
pending on commit(sync replication)

#2qihua wu
staywithpin@gmail.com
In reply to: qihua wu (#1)
Re: any wait event for a commit in sync replication?

Sorry, the pg_stat_activity sql was executed from a session connecting to a
wrong postgresql. It DOES show in the view, and the wait event is SyncRep.

postgres=# select * from pg_stat_activity where application_name='psql' and
datname='example';
-[ RECORD 1 ]----+--------------------------------------
....
wait_event_type | IPC
wait_event | SyncRep
state | active
....

On Tue, Jan 31, 2023 at 3:35 PM qihua wu <staywithpin@gmail.com> wrote:

Show quoted text

We are using sync replication, if a session runs an insert, and then
commit, the client is actually waiting for commit to complete, but looks
like this wait doesn't show in pg_stat_activity.

In one session I inserted a row (auto commit), it hangs there.

example=# insert into test_timteout select '1';
^CCancel request sent
WARNING: canceling wait for synchronous replication due to user request
DETAIL: The transaction has already committed locally, but might not have
been replicated to the standby.
INSERT 0 1
example=# select pg_backend_pid();
pg_backend_pid
----------------
19325
(1 row)

During the hung period.
postgres=# select * from pg_stat_activity where pid=19325;
(0 rows)

postgres=#

If there is no event for such commit, anyway to find out such session
which pending on commit(sync replication)