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.94.2) (envelope-from ) id 1v6zZe-00D7Jb-9h for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Oct 2025 22:57:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1v6zZa-0090CM-So for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Oct 2025 22:57:23 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v6zZa-0090CB-Er for pgsql-hackers@lists.postgresql.org; Thu, 09 Oct 2025 22:57:23 +0000 Received: from mail-qt1-x82e.google.com ([2607:f8b0:4864:20::82e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v6zZY-000wIC-1v for pgsql-hackers@postgresql.org; Thu, 09 Oct 2025 22:57:22 +0000 Received: by mail-qt1-x82e.google.com with SMTP id d75a77b69052e-4d9bcc2368eso14828731cf.2 for ; Thu, 09 Oct 2025 15:57:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760050641; x=1760655441; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=OWo0+vHzw0qKaEmOgF2TsoMVMrh5hAyczgRpT/igWq0=; b=KykP+yZEWNRVhokKLUthpNjf7rcjhfU6DZGaTwLysww0ZpKOlhR5WBvh1lQxZrmNlw FfwXeQDfZ9huoxFyjmwXfB80Kjevk2d+imwz7INteNRJwU5rrDI8sRWU+mYQRlh0ORM1 olgNqO0LrbD1zgGIgMaNrmRcKsRAgTEvYkWB9tfoyrqLWeC+lKFmgWY5aSyngIrXtmmg CWQHvYQo9yUN3KsgmjPC6ljHtzYe75loqaQOSeWsajn44d0BVwO1PF62UQR8MrDO6DUZ wkxxlQZkmR5uK5CucTtFMrU65o05OeMa0Gqk26zrxriipCA4g6tcPCMfCUR6c5A465bv Orig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760050641; x=1760655441; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=OWo0+vHzw0qKaEmOgF2TsoMVMrh5hAyczgRpT/igWq0=; b=klMDmjBvmYdtsagJTO24q+MRKsZMEGHJ2cwMpDPBVIkZm3hGW6DUDErCHQk2r3THRM FJtr7/o5fOuTxL6RY1PrmLHwPgPlAFkX/kp0Db9VIme+7UvfyWR8PrQsL/udqrGlNC2h Kk4gSW05y6WuKcdwoLfgV8TNBC1H5t4GFrq6RNi80eK4wXsYCxqXXm3c+LbAjREqivhT Jmb3x4zxyv99sGKNSUJCpeKItCC4zVYzus19Xw4YfMP5zK7++Quhs+un7yjNeEdtKKuF F3GsKzSL1zv1w2ygAjlfVIlGmZ34IWZ0ntGK4Vtkt2k+yDEsEdr0WqeNzyO3SMnoiFcI it+Q== X-Forwarded-Encrypted: i=1; AJvYcCUX8mBaZ5vNKIxHYuXk/9mMTFDBJA/TqurYCboqK/xxzkVBM5r9V7T9YRWJjFoCGZu1UGmDgsrITRNzo8tI@postgresql.org X-Gm-Message-State: AOJu0Yz5UE9ajs7rCYUij9YetYDvIwofaHDZhanBcn2EGMunp5RcnbKe 4m2ITbX8G2NUyS8tk3vGjuH+Agh8Nay2uTVDKYN53fEbXadMqzbuChB1sNHTSroAjjd+hRG9fAx IW8gUZnZXd67QSESP6OY+uQLaCKNY0cc= X-Gm-Gg: ASbGncsYjxt5JCa66ZQUHx8KOaUmk3QI1IrY1zfBwXaEJN4YZRczsJU9s/3x/75beSr mbTHfijdDlwn9XjN++aYT2uGKzijSQDZQc0dAVCfuam7rYg0XZ5Fwyild5nDPTocAHmMJRnHLqt 2YvBD/b5tKpiQfM/F6LApu4uSRwZOWu0nvZW64bUVwrnPI1DLnO+Cov7XKoJ4Vhk+DEy2NGlIM1 KeiMkmEKZzt9m+0zWf0/mdoNBfMLhs= X-Google-Smtp-Source: AGHT+IHhKDEMtLV1ftpWIEur+lI7mTTw+FOP9aw4VJy4xGdsa0+hbOHnZA0bE4DWqeNvjIr2FmSY/o7UctljSbgzqTE= X-Received: by 2002:a05:622a:4887:b0:4d7:dc01:e007 with SMTP id d75a77b69052e-4e6eace1e99mr138221781cf.24.1760050640564; Thu, 09 Oct 2025 15:57:20 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Peter Smith Date: Fri, 10 Oct 2025 09:56:53 +1100 X-Gm-Features: AS18NWC-EDtfE-oMmMCQCxVDedq8xw1sMwXFpr-M3tbfur8YIDcLs_c5NOwKkno Message-ID: Subject: Re: [PROPOSAL] Termination of Background Workers for ALTER/DROP DATABASE To: "Aya Iwata (Fujitsu)" Cc: "Hayato Kuroda (Fujitsu)" , Michael Paquier , pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000380f770640c1b914" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000380f770640c1b914 Content-Type: text/plain; charset="UTF-8" Hi Iwata-San, Some v5 comments. ====== doc/src/sgml/bgworker.sgml 1. + + BGWORKER_EXIT_AT_DATABASE_CHANGE + + + BGWORKER_EXIT_AT_DATABASE_CHANGE + Requests termination of the background worker when the database it is + connected to undergoes significant changes. The postmaster will send a + termination signal to the background worker when any of the following + commands are executed: DROP DATABASE, + ALTER DATABASE RENAME TO, or + ALTER DATABASE SET TABLESPACE. + When CREATE DATABASE TEMPLATE command is executed, + background workers which connected to target template database are terminated. + If BGWORKER_SHMEM_ACCESS and + BGWORKER_BACKEND_DATABASE_CONNECTION are not using, + nothing happens. + + + + 1a. The newly added part in v5 needs some brush-up. SUGGESTION: BGWORKER_EXIT_AT_DATABASE_CHANGE Requests termination of the background worker when its connected database undergoes significant changes. The postmaster sends a termination signal when any of these commands affect the worker's database: DROP DATABASE, ALTER DATABASE RENAME TO, ALTER DATABASE SET TABLESPACE, or CREATE DATABASE (when the worker is connected to the template database). This flag requires both BGWORKER_SHMEM_ACCESS and BGWORKER_BACKEND_DATABASE_CONNECTION. ~ 1b. Elsewhere on this docs page, there are detailed discussions about process termination (e.g. search "terminate"), as well as referring to the function TerminateBackgroundWorker(). You only documented the new flag, but do we also need to make changes in the rest of this page to mention the new way for process termination? ====== src/backend/postmaster/bgworker.c TerminateBackgroundWorkersByOid: 2. +/* + * Cancel background workers. + */ +void +TerminateBackgroundWorkersByOid(Oid databaseId) Let's also remove that word "Cancel" from the function comment and add some more details. SUGGESTION: Terminate all background workers connected to the given database, if they had requested it. ~~~ 3. + /* + * Iterate through slots, looking for workers + * who connects to the given database. + */ "workers who connects" (??) SUGGESTION Iterate through slots, looking for workers connected to the given database. ====== src/backend/storage/ipc/procarray.c 4. + /* + * Terminate all background workers for this database, if + * they had requested it (BGWORKER_EXIT_AT_DATABASE_DROP) + */ + TerminateBackgroundWorkersByOid(databaseId); + The comment is out-of-date now, because the flag name was changed to BGWORKER_EXIT_AT_DATABASE_CHANGE. ====== src/include/postmaster/bgworker.h 5. +/* Cancel background workers. */ +extern void TerminateBackgroundWorkersByOid(Oid databaseId); There is already a commented extern for the TerminateBackgroundWorker() function. IMO, just put this extern alongside that one. You don't need a new comment. ~~~ 6. The header comment in this file refers to the TerminateBackgroundWorker() function. Probably, you need to check that carefully to see if this new function should also be mentioned there. ====== FYI, I attached a v5 top-up diff for (some of) my above review comments in case it helps. ====== Kind Regards, Peter Smith. Fujitsu Australia --000000000000380f770640c1b914 Content-Type: application/octet-stream; name="PS_v5_topup.diff" Content-Disposition: attachment; filename="PS_v5_topup.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgk0inib0 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sIGIvZG9jL3NyYy9zZ21sL2Jn d29ya2VyLnNnbWwKaW5kZXggMDFjZWIzOC4uZDZlMzdiNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2Jnd29ya2VyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwKQEAgLTEx MywxNyArMTEzLDE2IEBAIHR5cGVkZWYgc3RydWN0IEJhY2tncm91bmRXb3JrZXIKICAgICAgPGxp c3RpdGVtPgogICAgICAgPHBhcmE+CiAgICAgICAgPGluZGV4dGVybT48cHJpbWFyeT5CR1dPUktF Ul9FWElUX0FUX0RBVEFCQVNFX0NIQU5HRTwvcHJpbWFyeT48L2luZGV4dGVybT4KLSAgICAgICBS ZXF1ZXN0cyB0ZXJtaW5hdGlvbiBvZiB0aGUgYmFja2dyb3VuZCB3b3JrZXIgd2hlbiB0aGUgZGF0 YWJhc2UgaXQgaXMKLSAgICAgICBjb25uZWN0ZWQgdG8gdW5kZXJnb2VzIHNpZ25pZmljYW50IGNo YW5nZXMuIFRoZSBwb3N0bWFzdGVyIHdpbGwgc2VuZCBhCi0gICAgICAgdGVybWluYXRpb24gc2ln bmFsIHRvIHRoZSBiYWNrZ3JvdW5kIHdvcmtlciB3aGVuIGFueSBvZiB0aGUgZm9sbG93aW5nCi0g ICAgICAgY29tbWFuZHMgYXJlIGV4ZWN1dGVkOiA8Y29tbWFuZD5EUk9QIERBVEFCQVNFPC9jb21t YW5kPiwKLSAgICAgICA8Y29tbWFuZD5BTFRFUiBEQVRBQkFTRSBSRU5BTUUgVE88L2NvbW1hbmQ+ LCBvcgotICAgICAgIDxjb21tYW5kPkFMVEVSIERBVEFCQVNFIFNFVCBUQUJMRVNQQUNFPC9jb21t YW5kPi4KLSAgICAgICBXaGVuIDxjb21tYW5kPkNSRUFURSBEQVRBQkFTRSBURU1QTEFURTwvY29t bWFuZD4gY29tbWFuZCBpcyBleGVjdXRlZCwKLSAgICAgICBiYWNrZ3JvdW5kIHdvcmtlcnMgd2hp Y2ggY29ubmVjdGVkIHRvIHRhcmdldCB0ZW1wbGF0ZSBkYXRhYmFzZSBhcmUgdGVybWluYXRlZC4K LSAgICAgICBJZiA8bGl0ZXJhbD5CR1dPUktFUl9TSE1FTV9BQ0NFU1M8L2xpdGVyYWw+IGFuZAot ICAgICAgIDxsaXRlcmFsPkJHV09SS0VSX0JBQ0tFTkRfREFUQUJBU0VfQ09OTkVDVElPTjwvbGl0 ZXJhbD4gYXJlIG5vdCB1c2luZywKLSAgICAgICBub3RoaW5nIGhhcHBlbnMuCisgICAgICAgUmVx dWVzdHMgdGVybWluYXRpb24gb2YgdGhlIGJhY2tncm91bmQgd29ya2VyIHdoZW4gaXRzIGNvbm5l Y3RlZCBkYXRhYmFzZQorICAgICAgIHVuZGVyZ29lcyBzaWduaWZpY2FudCBjaGFuZ2VzLiBUaGUg cG9zdG1hc3RlciBzZW5kcyBhIHRlcm1pbmF0aW9uIHNpZ25hbAorICAgICAgIHdoZW4gYW55IG9m IHRoZXNlIGNvbW1hbmRzIGFmZmVjdCB0aGUgd29ya2VyJ3MgZGF0YWJhc2U6CisgICAgICAgPGNv bW1hbmQ+RFJPUCBEQVRBQkFTRTwvY29tbWFuZD4sCisgICAgICAgPGNvbW1hbmQ+QUxURVIgREFU QUJBU0UgUkVOQU1FIFRPPC9jb21tYW5kPiwKKyAgICAgICA8Y29tbWFuZD5BTFRFUiBEQVRBQkFT RSBTRVQgVEFCTEVTUEFDRTwvY29tbWFuZD4sIG9yCisgICAgICAgPGNvbW1hbmQ+Q1JFQVRFIERB VEFCQVNFPC9jb21tYW5kPiAod2hlbiB0aGUgd29ya2VyIGlzIGNvbm5lY3RlZCB0byB0aGUKKyAg ICAgICB0ZW1wbGF0ZSBkYXRhYmFzZSkuCisgICAgICAgVGhpcyBmbGFnIHJlcXVpcmVzIGJvdGgg PGxpdGVyYWw+QkdXT1JLRVJfU0hNRU1fQUNDRVNTPC9saXRlcmFsPiBhbmQKKyAgICAgICA8bGl0 ZXJhbD5CR1dPUktFUl9CQUNLRU5EX0RBVEFCQVNFX0NPTk5FQ1RJT048L2xpdGVyYWw+LgogICAg ICAgPC9wYXJhPgogICAgICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4IDdhYjQ4YzIuLmUwY2ZkYmYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2Jnd29ya2VyLmMKQEAgLTE0MDAsNyArMTQwMCw4IEBAIEdldEJhY2tncm91bmRXb3JrZXJU eXBlQnlQaWQocGlkX3QgcGlkKQogCiAKIC8qCi0gKiBDYW5jZWwgYmFja2dyb3VuZCB3b3JrZXJz LgorICogVGVybWluYXRlIGFsbCBiYWNrZ3JvdW5kIHdvcmtlcnMgY29ubmVjdGVkIHRvIHRoZSBn aXZlbiBkYXRhYmFzZSwgaWYgdGhleQorICogaGFkIHJlcXVlc3RlZCBpdC4KICAqLwogdm9pZAog VGVybWluYXRlQmFja2dyb3VuZFdvcmtlcnNCeU9pZChPaWQgZGF0YWJhc2VJZCkKQEAgLTE0MTAs OCArMTQxMSw4IEBAIFRlcm1pbmF0ZUJhY2tncm91bmRXb3JrZXJzQnlPaWQoT2lkIGRhdGFiYXNl SWQpCiAJTFdMb2NrQWNxdWlyZShCYWNrZ3JvdW5kV29ya2VyTG9jaywgTFdfRVhDTFVTSVZFKTsK IAogCS8qCi0JICogSXRlcmF0ZSB0aHJvdWdoIHNsb3RzLCBsb29raW5nIGZvciB3b3JrZXJzCi0J ICogd2hvIGNvbm5lY3RzIHRvIHRoZSBnaXZlbiBkYXRhYmFzZS4KKwkgKiBJdGVyYXRlIHRocm91 Z2ggc2xvdHMsIGxvb2tpbmcgZm9yIHdvcmtlcnMgY29ubmVjdGVkIHRvIHRoZSBnaXZlbgorCSAq IGRhdGFiYXNlLgogCSAqLwogCWZvciAoaW50IHNsb3RubyA9IDA7IHNsb3RubyA8IEJhY2tncm91 bmRXb3JrZXJEYXRhLT50b3RhbF9zbG90czsgKytzbG90bm8pCiAJewpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jYXJyYXkuYwppbmRleCBmNjEyZTc3Li4xZWQ2NDFkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jYXJyYXkuYwpAQCAtMzc3MSw3ICszNzcxLDcgQEAgQ291bnRPdGhlckRCQmFja2VuZHMo T2lkIGRhdGFiYXNlSWQsIGludCAqbmJhY2tlbmRzLCBpbnQgKm5wcmVwYXJlZCkKIAogCQkvKgog CQkgKiBUZXJtaW5hdGUgYWxsIGJhY2tncm91bmQgd29ya2VycyBmb3IgdGhpcyBkYXRhYmFzZSwg aWYKLQkJICogdGhleSBoYWQgcmVxdWVzdGVkIGl0IChCR1dPUktFUl9FWElUX0FUX0RBVEFCQVNF X0RST1ApCisJCSAqIHRoZXkgaGFkIHJlcXVlc3RlZCBpdCAoQkdXT1JLRVJfRVhJVF9BVF9EQVRB QkFTRV9DSEFOR0UpCiAJCSAqLwogCQlUZXJtaW5hdGVCYWNrZ3JvdW5kV29ya2Vyc0J5T2lkKGRh dGFiYXNlSWQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2Vy LmggYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyLmgKaW5kZXggNTc3NDFkNy4uM2Ey ZmMzNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlci5oCisrKyBi L3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuaApAQCAtMTM0LDYgKzEzNCw3IEBAIGV4 dGVybiBjb25zdCBjaGFyICpHZXRCYWNrZ3JvdW5kV29ya2VyVHlwZUJ5UGlkKHBpZF90IHBpZCk7 CiAKIC8qIFRlcm1pbmF0ZSBhIGJnd29ya2VyICovCiBleHRlcm4gdm9pZCBUZXJtaW5hdGVCYWNr Z3JvdW5kV29ya2VyKEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSk7CitleHRlcm4gdm9p ZCBUZXJtaW5hdGVCYWNrZ3JvdW5kV29ya2Vyc0J5T2lkKE9pZCBkYXRhYmFzZUlkKTsKIAogLyog VGhpcyBpcyB2YWxpZCBpbiBhIHJ1bm5pbmcgd29ya2VyICovCiBleHRlcm4gUEdETExJTVBPUlQg QmFja2dyb3VuZFdvcmtlciAqTXlCZ3dvcmtlckVudHJ5OwpAQCAtMTY3LDcgKzE2OCw0IEBAIGV4 dGVybiB2b2lkIEJhY2tncm91bmRXb3JrZXJJbml0aWFsaXplQ29ubmVjdGlvbkJ5T2lkKE9pZCBk Ym9pZCwgT2lkIHVzZXJvaWQsIHVpCiBleHRlcm4gdm9pZCBCYWNrZ3JvdW5kV29ya2VyQmxvY2tT aWduYWxzKHZvaWQpOwogZXh0ZXJuIHZvaWQgQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxz KHZvaWQpOwogCi0vKiBDYW5jZWwgYmFja2dyb3VuZCB3b3JrZXJzLiAqLwotZXh0ZXJuIHZvaWQg VGVybWluYXRlQmFja2dyb3VuZFdvcmtlcnNCeU9pZChPaWQgZGF0YWJhc2VJZCk7Ci0KICNlbmRp ZgkJCQkJCQkvKiBCR1dPUktFUl9IICovCg== --000000000000380f770640c1b914--