Thread: [COMMITTERS] pgsql: Fix off-by-one possibly leading to skipped XLOG_RUNNING_XACTSre
[COMMITTERS] pgsql: Fix off-by-one possibly leading to skipped XLOG_RUNNING_XACTSre
From
Andres Freund
Date:
Fix off-by-one possibly leading to skipped XLOG_RUNNING_XACTS records. Since 6ef2eba3f57f1 ("Skip checkpoints, archiving on idle systems."), GetLastImportantRecPtr() is used to avoid performing superfluous checkpoints, xlog switches, running-xact records when the system is idle. Unfortunately the check concerning running-xact records had a off-by-one error, leading to such records being potentially skipped when only a single record has been inserted since the last running-xact record. An alternative approach would have been to change GetLastImportantRecPtr()'s definition to point to the end of records, but that would make the checkpoint code more complicated. Author: Andres Freund Discussion: https://postgr.es/m/20170505012447.wsrympaxnfis6ojt@alap3.anarazel.de Backpatch: no, code only present in master Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/e6c44eef55cda493c759e926cecceb92186159b8 Modified Files -------------- src/backend/postmaster/bgwriter.c | 7 +++++-- src/backend/postmaster/checkpointer.c | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-)