> On Sep 26, 2025, at 17:32, Joel Jacobson <[email protected]> wrote: > > On Fri, Sep 26, 2025, at 04:26, Chao Li wrote: > >> I think what you explained is partially correct. >> >> Based on my understanding, any backend process may call >> SignalBackends(), which means that it’s possible that multiple backend >> processes may call SignalBackends() concurrently. >> >> Looking at your code, between checking >> QUEUE_BACKEND_WAKEUP_PENDING_FLAG(i) and set the flag to true, there is >> a block of code (the “if-else”) to run, so that it’s possible that >> multiple backend processes have passed the >> QUEUE_BACKEND_WAKEUP_PENDING_FLAG(i) check, then multiple signals will >> be sent to a process, which will lead to duplicate timeout enabled in >> the receiver process. > > I don't see how that can happen; we're checking wakeup_pending_flag > while holding an exclusive lock, so I don't see how multiple backend > processes could be within the region where we check/set > wakeup_pending_flag, at the same time? > > /Joel
I might miss the factor of holding an exclusive lock. I will revisit that part again. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/
