I wrote: >> So that's trouble waiting to happen, for sure. At the very least we >> need to do a single fetch of WalRcv->latch, not two. I wonder whether >> even that is sufficient, though: this coding requires an atomic fetch of >> a pointer, which is something we generally don't assume to be safe.
BTW, I had supposed that this bug was of long standing, but actually it's new in v10, dating to 597a87ccc9a6fa8af7f3cf280b1e24e41807d555. Before that walreceiver start/stop just changed the owner of a long-lived shared latch, and there was no question of stale pointers. I considered reverting that decision, but the reason for it seems to have been to let libpqwalreceiver.c manipulate MyProc->procLatch rather than having to know about a custom latch. That's probably a sufficient reason to justify some squishiness in the wakeup logic. Still, we might want to revisit it if we find any other problems here. regards, tom lane -- Sent via pgsql-hackers mailing list (email@example.com) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers