Re: [PATCH] Verify Checksums during Basebackups
От | Michael Banck |
---|---|
Тема | Re: [PATCH] Verify Checksums during Basebackups |
Дата | |
Msg-id | 1520250437.22202.13.camel@credativ.de обсуждение исходный текст |
Ответ на | Re: [PATCH] Verify Checksums during Basebackups (Stephen Frost <sfrost@snowman.net>) |
Ответы |
Re: [PATCH] Verify Checksums during Basebackups
|
Список | pgsql-hackers |
Hi, Am Montag, den 05.03.2018, 06:36 -0500 schrieb Stephen Frost: > Michael, > > * Michael Banck (michael.banck@credativ.de) wrote: > > On Sun, Mar 04, 2018 at 06:19:00PM +0100, Magnus Hagander wrote: > > > So sure, if we go with WARNING + exit with an errorcode, that is perhaps > > > the best combination of the two. > > > > I had a look at how to go about this, but it appears to be a bit > > complicated; the first problem is that sendFile() and sendDir() don't > > have status return codes that could be set on checksum verifcation > > failure. So I added a global variable and threw an ereport(ERROR) at the > > end of perform_base_backup(), but then I realized that `pg_basebackup' > > the client program purges the datadir it created if it gets an error: > > > > > pg_basebackup: final receive failed: ERROR: Checksum mismatch during > > > basebackup > > > > > > pg_basebackup: removing data directory "data2" > > Oh, ugh. I came up with the attached patch, which sets a checksum_failure variable in both basebackup.c and pg_basebackup.c, and emits an ereport with (for now) ERRCODE_DATA_CORRUPTED at the end of perform_base_backup(), which gets caught in pg_basebackup and then used to not cleanup the datadir, but exit with a non-zero exit code. Does that seem feasible? Michael -- Michael Banck Projektleiter / Senior Berater Tel.: +49 2166 9901-171 Fax: +49 2166 9901-100 Email: michael.banck@credativ.de credativ GmbH, HRB Mönchengladbach 12080 USt-ID-Nummer: DE204566209 Trompeterallee 108, 41189 Mönchengladbach Geschäftsführung: Dr. Michael Meskes, Jörg Folz, Sascha Heuer
Вложения
В списке pgsql-hackers по дате отправления: