More race conditions in logical replication
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: pgsql-hackers@postgreSQL.org
Date: 2017-07-02T23:54:48Z
Lists: pgsql-hackers
Attachments
- break_repl_slot_management.patch (text/x-diff) patch
I noticed a recent failure that looked suspiciously like a race condition: https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=hornet&dt=2017-07-02%2018%3A02%3A07 The critical bit in the log file is error running SQL: 'psql:<stdin>:1: ERROR: could not drop the replication slot "tap_sub" on publisher DETAIL: The error was: ERROR: replication slot "tap_sub" is active for PID 3866790' while running 'psql -XAtq -d port=59543 host=/tmp/QpCJtafT7R dbname='postgres' -f - -v ON_ERROR_STOP=1' with sql 'DROP SUBSCRIPTION tap_sub' at /home/nm/farm/xlc64/HEAD/pgsql.build/src/test/subscription/../../../src/test/perl/PostgresNode.pm line 1198. After poking at it a bit, I found that I can cause several different failures of this ilk in the subscription tests by injecting delays at the points where a slot's active_pid is about to be cleared, as in the attached patch (which also adds some extra printouts for debugging purposes; none of that is meant for commit). It seems clear that there is inadequate interlocking going on when we kill and restart a logical rep worker: we're trying to start a new one before the old one has gotten out of the slot. I'm not particularly interested in fixing this myself, so I'm just going to add it to the open items list. regards, tom lane
Commits
-
Fix vertical spanning in table "wait_event Description".
- e88928c50dfe 10.0 landed
-
Fix replication origin-related race conditions
- b2c95a3798ff 10.0 landed
-
Fix inadequacies in recently added wait events
- 030273b7ea46 10.0 landed
-
Fix race conditions in replication slot operations
- 9915de6c1cb2 10.0 landed