anastasis-db_preflight.c (1819B)
1 /* 2 This file is part of Anastasis 3 Copyright (C) 2020, 2021, 2022 Anastasis SARL 4 5 Anastasis is free software; you can redistribute it and/or modify it under the 6 terms of the GNU Affero General Public License as published by the Free Software 7 Foundation; either version 3, or (at your option) any later version. 8 9 Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY 10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 11 A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 12 13 You should have received a copy of the GNU Affero General Public License along with 14 Anastasis; see the file COPYING.GPL. If not, see <http://www.gnu.org/licenses/> 15 */ 16 /** 17 * @file stasis/anastasis-db_preflight.c 18 * @brief preflight check for the Anastasis database 19 * @author Christian Grothoff 20 */ 21 #include "platform.h" 22 #include "anastasis-db_pg.h" 23 #include "anastasis/anastasis-database/preflight.h" 24 25 26 enum GNUNET_GenericReturnValue 27 ANASTASIS_DB_preflight (void) 28 { 29 struct GNUNET_PQ_ExecuteStatement es[] = { 30 GNUNET_PQ_make_execute ("ROLLBACK"), 31 GNUNET_PQ_EXECUTE_STATEMENT_END 32 }; 33 34 if (NULL == pg->transaction_name) 35 { 36 GNUNET_PQ_reconnect_if_down (pg->conn); 37 return GNUNET_OK; /* all good */ 38 } 39 if (GNUNET_OK == 40 GNUNET_PQ_exec_statements (pg->conn, 41 es)) 42 { 43 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 44 "BUG: Preflight check rolled back transaction `%s'!\n", 45 pg->transaction_name); 46 } 47 else 48 { 49 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 50 "BUG: Preflight check failed to rollback transaction `%s'!\n", 51 pg->transaction_name); 52 } 53 pg->transaction_name = NULL; 54 return GNUNET_NO; 55 } 56 57 58 /* end of anastasis-db_preflight.c */