Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w8R20-000Wod-1K for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Apr 2026 23:00:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w8R1z-008dyI-0V for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Apr 2026 23:00:55 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w8R1y-008dyA-2f for pgsql-hackers@lists.postgresql.org; Thu, 02 Apr 2026 23:00:55 +0000 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w8R1w-00000000HLX-2ViE for pgsql-hackers@lists.postgresql.org; Thu, 02 Apr 2026 23:00:54 +0000 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2ab232cc803so6141805ad.3 for ; Thu, 02 Apr 2026 16:00:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775170850; cv=none; d=google.com; s=arc-20240605; b=S2DuHj+KcJR3zfabJYAdro9gF/GhVDA7wIC4S6ltwZtXPZ+Y36aifHpXNHUR5qkQqp mZG0qBPkEd8mwLPuzT0puVW9VJiL+TZ80N3RAI576SLbLJc9+C/Ae9kxOHll42MYR0JH fr0bbFALknVT9jAbgLzVbOdvjU5YQTJCou1Bv/zcnx0IDjlGusPNIcGOWmXGHzOkvQpz jbab+561xxx7U8fR8gS/ojdQrfkml1O6DHO1fDYL3WYzewGrFrE8BZgiCWUPtMY2XjlF /Fp6yVqdhJjxJK1gdQKsE9pjmYQarONkZ+C8AeZZF/LW10QiuGRkVcwoYfI2PW9T2m2L bk6g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=mB/uNWtEmgOsAyuFOF79eWhyiRuYbtAOz0OJci6aCF8=; fh=Vvq/UN1VSlw3rqhhEdJp/hk1VsBZv7F/UsjbHUD6CMM=; b=f5M8DF1QXObg0vM0kJ0VobHg+8INEyw59ZhrgYZDZjWubu3PLQIhjBAOVCArR4S5W1 CiFQuchgiWvYZgJ+JNRBjQUPobKkIqiNh05KPt3DqZcAAtUolULsJgE861be5CHx00h/ PLf72eOtY5/DDr2v2wRPPkFyJhXVtdxdAfTJtoPNXU45mqbfI7BSAT7vBYo504uYpKP6 UwOcWCb+x4SFnu6tJE2+KndcoHItfuuyU4VVAovSKqmRUO6QWO9NHvuWRrduYtaP4PZu RG45T9LgNkjEQ4CdCDEQhYTqV5JBNpzgGvIyn3Vrr/rxVnTgWod2RqkdCIBnU2OxrW4r N6UQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775170850; x=1775775650; darn=lists.postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=mB/uNWtEmgOsAyuFOF79eWhyiRuYbtAOz0OJci6aCF8=; b=I5WoBhaXao/MrGKcgl2f2+Ma6twLJ0JxwrE+UenigLAWR6wxW8A2G7jSK1TIDgqqJC CI2+Uk5iQETsX+dQjv0xQOv/HAAqlmXDtEho1bq5vWTcLUAhaw3GIjLyM8xNzKDYUY1u 11f8Q+6JaqpOPP5SlN98ji6+4Ux0rngcujfLiCvQ0y9gmrYDlA6Pnl/gYHR4byqruUA3 01JLXuhJqgUv0e2JUjePepsygE9bcRN2JUNHWuwSXXPVsufxMTzMPe1+TjLuGmIB3MK6 5+B/k5YG3nvK+UzPfXSOvtBpU4lRks7v5+yrgfuXbcvLXPiSzMTog+bvXF5d+GHDpFyH gCzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775170850; x=1775775650; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=mB/uNWtEmgOsAyuFOF79eWhyiRuYbtAOz0OJci6aCF8=; b=WqMJJ4fsh40iQYHZ41GrFx2isqeIuak/Yu51zmXavQRHzEvRDt1l9udQiiD5abclEM rOtjYTtvLAQKmgHenQ5gU5dDN19n1YNdKeP5RTg6MSQhGrcHOK/LMNaQ5lMWtZNT4TEK XY4+MLedi8ia6e8Xv+E5Nx4kv1Y5znMUpdhT1PHofVIAhIxyi/MA3lHYT+yGwwPNU6+u 0fDRgLeNwmQoXc6UP1MYddqHm+vgZFe23/FHnxpz6hxGOuIm2u/ac8dNm/hl1j3khKbz Sa6PuePZMjf9IDS5kKpJvRefeKccNTPejoU6RRsVMapm+PFrjVc5CYzqeAVPEjIthFkd Qilw== X-Forwarded-Encrypted: i=1; AJvYcCU+bQW5/VIXQVCo6G2Gxz0WTcF7rXzQwYaa3UL1nxtb4AaY4aDXy1Nxm1kUdzvqhoKeYfjJUh072v2AMKz0@lists.postgresql.org X-Gm-Message-State: AOJu0YxwKfeQOU9ff2t36XB4TEa7H5I4EVF0/nG120Dkmh/g7WYjXKAh KuvCVQh4qernFbhNioFflCNafmytuiBWgquCOktuljIBw1qv3PAaKXFTVauIfYCkzZ0nXl7gThH 6yinT+BBeRtHLeqUUV0CjgYumdOYNA0g= X-Gm-Gg: AeBDieuo61N5PafKZijQKtXXaYLTHCRDpG0h0f9lMs+AEQmvkydxwYWdZ+jkS1ov+qw 7YvuqcKt2v1pNeQY4KXTLDPhK6Zln+qM8B+z9q2HR/3RAhI9iPJBq0XruEwARrL06pIakSVcvRS rBFAFeijcONXMZFpd8835qS7VwvmmDSpcMml+Dj8onu8mIxul2w6yX7s/8fMM7bkkgIzpB11DqT 7CIf4+FdTrkqlN7fAsnryzjVPyjtaCy022cvTOkzi3U8SMtQ1Sga03XmtmvDr+Td9jbd0zuIelo GbMdgQMz X-Received: by 2002:a17:902:da83:b0:2b2:5314:e96a with SMTP id d9443c01a7336-2b2818de2c2mr9359165ad.34.1775170850229; Thu, 02 Apr 2026 16:00:50 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Masahiko Sawada Date: Thu, 2 Apr 2026 16:00:11 -0700 X-Gm-Features: AQROBzAbh6b1tjTK1b-FGFjhVU6WMieelNbdV9Hx6aslvhmf8rjb3iLTgRSJP2w Message-ID: Subject: Re: POC: Parallel processing of indexes in autovacuum To: Daniil Davydov <3danissimo@gmail.com> Cc: Alexander Korotkov , SATYANARAYANA NARLAPURAM , Bharath Rupireddy , Sami Imseih , Matheus Alcantara , Maxim Orlov , Postgres hackers Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Thu, Apr 2, 2026 at 8:10=E2=80=AFAM Daniil Davydov <3danissimo@gmail.com= > wrote: > > Hi, > > On Thu, Apr 2, 2026 at 6:16=E2=80=AFAM Masahiko Sawada wrote: > > > > Thank you for updating the patch! I found a bug in the following code: > > > > @@ -457,6 +534,9 @@ parallel_vacuum_end(ParallelVacuumState *pvs, > > IndexBulkDeleteResult **istats) > > DestroyParallelContext(pvs->pcxt); > > ExitParallelMode(); > > > > + if (AmAutoVacuumWorkerProcess()) > > + pv_shared_cost_params =3D NULL; > > + > > > > If an autovacuum worker raises an error during parallel vacuum, it > > doesn't pv_shared_cost_params. Then, if it doesn't use parallel vacuum > > on the next table to vacuum, it would end up with SEGV as it attempts > > to propagate the vacuum delay parameters. > > Ouch. Indeed, I did not foresee this. > Thank you for noticing it! > > I think we should add some cleanup for autovacuum near the ParallelContex= t > cleanup, since they are interconnected. I also want to return our tests t= hat > are triggering ERROR/PANIC in the leader worker in order to check whether= all > resources are released. I hope I will be able to get to that by tomorrow > evening. I think that the beginning of vacuum loop (in PG_TRY() block in vacuum()) seems better place as we're resetting vacuum delay parameters: in_vacuum =3D true; VacuumFailsafeActive =3D false; VacuumUpdateCosts(); VacuumCostBalance =3D 0; VacuumCostBalanceLocal =3D 0; VacuumSharedCostBalance =3D NULL; VacuumActiveNWorkers =3D NULL; Regards, --=20 Masahiko Sawada Amazon Web Services: https://aws.amazon.com