From 2e639a81fe352ca35ea94b3d2fa4708afc736472 Mon Sep 17 00:00:00 2001 From: Grigory Smolkin Date: Sat, 13 Apr 2019 22:33:04 +0300 Subject: [PATCH] checkdb: close initial connection, skipped db in amcheck now counts as fatal error --- src/backup.c | 15 ++++++++------- src/pg_probackup.h | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/backup.c b/src/backup.c index dd8a007c..676b56ce 100644 --- a/src/backup.c +++ b/src/backup.c @@ -1063,6 +1063,7 @@ do_amcheck(void) 0, NULL); n_databases = PQntuples(res_db); + PQclear(res_db); elog(INFO, "Start amchecking PostgreSQL instance"); @@ -1134,14 +1135,17 @@ do_amcheck(void) break; } + /* close initial connection to pgdatabase */ + pgut_disconnect(backup_conn); + /* TODO write better info message */ if (db_skipped) elog(WARNING, "Some databases were not checked"); - if (!check_isok) + if (!check_isok || db_skipped) elog(ERROR, "Checkdb --amcheck failed"); - else - elog(INFO, "Checkdb --amcheck executed"); + + elog(INFO, "Checkdb --amcheck executed successfully"); /* We cannot state that all indexes are ok * without checking indexes in all databases @@ -1151,7 +1155,7 @@ do_amcheck(void) } /* Entry point of pg_probackup CHECKDB subcommand. */ -int +void do_checkdb(bool need_amcheck) { @@ -1165,9 +1169,6 @@ do_checkdb(bool need_amcheck) if (need_amcheck) do_amcheck(); - - /* TODO: need to exit with 1 if some corruption is found */ - return 0; } /* diff --git a/src/pg_probackup.h b/src/pg_probackup.h index b48e81a0..34efcad8 100644 --- a/src/pg_probackup.h +++ b/src/pg_probackup.h @@ -421,7 +421,7 @@ extern const char *pgdata_exclude_dir[]; /* in backup.c */ extern int do_backup(time_t start_time); -extern int do_checkdb(bool need_amcheck); +extern void do_checkdb(bool need_amcheck); extern BackupMode parse_backup_mode(const char *value); extern const char *deparse_backup_mode(BackupMode mode); extern void process_block_change(ForkNumber forknum, RelFileNode rnode,