> 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/




Reply via email to