• Heikki Linnakangas's avatar
    Fix assertion failure in logical decoding. · e2999abc
    Heikki Linnakangas authored
    Logical decoding set SnapshotData's regd_count field to avoid the
    snapshot manager from prematurely freeing snapshots that are generated
    by the decoding system. That was always an abuse of the field, as it was
    never supposed to be used outside the snapshot manager. Commit 94028691
    made snapshot manager's tracking of the snapshots smarter, and that scheme
    fell apart. The snapshot manager got confused and hit the assertion, when
    a snapshot that was marked with regd_count==1 was not found in the heap,
    where the snapshot manager tracks registered the snapshots.
    
    To fix, don't abuse the regd_count field like that. Logical decoding still
    abuses the active_count field for similar purposes, but that's currently
    harmless.
    
    The assertion failure was first reported by Michael Paquier
    e2999abc
reorderbuffer.c 80.4 KB