On Tue, Apr 4, 2023 at 5:44 AM Drouvot, Bertrand <bertranddrouvot...@gmail.com> wrote: > Oh right, even better, thanks! > Done in V58 and now this is as simple as: > > + if (DoNotInvalidateSlot(s, xid, &oldestLSN)) > { > /* then, we are not forcing for invalidation */
Thanks for your continued work on $SUBJECT. I just took a look at 0004, and I think that at the very least the commit message needs work. Nobody who is not a hacker is going to understand what problem this is fixing, because it makes reference to the names of functions and structure members rather than user-visible behavior. In fact, I'm not really sure that I understand the problem myself. It seems like the problem is that on a standby, WAL senders will get woken up too early, before we have any WAL to send. That's presumably OK, in the sense that they'll go back to sleep and eventually wake up again, but it means they might end up chronically behind sending out WAL to cascading standbys. If that's right, I think it should be spelled out more clearly in the commit message, and maybe also in the code comments. But the weird thing is that most (all?) of the patch doesn't seem to be about that issue at all. Instead, it's about separating wakeups of physical walsenders from wakeups of logical walsenders. I don't see how that could ever fix the kind of problem I mentioned in the preceding paragraph, so my guess is that this is a separate change. But this change doesn't really seem adequately justified. The commit message says that it "helps to filter what kind of walsender we want to wakeup based on the code path" but that's awfully vague about what the actual benefit is. I wonder whether many people have a mix of physical and logical systems connecting to the same machine such that this would even help, and if they do have that, would this really do enough to solve any performance problem that might be caused by too many wakeups? -- Robert Haas EDB: http://www.enterprisedb.com