Re: Race condition in SyncRepGetSyncStandbysPriority
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Cc: masahiko.sawada@2ndquadrant.com, masao.fujii@oss.nttdata.com,
pgsql-hackers@lists.postgresql.org
Date: 2020-04-16T15:39:06Z
Lists: pgsql-hackers
Kyotaro Horiguchi <horikyota.ntt@gmail.com> writes: > [ syncrep-fixes-4.patch ] I agree that we could probably improve the clarity of this code with further rewriting, but I'm still very opposed to the idea of having callers know that the first num_sync array elements are the active ones. It's wrong (or at least different from current behavior) for quorum mode, where there might be more than num_sync walsenders to consider. And it might not generalize very well to other syncrep selection rules we might add in future, which might also not have exactly num_sync interesting walsenders. So I much prefer an API definition that uses bool flags in an array that has no particular ordering (so far as the callers know, anyway). If you don't like is_sync_standby, how about some more-neutral name like is_active or is_interesting or include_position? I dislike the proposed comment revisions in SyncRepReleaseWaiters, too, particularly the change to say that what we're "announcing" is the ability to release waiters. You did not change the actual log messages, and you would have gotten a lot of pushback if you tried, because the current messages make sense to users and something like that would not. But by the same token this new comment isn't too helpful to somebody reading the code. (Actually, I wonder why we even have the restriction that only sync standbys can release waiters. It's not like they are going to get different results from SyncRepGetSyncRecPtr than any other walsender would. Maybe we should just drop all the am_sync logic?) regards, tom lane
Commits
-
Fix race conditions in synchronous standby management.
- c65c1aa82105 9.6.18 landed
- f332241a60aa 13.0 landed
- b3fa6d016d82 11.8 landed
- 63ecdaf758c5 10.13 landed
- 00ef5d52c577 12.3 landed
-
When WalSndCaughtUp, sleep only in WalSndWaitForWal().
- 421685812290 13.0 cited