]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
fsync pg_logical/mappings in CheckPointLogicalRewriteHeap().
authorAndres Freund <andres@anarazel.de>
Fri, 21 Jan 2022 19:22:55 +0000 (11:22 -0800)
committerAndres Freund <andres@anarazel.de>
Fri, 21 Jan 2022 19:24:12 +0000 (11:24 -0800)
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

index 335e29f8fa988e5c7c1900a46f86d394de2b5bc3..489c72582d3bcc2c77f5d4ca9827a7d21bef1ace 100644 (file)
@@ -1312,4 +1312,7 @@ CheckPointLogicalRewriteHeap(void)
                }
        }
        FreeDir(mappings_dir);
+
+       /* persist directory entries to disk */
+       fsync_fname("pg_logical/mappings", true);
 }