Re: Online enabling of checksums

From: Andrey Borodin <x4mmm(at)yandex-team(dot)ru>
To: Magnus Hagander <magnus(at)hagander(dot)net>
Cc: Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, Daniel Gustafsson <daniel(at)yesql(dot)se>, Michael Banck <michael(dot)banck(at)credativ(dot)de>, Robert Haas <robertmhaas(at)gmail(dot)com>, Greg Stark <stark(at)mit(dot)edu>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Online enabling of checksums
Date: 2018-04-05 15:08:08
Message-ID: 9D6D9E66-41AE-425D-80A9-5B121A5EA7EA@yandex-team.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> 5 апр. 2018 г., в 19:58, Magnus Hagander <magnus(at)hagander(dot)net> написал(а):
>
>
>
> On Thu, Apr 5, 2018 at 4:55 PM, Andrey Borodin <x4mmm(at)yandex-team(dot)ru> wrote:
>
>
> > 5 апр. 2018 г., в 14:33, Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com> написал(а):
> >
> > This patch version seems fine to me. I'm inclined to mark it RFC.
> +1
> The patch works fine for me. I've tried different combinations of backend cancelation and the only suspicious thing I found is that you can start multiple workers by cancelling launcher and not cancelling worker. Is it problematic behavior? If we run pg_enable_data_checksums() it checks for existing launcher for a reason, m.b. it should check for worker too?
>
> I don't think it's a problem in itself -- it will cause pointless work, but not actually cause any poroblems I think (whereas duplicate launchers could cause interesting things to happen).
>
> How did you actually cancel the launcher to end up in this situation?
select pg_enable_data_checksums(10000,1);
select pg_sleep(0.1);
select pg_cancel_backend(pid),backend_type from pg_stat_activity where backend_type ~ 'checksumhelper launcher' ;
select pg_enable_data_checksums(10000,1);
select pg_sleep(0.1);
select pg_cancel_backend(pid),backend_type from pg_stat_activity where backend_type ~ 'checksumhelper launcher' ;
select pg_enable_data_checksums(10000,1);
select pg_sleep(0.1);
select pg_cancel_backend(pid),backend_type from pg_stat_activity where backend_type ~ 'checksumhelper launcher' ;

select pid,backend_type from pg_stat_activity where backend_type ~'checks';
pid | backend_type
-------+-----------------------
98587 | checksumhelper worker
98589 | checksumhelper worker
98591 | checksumhelper worker
(3 rows)

There is a way to shoot yourself in a leg then by calling pg_disable_data_checksums(), but this is extremely stupid for a user.

Best regards, Andrey Borodin.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Alvaro Herrera 2018-04-05 15:09:15 Re: [HACKERS] MERGE SQL Statement for PG11
Previous Message Ildus Kurbangaliev 2018-04-05 15:08:07 Re: [HACKERS] WIP Patch: Pgbench Serialization and deadlock errors