Hi,
If you build with --with-wal-blocksize=/-Dwal_blocksize= anything but
8, this breaks:
running bootstrap script ... LOG: GUC (PGC_INT)
wal_writer_flush_after, boot_val=256, C-var=128
TRAP: failed Assert("check_GUC_init(hentry->gucvar)"), File: "guc.c",
Line: 1519, PID: 84605
From 48d971e0b19f770991e334b8dc38422462b4485e Mon Sep 17 00:00:00 2001
From: Thomas Munro <[email protected]>
Date: Sat, 8 Apr 2023 13:12:48 +1200
Subject: [PATCH] Fix default wal_writer_flush_after value.
Commit a73952b7956 requires default values in guc_table.c and C variable
initializers to match. This one only matched for XLOG_BLCKSZ == 8kB.
Fix by using the same expression in both places with a new DEFAULT_XXX
macro, as done for other GUCs.
diff --git a/src/backend/postmaster/walwriter.c b/src/backend/postmaster/walwriter.c
index 65e84be39b..266fbc2339 100644
--- a/src/backend/postmaster/walwriter.c
+++ b/src/backend/postmaster/walwriter.c
@@ -68,7 +68,7 @@
* GUC parameters
*/
int WalWriterDelay = 200;
-int WalWriterFlushAfter = 128;
+int WalWriterFlushAfter = DEFAULT_WAL_WRITER_FLUSH_AFTER;
/*
* Number of do-nothing loops before lengthening the delay time, and the
diff --git a/src/backend/utils/misc/guc_tables.c b/src/backend/utils/misc/guc_tables.c
index cf7f465ddb..916f6e2cfa 100644
--- a/src/backend/utils/misc/guc_tables.c
+++ b/src/backend/utils/misc/guc_tables.c
@@ -2778,7 +2778,7 @@ struct config_int ConfigureNamesInt[] =
GUC_UNIT_XBLOCKS
},
&WalWriterFlushAfter,
- (1024 * 1024) / XLOG_BLCKSZ, 0, INT_MAX,
+ DEFAULT_WAL_WRITER_FLUSH_AFTER, 0, INT_MAX,
NULL, NULL, NULL
},
diff --git a/src/include/postmaster/walwriter.h b/src/include/postmaster/walwriter.h
index 22281a97ba..af25cf0025 100644
--- a/src/include/postmaster/walwriter.h
+++ b/src/include/postmaster/walwriter.h
@@ -16,6 +16,8 @@
extern PGDLLIMPORT int WalWriterDelay;
extern PGDLLIMPORT int WalWriterFlushAfter;
+#define DEFAULT_WAL_WRITER_FLUSH_AFTER ((1024 * 1024) / XLOG_BLCKSZ)
+
extern void WalWriterMain(void) pg_attribute_noreturn();
#endif /* _WALWRITER_H */
--
2.40.0