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 1so54o-0089Qy-I2 for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Sep 2024 17:54:55 +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 1so54n-00HGT9-6X for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Sep 2024 17:54:53 +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 1so54m-00HGRf-Mb for pgsql-hackers@lists.postgresql.org; Tue, 10 Sep 2024 17:54:52 +0000 Received: from mail-lj1-x233.google.com ([2a00:1450:4864:20::233]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1so54j-000VDU-Kc for pgsql-hackers@lists.postgresql.org; Tue, 10 Sep 2024 17:54:51 +0000 Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-2f75428b9f8so6396371fa.3 for ; Tue, 10 Sep 2024 10:54:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725990888; x=1726595688; darn=lists.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=rvgQdr16hKCJxmc6AP7/vM8P3JL9G/W14EuNf4XEIXo=; b=LF0Cn6PuWtD7/LE6DSI9o6oIWXNWj56/sdiCEzqrteOCU8PjFTo+oAVrOu35O3xMlg qk9jkiSpEubDT541uXArjCWMOX73o6rdAuy41+AD1VSY6fcC35RLWVxaUGQ+bIoT3fxR c0ba1yRVJCrTyJ94/vV08SgMA3pu7ZOkxeElHFKaAlorn/IZdZhtGy2Ita/EW+S13H9k EXU5fCbUNHfcxAqTsezou/mpYS8yilj1xjtO3V8zxZm3SmBa4MUsYFDmv7PtqhyCTg1L 6xezpaYXaCyZOJGzG9kbp4qgXaddc2PY8/V4Fu6eG+kJKBeHcqnI0wXlpwzE6/EHVe8g s4dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725990888; x=1726595688; 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=rvgQdr16hKCJxmc6AP7/vM8P3JL9G/W14EuNf4XEIXo=; b=EqZYFGFwJPUyjLm/zsSHprSj6CSIwsAQ3IClLL+QinR5DyusvpwhYAkfX1dMAH/S8D EYrKMgmHZtZS9eGNgFmJ5ddvGJZVlPCR3SJODj+C+ItNSW7Ad1Ot/l1xa5YJvwci7/Qk TQtpV4LPyFG95zSPZ1WYb9rRNJPyWfmrey0e45vHVEDzFbJGCbhJlpuQZuh1RhGttITI PBRTY8w4F0+zo9Hh5aaKECyoaQA7CiYjt8HGDQ9PpLEvQKRQWsXL1Rn5vAchlihyjRqi 66D+Fvm6FTFLm9L5j52kYiI8j7LlohybGYin9djaParnxzR1Y08520qH4FXwYlBQNVfP RCYQ== X-Gm-Message-State: AOJu0YzoW0d3/MgKK4MkpiSVkNOhkiBdoSWyQHog4cZVvxmpbi5fcd+n DkfHCmhpvlwxv9NDfUI7Ua53LuFc7AZ+7bmSKq3rfPLs+KHcswxBL2lKfYEEMC8igMnXLZpcjh+ 0icHrmt/sRq5k8JUDeIXVDWnXuEMeag== X-Google-Smtp-Source: AGHT+IH10k9SKNFkJIQiw5QxzncpsTASlEeqOhlG0VwSKpJeIoy5n0WIp6x2KRiPU35x1r2FXj3d+r5/HxkybVHL2es= X-Received: by 2002:a05:651c:1a0b:b0:2f7:6653:8053 with SMTP id 38308e7fff4ca-2f76653813amr77195291fa.18.1725990887570; Tue, 10 Sep 2024 10:54:47 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Bharath Rupireddy Date: Tue, 10 Sep 2024 23:24:35 +0530 Message-ID: Subject: Re: Disallow altering invalidated replication slots To: Peter Smith Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000bd88e80621c791f2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000bd88e80621c791f2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Thanks for reviewing. On Tue, Sep 10, 2024 at 8:40=E2=80=AFAM Peter Smith = wrote: > > Commit message > > 1. > ALTER_REPLICATION_SLOT on invalidated replication slots is unnecessary > as there is no way... > > suggestion: > ALTER_REPLICATION_SLOT for invalid replication slots should not be > allowed because there is no way... Modified. > =3D=3D=3D=3D=3D=3D > 2. Missing docs update > > Should this docs page [1] be updated to say ALTER_REPLICATION_SLOT is > not allowed for invalid slots? Haven't noticed for other ERROR cases in the docs, e.g. slots being synced, temporary slots. Not sure if it's worth adding every ERROR case to the docs. > =3D=3D=3D=3D=3D=3D > src/backend/replication/slot.c > > 3. > + if (MyReplicationSlot->data.invalidated !=3D RS_INVAL_NONE) > + ereport(ERROR, > + errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), > + errmsg("cannot alter replication slot \"%s\"", name), > + errdetail("This replication slot was invalidated due to \"%s\".", > + SlotInvalidationCauses[MyReplicationSlot->data.invalidated])); > + > > I thought including the reason "invalid" (e.g. "cannot alter invalid > replication slot \"%s\"") in the message might be better, but OTOH I > see the patch message is the same as an existing one. Maybe see what > others think. Changed. > =3D=3D=3D=3D=3D=3D > src/test/recovery/t/035_standby_logical_decoding.pl > > 3. > There is already a comment about this test: > ################################################## > # Recovery conflict: Invalidate conflicting slots, including in-use slots > # Scenario 1: hot_standby_feedback off and vacuum FULL > # > # In passing, ensure that replication slot stats are not removed when the > # active slot is invalidated. > ################################################## > > IMO we should update that "In passing..." sentence to something like: > > In passing, ensure that replication slot stats are not removed when > the active slot is invalidated, and check that an error occurs when > attempting to alter the invalid slot. Added. But, keeping it closer to the test case doesn't hurt. Please find the attached v2 patch also having Shveta's review comments addressed. --=20 Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --000000000000bd88e80621c791f2 Content-Type: application/octet-stream; name="v2-0001-Disallow-altering-invalidated-replication-slots.patch" Content-Disposition: attachment; filename="v2-0001-Disallow-altering-invalidated-replication-slots.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0wqeds40 RnJvbSA4MGY5ZWU3OGFkNzI2NzVmYjFlMmUxZDI4ZjFjZmU3NWExZDFlMThiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMTAgU2VwIDIwMjQgMTc6NTE6NTYgKzAw MDAKU3ViamVjdDogW1BBVENIIHYyXSBEaXNhbGxvdyBhbHRlcmluZyBpbnZhbGlkYXRlZCByZXBs aWNhdGlvbiBzbG90cwoKQUxURVJfUkVQTElDQVRJT05fU0xPVCBmb3IgaW52YWxpZCByZXBsaWNh dGlvbiBzbG90cyBzaG91bGQgbm90IGJlCmFsbG93ZWQgYmVjYXVzZSB0aGVyZSBpcyBubyB3YXkg dG8gZ2V0IGJhY2sgdGhlIGludmFsaWRhdGVkCihsb2dpY2FsKSBzbG90IHRvIHdvcmtpbmcuIFRo aXMgY29tbWl0IGFkZHMgYW4gZXJyb3IuCgpBdXRob3I6IEJoYXJhdGggUnVwaXJlZGR5ClJldmll d2VkLWJ5OiBQZXRlciBTbWl0aCwgc2h2ZXRhIG1hbGlrCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3 LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FBNGVLMSUyQnN6Y29zcTBuUzEwOW1NU3hQV3lO VDFRJTNEVU5ZQ0pnWEtZdUNjZWFQUyUyQmhBJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgICAgICAgfCAgNyArKysrKysr CiBzcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgfCAx MiArKysrKysrKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCAwYTAzNzc2MTU2Li42ODI4MTAwY2Yx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC04MjAsNiArODIwLDEzIEBAIFJlcGxpY2F0aW9u U2xvdEFsdGVyKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGJvb2wgKmZhaWxvdmVyLAogCQkJCWVy cm1zZygiY2Fubm90IHVzZSAlcyB3aXRoIGEgcGh5c2ljYWwgcmVwbGljYXRpb24gc2xvdCIsCiAJ CQkJCSAgICJBTFRFUl9SRVBMSUNBVElPTl9TTE9UIikpOwogCisJaWYgKE15UmVwbGljYXRpb25T bG90LT5kYXRhLmludmFsaWRhdGVkICE9IFJTX0lOVkFMX05PTkUpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwK KwkJCQllcnJtc2coImNhbm5vdCBhbHRlciBpbnZhbGlkIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wi IiwgbmFtZSksCisJCQkJZXJyZGV0YWlsKCJUaGlzIHJlcGxpY2F0aW9uIHNsb3QgaGFzIGJlZW4g aW52YWxpZGF0ZWQgZHVlIHRvIFwiJXNcIi4iLAorCQkJCQkJICBTbG90SW52YWxpZGF0aW9uQ2F1 c2VzW015UmVwbGljYXRpb25TbG90LT5kYXRhLmludmFsaWRhdGVkXSkpOworCiAJaWYgKFJlY292 ZXJ5SW5Qcm9ncmVzcygpKQogCXsKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5 L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3Qv MDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbAppbmRleCA0MTg1YjgwM2IyLi5kNjU4ZmRm NDE3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxf ZGVjb2RpbmcucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dpY2Fs X2RlY29kaW5nLnBsCkBAIC00OTUsNyArNDk1LDggQEAgJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsK ICMgU2NlbmFyaW8gMTogaG90X3N0YW5kYnlfZmVlZGJhY2sgb2ZmIGFuZCB2YWN1dW0gRlVMTAog IwogIyBJbiBwYXNzaW5nLCBlbnN1cmUgdGhhdCByZXBsaWNhdGlvbiBzbG90IHN0YXRzIGFyZSBu b3QgcmVtb3ZlZCB3aGVuIHRoZQotIyBhY3RpdmUgc2xvdCBpcyBpbnZhbGlkYXRlZC4KKyMgYWN0 aXZlIHNsb3QgaXMgaW52YWxpZGF0ZWQsIGFuZCBjaGVjayB0aGF0IGFuIGVycm9yIG9jY3VycyB3 aGVuCisjIGF0dGVtcHRpbmcgdG8gYWx0ZXIgdGhlIGludmFsaWQgc2xvdC4KICMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICMgT25lIHdheSB0byBw cm9kdWNlIHJlY292ZXJ5IGNvbmZsaWN0IGlzIHRvIGNyZWF0ZS9kcm9wIGEgcmVsYXRpb24gYW5k CkBAIC01MjYsNiArNTI3LDE1IEBAIGNoZWNrX2Zvcl9pbnZhbGlkYXRpb24oJ3ZhY3V1bV9mdWxs XycsIDEsICd3aXRoIHZhY3V1bSBGVUxMIG9uIHBnX2NsYXNzJyk7CiAjIFZlcmlmeSByZWFzb24g Zm9yIGNvbmZsaWN0IGlzICdyb3dzX3JlbW92ZWQnIGluIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCiBj aGVja19zbG90c19jb25mbGljdF9yZWFzb24oJ3ZhY3V1bV9mdWxsXycsICdyb3dzX3JlbW92ZWQn KTsKIAorIyBBdHRlbXB0aW5nIHRvIGFsdGVyIGFuIGludmFsaWRhdGVkIHNsb3Qgc2hvdWxkIHJl c3VsdCBpbiBhbiBlcnJvcgorKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGVfc3Rh bmRieS0+cHNxbCgKKyAgICAncG9zdGdyZXMnLAorICAgIHFxW0FMVEVSX1JFUExJQ0FUSU9OX1NM T1QgdmFjdXVtX2Z1bGxfaW5hY3RpdmVzbG90IChmYWlsb3Zlcik7XSwKKyAgICByZXBsaWNhdGlv biA9PiAnZGF0YWJhc2UnKTsKK29rKCRzdGRlcnIgPX4gL0VSUk9SOiAgY2Fubm90IGFsdGVyIGlu dmFsaWQgcmVwbGljYXRpb24gc2xvdCAidmFjdXVtX2Z1bGxfaW5hY3RpdmVzbG90Ii8gJiYKKyAg ICRzdGRlcnIgPX4gL0RFVEFJTDogIFRoaXMgcmVwbGljYXRpb24gc2xvdCBoYXMgYmVlbiBpbnZh bGlkYXRlZCBkdWUgdG8gInJvd3NfcmVtb3ZlZCIuLywKKyAgICAiaW52YWxpZGF0ZWQgc2xvdCBj YW5ub3QgYmUgYWx0ZXJlZCIpOworCiAjIEVuc3VyZSB0aGF0IHJlcGxpY2F0aW9uIHNsb3Qgc3Rh dHMgYXJlIG5vdCByZW1vdmVkIGFmdGVyIGludmFsaWRhdGlvbi4KIGlzKCAkbm9kZV9zdGFuZGJ5 LT5zYWZlX3BzcWwoCiAJCSd0ZXN0ZGInLAotLSAKMi40My4wCgo= --000000000000bd88e80621c791f2--