From 252b6c3ad06b555e1cc20ca33155ee408f3cff33 Mon Sep 17 00:00:00 2001 From: Tomas Vondra Date: Fri, 7 Mar 2025 20:19:29 +0100 Subject: [PATCH v20250310b 2/5] simple post-rebase fixes - Update checks in PostmasterStateMachine to account for datachecksum workers, etc. - Remove pgstat_bestart() call - it would need to be _initial(), but I don't think it's needed. - Update vacuum_delay_point() call. - Cast PID to long in elog call (same as we do in postmaster.c) - Fix test 003_standby_restarts by adding a replication slot --- src/backend/postmaster/datachecksumsworker.c | 7 ++----- src/backend/postmaster/postmaster.c | 5 +++++ src/backend/utils/activity/pgstat_backend.c | 2 ++ src/test/checksum/t/003_standby_restarts.pl | 10 +++++++++- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/backend/postmaster/datachecksumsworker.c b/src/backend/postmaster/datachecksumsworker.c index de7a077f9c2..b30d5481b06 100644 --- a/src/backend/postmaster/datachecksumsworker.c +++ b/src/backend/postmaster/datachecksumsworker.c @@ -450,7 +450,7 @@ ProcessSingleRelationFork(Relation reln, ForkNumber forkNum, BufferAccessStrateg if (abort_requested) return false; - vacuum_delay_point(); + vacuum_delay_point(false); } pfree(relns); @@ -587,7 +587,7 @@ ProcessDatabase(DataChecksumsWorkerDatabase *db) db->dbname))); snprintf(activity, sizeof(activity) - 1, - "Waiting for worker in database %s (pid %d)", db->dbname, pid); + "Waiting for worker in database %s (pid %ld)", db->dbname, (long) pid); pgstat_report_activity(STATE_RUNNING, activity); status = WaitForBackgroundWorkerShutdown(bgw_handle); @@ -752,9 +752,6 @@ DataChecksumsWorkerLauncherMain(Datum arg) */ BackgroundWorkerInitializeConnectionByOid(InvalidOid, InvalidOid, 0); - /* Initialize backend status information */ - pgstat_bestart(); - enabling_checksums = DataChecksumsWorkerShmem->launch_enable_checksums; DataChecksumsWorkerShmem->launcher_running = true; DataChecksumsWorkerShmem->enabling_checksums = enabling_checksums; diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index d2a7a7add6f..2fc438987b5 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -2947,6 +2947,11 @@ PostmasterStateMachine(void) B_INVALID, B_STANDALONE_BACKEND); + /* also add checksumming processes */ + remainMask = btmask_add(remainMask, + B_DATACHECKSUMSWORKER_LAUNCHER, + B_DATACHECKSUMSWORKER_WORKER); + /* All types should be included in targetMask or remainMask */ Assert((remainMask.mask | targetMask.mask) == BTYPE_MASK_ALL.mask); } diff --git a/src/backend/utils/activity/pgstat_backend.c b/src/backend/utils/activity/pgstat_backend.c index a9343b7b59e..f4b2f3b91d8 100644 --- a/src/backend/utils/activity/pgstat_backend.c +++ b/src/backend/utils/activity/pgstat_backend.c @@ -292,6 +292,8 @@ pgstat_tracks_backend_bktype(BackendType bktype) case B_BG_WRITER: case B_CHECKPOINTER: case B_STARTUP: + case B_DATACHECKSUMSWORKER_LAUNCHER: + case B_DATACHECKSUMSWORKER_WORKER: return false; case B_AUTOVAC_WORKER: diff --git a/src/test/checksum/t/003_standby_restarts.pl b/src/test/checksum/t/003_standby_restarts.pl index 6c0fe8f3bf8..6782664f4e6 100644 --- a/src/test/checksum/t/003_standby_restarts.pl +++ b/src/test/checksum/t/003_standby_restarts.pl @@ -20,15 +20,23 @@ my $enable_params = '0, 100, true'; my $node_primary = PostgreSQL::Test::Cluster->new('primary'); $node_primary->init(allows_streaming => 1, no_data_checksums => 1); $node_primary->start; -my $backup_name = 'my_backup'; + +my $slotname = 'physical_slot'; +$node_primary->safe_psql('postgres', + "SELECT pg_create_physical_replication_slot('$slotname')"); # Take backup +my $backup_name = 'my_backup'; $node_primary->backup($backup_name); # Create streaming standby linking to primary my $node_standby_1 = PostgreSQL::Test::Cluster->new('standby_1'); $node_standby_1->init_from_backup($node_primary, $backup_name, has_streaming => 1); +$node_standby_1->append_conf( + 'postgresql.conf', qq[ +primary_slot_name = '$slotname' +]); $node_standby_1->start; # Create some content on the primary to have un-checksummed data in the cluster -- 2.48.1