postgres.git / summary / log / commit / refs

commit    2b7dbe4bd5872ae5c6780e1a4121c2a5a8401e7c
Author:   Andres Freund <andres@anarazel.de>
Date:     Fri Jan 21 19:22:55 2022 +0000

    fsync pg_logical/mappings in CheckPointLogicalRewriteHeap().
    
    While individual logical rewrite files were synced to disk, the directory was
    not. On some filesystems that could lead to loosing directory entries after a
    crash.
    
    Reported-By: Tom Lane <tgl@sss.pgh.pa.us>
    Author: Nathan Bossart <bossartn@amazon.com>
    Discussion: https://postgr.es/m/867F2E29-2782-4869-970E-B984C6D35A8F@amazon.com
    Backpatch: 10-


src/backend/access/heap/rewriteheap.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/backend/access/heap/rewriteheap.c b/src/backend/access/heap/rewriteheap.c index 1aff62cd423..15bef9f7d30 100644 --- a/src/backend/access/heap/rewriteheap.c +++ b/src/backend/access/heap/rewriteheap.c @@ -1289,4 +1289,7 @@ CheckPointLogicalRewriteHeap(void) } } FreeDir(mappings_dir); + + /* persist directory entries to disk */ + fsync_fname("pg_logical/mappings", true); } [parent: 700e8fe6d414]