pgpool2.git / summary / log / commit / refs
commit 863e7d39300db0044c5f39e02ea52a73e37ced98
Author: Yoshiyuki Asaba <y-asaba at pgfoundry.org>
Date: Fri Oct 26 11:28:06 2007 +0000
All signals are blocked while sending a "COMMIT" command.
pool_process_query.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/pool_process_query.c b/pool_process_query.c
index d5b1e4b6e..777ff85ed 100644
--- a/pool_process_query.c
+++ b/pool_process_query.c
@@ -42,6 +42,7 @@
#include <ctype.h>
#include "pool.h"
+#include "pool_signal.h"
#include "parser/parser.h"
#include "parser/pg_list.h"
@@ -5225,6 +5226,13 @@ static POOL_STATUS start_internal_transaction(POOL_CONNECTION_POOL *backend, Nod
static POOL_STATUS end_internal_transaction(POOL_CONNECTION_POOL *backend)
{
int i;
+#ifdef HAVE_SIGPROCMASK
+ sigset_t oldmask;
+#else
+ int oldmask;
+#endif
+
+ POOL_SETMASK2(&BlockSig, &oldmask);
/* We need to commit from secondary to master. */
for (i=0;i<NUM_BACKENDS;i++)
@@ -5234,6 +5242,7 @@ static POOL_STATUS end_internal_transaction(POOL_CONNECTION_POOL *backend)
if (do_command(CONNECTION(backend, i), "COMMIT", MAJOR(backend), 1) != POOL_CONTINUE)
{
internal_transaction_started = 0;
+ POOL_SETMASK(&oldmask);
return POOL_END;
}
}
@@ -5243,10 +5252,12 @@ static POOL_STATUS end_internal_transaction(POOL_CONNECTION_POOL *backend)
if (do_command(MASTER(backend), "COMMIT", MAJOR(backend), 1) != POOL_CONTINUE)
{
internal_transaction_started = 0;
+ POOL_SETMASK(&oldmask);
return POOL_END;
}
internal_transaction_started = 0;
+ POOL_SETMASK(&oldmask);
return POOL_CONTINUE;
}
[parent: e1dfeb255ca3]