mirror of
https://github.com/postgres/postgres.git
synced 2026-02-26 19:30:25 -05:00
Logical decoding's reorderbuffer.c may spill transaction files to disk when transactions are large. These are supposed to be removed when they become "too old" by xid; but file removal requires the boundary LSNs of the transaction to be known. The final_lsn is only set when we see the commit or abort record for the transaction, but nothing sets the value for transactions that crash, so the removal code misbehaves -- in assertion-enabled builds, it crashes by a failed assertion. To fix, modify the final_lsn of transactions that don't have a value set, to the LSN of the very latest change in the transaction. This causes the spilled files to be removed appropriately. Author: Atsushi Torikoshi Reviewed-by: Kyotaro HORIGUCHI, Craig Ringer, Masahiko Sawada Discussion: https://postgr.es/m/54e4e488-186b-a056-6628-50628e4e4ebc@lab.ntt.co.jp |
||
|---|---|---|
| .. | ||
| basebackup.h | ||
| decode.h | ||
| logical.h | ||
| logicalfuncs.h | ||
| logicallauncher.h | ||
| logicalproto.h | ||
| logicalrelation.h | ||
| logicalworker.h | ||
| message.h | ||
| origin.h | ||
| output_plugin.h | ||
| pgoutput.h | ||
| reorderbuffer.h | ||
| slot.h | ||
| snapbuild.h | ||
| syncrep.h | ||
| walreceiver.h | ||
| walsender.h | ||
| walsender_private.h | ||
| worker_internal.h | ||