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 <thomas.mu...@gmail.com>
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

Reply via email to