Re: Subscription statistics are not dropped at DROP SUBSCRIPTION in some cases
Masahiko Sawada <sawada.mshk@gmail.com>
From: Masahiko Sawada <sawada.mshk@gmail.com>
To: Melih Mutlu <m.melihmutlu@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2023-05-16T14:30:05Z
Lists: pgsql-hackers
Attachments
- v2-0001-pgstat-fix-subscription-stats-entry-leak.patch (application/octet-stream) patch v2-0001
On Thu, May 11, 2023 at 5:12 PM Masahiko Sawada <sawada.mshk@gmail.com> wrote: > > On Wed, May 10, 2023 at 8:58 PM Melih Mutlu <m.melihmutlu@gmail.com> wrote: > > > > Hi, > > > > Masahiko Sawada <sawada.mshk@gmail.com>, 8 May 2023 Pzt, 10:24 tarihinde şunu yazdı: > >> > >> I've attached the patch. Feedback is very welcome. > > > > > > Thanks for the patch, nice catch. > > I can confirm that the issue exists on HEAD and gets resolved by this patch. Also it looks like stats are really not affected if transaction fails for some reason, as you explained. > > IMO, the patch will be OK after commit message is added. > > Thank you for reviewing the patch. I'll push the patch early next > week, barring any objections. After thinking more about it, I realized that this is not a problem specific to HEAD. ISTM the problem is that by commit 7b64e4b3, we drop the stats entry of subscription that is not associated with a replication slot for apply worker, but we missed the case where the subscription is not associated with both replication slots for apply and tablesync. So IIUC we should backpatch it down to 15. Since in pg15, since we don't create the subscription stats at CREATE SUBSCRIPTION time but do when the first error is reported, we cannot rely on the regression test suite. Also, to check if the subscription stats is surely removed, using pg_stat_have_stats() is clearer. So I added a test case to TAP tests (026_stats.pl). On Tue, May 9, 2023 at 1:51 PM Hayato Kuroda (Fujitsu) <kuroda.hayato@fujitsu.com> wrote: > > A comment: > > ``` > + /* > + * Tell the cumulative stats system that the subscription is getting > + * dropped. > + */ > + pgstat_drop_subscription(subid); > ``` > > Isn't it better to write down something you said as comment? Or is it quite trivial? > > > There is a chance the > > transaction dropping the subscription fails due to network error etc > > but we don't need to worry about it as reporting the subscription drop > > is transactional. I'm not sure it's worth mentioning as we don't have such a comment around other pgstat_drop_XXX functions. Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com
Commits
-
Stabilize subscription stats test.
- 28ed5ecbe071 17.0 landed
- 1b95c8d85fa6 16.0 landed
- 461a7fad7c67 15.5 landed
-
pgstat: fix subscription stats entry leak.
- be8cae7e2f03 16.0 landed
- 66f8a1397319 15.4 landed
- 68a59f9e9983 17.0 landed
-
Create subscription stats entry at CREATE SUBSCRIPTION time
- e0b014295906 16.0 cited
-
pgstat: drop subscription stats without slot as well, fix comment
- 7b64e4b3fa04 16.0 cited