• Heikki Linnakangas's avatar
    Fix corner case in cleanup of transactions using SSI. · 326b922e
    Heikki Linnakangas authored
    When the only remaining active transactions are READ ONLY, we do a "partial
    cleanup" of committed transactions because certain types of conflicts
    aren't possible anymore. For committed r/w transactions, we release the
    SIREAD locks but keep the SERIALIZABLEXACT. However, for committed r/o
    transactions, we can go further and release the SERIALIZABLEXACT too. The
    problem was with the latter case: we were returning the SERIALIZABLEXACT to
    the free list without removing it from the finished list.
    
    The only real change in the patch is the SHMQueueDelete line, but I also
    reworked some of the surrounding code to make it obvious that r/o and r/w
    transactions are handled differently -- the existing code felt a bit too
    clever.
    
    Dan Ports
    326b922e
predicate.c 155 KB