Thread

  1. Re: Optimize LISTEN/NOTIFY

    Joel Jacobson <joel@compiler.org> — 2025-11-12T20:53:17Z

    On Wed, Nov 12, 2025, at 21:37, Joel Jacobson wrote:
    > Sequence of events:
    >
    > 1. In the notifier, PreCommit_Notify calls asyncQueueAddEntries,
    > which updates QUEUE_HEAD when the page is full,
    > (and sets queueHeadAfterWrite to this value).
    >
    > 2. At this time, a listener wakes up and asyncQueueAddEntries
    
    Correction:
    I meant "asyncQueueReadAllNotifications" here, not "asyncQueueAddEntries".
    
    > reads the current QUEUE_HEAD value and stores it
    > in its local `head` variable, and starts reading up to this pos.
    >
    > 3. In the notifier, PreCommit_Notify calls asyncQueueAddEntries
    > the second time, which updates QUEUE_HEAD,
    > and sets queueHeadAfterWrite to the final value
    > before returning.
    >
    > For this reason, I think the listener could actually stop
    > in between queueHeadBeforeWrite and queueHeadAfterWrite,
    > since it's local `head` variable could get the intermediary
    > QUEUE_HEAD value, when a page is full.
    
    /Joel