From d6add90f5146fe0acae78fbcf72d9559b21c9305 Mon Sep 17 00:00:00 2001 From: Daniil Davidov Date: Wed, 4 Mar 2026 13:39:03 +0700 Subject: [PATCH] fixes for 0004 --- src/backend/commands/vacuumparallel.c | 24 +++++++------------ src/backend/postmaster/autovacuum.c | 4 ++-- src/include/postmaster/autovacuum.h | 2 +- src/test/modules/test_autovacuum/meson.build | 2 +- .../t/001_parallel_autovacuum.pl | 4 ++-- .../modules/test_autovacuum/test_autovacuum.c | 8 ++----- 6 files changed, 16 insertions(+), 28 deletions(-) diff --git a/src/backend/commands/vacuumparallel.c b/src/backend/commands/vacuumparallel.c index 828844ffc67..414a465d99f 100644 --- a/src/backend/commands/vacuumparallel.c +++ b/src/backend/commands/vacuumparallel.c @@ -654,6 +654,14 @@ parallel_vacuum_update_shared_delay_params(void) VacuumUpdateCosts(); shared_params_generation_local = params_generation; + + elog(DEBUG2, + "parallel autovacuum worker cost params: cost_limit=%d, cost_delay=%g, cost_page_miss=%d, cost_page_dirty=%d, cost_page_hit=%d", + vacuum_cost_limit, + vacuum_cost_delay, + VacuumCostPageMiss, + VacuumCostPageDirty, + VacuumCostPageHit); } /* @@ -1311,22 +1319,6 @@ parallel_vacuum_main(dsm_segment *seg, shm_toc *toc) /* Process indexes to perform vacuum/cleanup */ parallel_vacuum_process_safe_indexes(&pvs); -#ifdef USE_INJECTION_POINTS - /* - * If we are parallel autovacuum worker, we can consume delay parameters - * during index processing (via vacuum_delay_point call). This logging - * allows tests to ensure this. - */ - if (shared->is_autovacuum) - elog(DEBUG2, - "parallel autovacuum worker cost params: cost_limit=%d, cost_delay=%g, cost_page_miss=%d, cost_page_dirty=%d, cost_page_hit=%d", - vacuum_cost_limit, - vacuum_cost_delay, - VacuumCostPageMiss, - VacuumCostPageDirty, - VacuumCostPageHit); -#endif - /* Report buffer/WAL usage during parallel execution */ buffer_usage = shm_toc_lookup(toc, PARALLEL_VACUUM_KEY_BUFFER_USAGE, false); wal_usage = shm_toc_lookup(toc, PARALLEL_VACUUM_KEY_WAL_USAGE, false); diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index ee8d9ba0428..1c51210883e 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -3487,10 +3487,10 @@ AutoVacuumReleaseAllParallelWorkers(void) /* * Get number of free autovacuum parallel workers. */ -uint32 +int32 AutoVacuumGetFreeParallelWorkers(void) { - uint32 nfree_workers; + int32 nfree_workers; LWLockAcquire(AutovacuumLock, LW_SHARED); nfree_workers = AutoVacuumShmem->av_freeParallelWorkers; diff --git a/src/include/postmaster/autovacuum.h b/src/include/postmaster/autovacuum.h index 52be260e15f..d60010a43b4 100644 --- a/src/include/postmaster/autovacuum.h +++ b/src/include/postmaster/autovacuum.h @@ -66,7 +66,7 @@ extern bool AutoVacuumRequestWork(AutoVacuumWorkItemType type, extern void AutoVacuumReserveParallelWorkers(int *nworkers); extern void AutoVacuumReleaseParallelWorkers(int nworkers); extern void AutoVacuumReleaseAllParallelWorkers(void); -extern uint32 AutoVacuumGetFreeParallelWorkers(void); +extern int32 AutoVacuumGetFreeParallelWorkers(void); /* shared memory stuff */ extern Size AutoVacuumShmemSize(void); diff --git a/src/test/modules/test_autovacuum/meson.build b/src/test/modules/test_autovacuum/meson.build index 75b24814b13..969af8bd52a 100644 --- a/src/test/modules/test_autovacuum/meson.build +++ b/src/test/modules/test_autovacuum/meson.build @@ -1,4 +1,4 @@ -# Copyright (c) 2024-2025, PostgreSQL Global Development Group +# Copyright (c) 2024-2026, PostgreSQL Global Development Group test_autovacuum_sources = files( 'test_autovacuum.c', diff --git a/src/test/modules/test_autovacuum/t/001_parallel_autovacuum.pl b/src/test/modules/test_autovacuum/t/001_parallel_autovacuum.pl index edfbde73aac..7f8b5a7b4d3 100644 --- a/src/test/modules/test_autovacuum/t/001_parallel_autovacuum.pl +++ b/src/test/modules/test_autovacuum/t/001_parallel_autovacuum.pl @@ -40,7 +40,6 @@ $node->append_conf('postgresql.conf', qq{ max_parallel_maintenance_workers = 20 autovacuum_max_parallel_workers = 20 log_min_messages = debug2 - log_autovacuum_min_duration = 0 autovacuum_naptime = '1s' min_parallel_index_scan_size = 0 shared_preload_libraries=test_autovacuum @@ -70,7 +69,8 @@ $node->safe_psql('postgres', qq{ CREATE TABLE test_autovac ( id SERIAL PRIMARY KEY, col_1 INTEGER, col_2 INTEGER, col_3 INTEGER, col_4 INTEGER - ) WITH (autovacuum_parallel_workers = $autovacuum_parallel_workers); + ) WITH (autovacuum_parallel_workers = $autovacuum_parallel_workers, + log_autovacuum_min_duration = 0); INSERT INTO test_autovac SELECT diff --git a/src/test/modules/test_autovacuum/test_autovacuum.c b/src/test/modules/test_autovacuum/test_autovacuum.c index 195a6149a5d..dd5c839e851 100644 --- a/src/test/modules/test_autovacuum/test_autovacuum.c +++ b/src/test/modules/test_autovacuum/test_autovacuum.c @@ -23,13 +23,9 @@ PG_FUNCTION_INFO_V1(get_parallel_autovacuum_free_workers); Datum get_parallel_autovacuum_free_workers(PG_FUNCTION_ARGS) { - uint32 nfree_workers; - -#ifndef USE_INJECTION_POINTS - ereport(ERROR, errmsg("injection points not supported")); -#endif + int32 nfree_workers; nfree_workers = AutoVacuumGetFreeParallelWorkers(); - PG_RETURN_UINT32(nfree_workers); + PG_RETURN_INT32(nfree_workers); } -- 2.43.0