gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-exchange] 01/02: eliminate dead macros


From: gnunet
Subject: [GNUnet-SVN] [taler-exchange] 01/02: eliminate dead macros
Date: Tue, 04 Jul 2017 23:42:19 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository exchange.

commit f9950799fc21c6847d13f93aaec2cd6a555d546a
Author: Christian Grothoff <address@hidden>
AuthorDate: Tue Jul 4 23:28:03 2017 +0200

    eliminate dead macros
---
 src/auditordb/plugin_auditordb_postgres.c   | 66 -----------------------------
 src/exchangedb/plugin_exchangedb_postgres.c | 34 ++++++++++++++-
 2 files changed, 33 insertions(+), 67 deletions(-)

diff --git a/src/auditordb/plugin_auditordb_postgres.c 
b/src/auditordb/plugin_auditordb_postgres.c
index e02e69a..38894c8 100644
--- a/src/auditordb/plugin_auditordb_postgres.c
+++ b/src/auditordb/plugin_auditordb_postgres.c
@@ -31,72 +31,6 @@
 
 
 /**
- * Log a query error.
- *
- * @param result PQ result object of the query that failed
- */
-#define QUERY_ERR(result)                          \
-  LOG (GNUNET_ERROR_TYPE_ERROR, "Query failed at %s:%u: %s (%s)\n", __FILE__, 
__LINE__, PQresultErrorMessage (result), PQresStatus (PQresultStatus (result)))
-
-
-/**
- * Log a really unexpected PQ error.
- *
- * @param result PQ result object of the PQ operation that failed
- */
-#define BREAK_DB_ERR(result) do { \
-    GNUNET_break (0); \
-    LOG (GNUNET_ERROR_TYPE_ERROR, "Database failure: %s (%s)\n", 
PQresultErrorMessage (result), PQresStatus (PQresultStatus (result))); \
-  } while (0)
-
-
-/**
- * Shorthand for exit jumps.  Logs the current line number
- * and jumps to the "EXITIF_exit" label.
- *
- * @param cond condition that must be TRUE to exit with an error
- */
-#define EXITIF(cond)                                              \
-  do {                                                            \
-    if (cond) { GNUNET_break (0); goto EXITIF_exit; }             \
-  } while (0)
-
-
-/**
- * Execute an SQL statement and log errors on failure. Must be
- * run in a function that has an "SQLEXEC_fail" label to jump
- * to in case the SQL statement failed.
- *
- * @param conn database connection
- * @param sql SQL statement to run
- */
-#define SQLEXEC_(conn, sql)                                             \
-  do {                                                                  \
-    PGresult *result = PQexec (conn, sql);                              \
-    if (PGRES_COMMAND_OK != PQresultStatus (result))                    \
-    {                                                                   \
-      BREAK_DB_ERR (result);                                            \
-      PQclear (result);                                                 \
-      goto SQLEXEC_fail;                                                \
-    }                                                                   \
-    PQclear (result);                                                   \
-  } while (0)
-
-
-/**
- * Run an SQL statement, ignoring errors and clearing the result.
- *
- * @param conn database connection
- * @param sql SQL statement to run
- */
-#define SQLEXEC_IGNORE_ERROR_(conn, sql)                                \
-  do {                                                                  \
-    PGresult *result = PQexec (conn, sql);                              \
-    PQclear (result);                                                   \
-  } while (0)
-
-
-/**
  * Handle for a database session (per-thread, for transactions).
  */
 struct TALER_AUDITORDB_Session
diff --git a/src/exchangedb/plugin_exchangedb_postgres.c 
b/src/exchangedb/plugin_exchangedb_postgres.c
index b6241c8..de3c783 100644
--- a/src/exchangedb/plugin_exchangedb_postgres.c
+++ b/src/exchangedb/plugin_exchangedb_postgres.c
@@ -1478,6 +1478,33 @@ db_conn_destroy (void *cls)
 
 
 /**
+ * Reset the thread-local database-handle.  Disconnects from the DB.
+ * Needed after the database server restarts as we need to properly
+ * reconnect.
+ *
+ * @param cls the `struct PostgresClosure` with the plugin-specific state
+ * @return the database connection, or NULL on error
+ */
+static void
+postgres_reset_session (void *cls)
+{
+  struct PostgresClosure *pc = cls;
+  struct TALER_EXCHANGEDB_Session *session;
+
+  if (NULL != (session = pthread_getspecific (pc->db_conn_threadlocal)))
+    return;
+  if (0 != pthread_setspecific (pc->db_conn_threadlocal,
+                                NULL))
+  {
+    GNUNET_break (0);
+    return;
+  }
+  PQfinish (session->conn);
+  GNUNET_free (session);
+}
+
+
+/**
  * Get the thread-local database-handle.
  * Connect to the db if the connection does not exist yet.
  *
@@ -1492,7 +1519,12 @@ postgres_get_session (void *cls)
   struct TALER_EXCHANGEDB_Session *session;
 
   if (NULL != (session = pthread_getspecific (pc->db_conn_threadlocal)))
-    return session;
+  {
+    if (CONNECTION_BAD == PQstatus (session->conn))
+      postgres_reset_session (pc);
+    else
+      return session;
+  }
   db_conn = GNUNET_PQ_connect (pc->connection_cfg_str);
   if (NULL == db_conn)
     return NULL;

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]