pgpool2.git / summary / log / commit / refs
commit 28bd33ecefbd6bc62bb9e54a3acc6373fc23420a
Author: Tatsuo Ishii <ishii at sraoss.co.jp>
Date: Sat Dec 22 00:11:24 2007 +0000
Add lots of pool_log to show the recovery steps
recovery.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/recovery.c b/recovery.c
index 0134b1ac9..626046883 100644
--- a/recovery.c
+++ b/recovery.c
@@ -47,6 +47,8 @@ int start_recovery(int recovery_node)
BackendInfo *recovery_backend;
PGconn *conn;
+ pool_log("starting recovering node %d", recovery_node);
+
if (VALID_BACKEND(recovery_node))
{
pool_error("start_recovery: backend node %d is alive", recovery_node);
@@ -73,12 +75,19 @@ int start_recovery(int recovery_node)
pool_error("start_recovery: CHECKPOINT failed");
return 1;
}
+
+ pool_log("CHECKPOINT in the 1st stage done");
+
if (exec_recovery(conn, recovery_backend, 1) != 0)
{
PQfinish(conn);
return 1;
}
+ pool_log("1st stage is done");
+
+ pool_log("starting 2nd stage");
+
/* 2nd stage */
*InRecovery = 1;
if (wait_connection_closed() != 0)
@@ -88,12 +97,17 @@ int start_recovery(int recovery_node)
return 1;
}
+ pool_log("all connections from clients have been closed");
+
if (exec_checkpoint(conn) != 0)
{
PQfinish(conn);
pool_error("start_recovery: CHECKPOINT failed");
return 1;
}
+
+ pool_log("CHECKPOINT in the 2nd stage done");
+
if (exec_recovery(conn, recovery_backend, 0) != 0)
{
PQfinish(conn);
@@ -113,11 +127,15 @@ int start_recovery(int recovery_node)
return 1;
}
+ pool_log("%d node restarted", recovery_node);
+
send_failback_request(recovery_node);
pause(); /* wait for failback */
PQfinish(conn);
+ pool_log("recovery done");
+
return 0;
}
@@ -176,6 +194,8 @@ static int exec_recovery(PGconn *conn, BackendInfo *backend, char first_stage)
hostname,
backend->backend_data_directory);
+ pool_log("starting recovery command: \"%s\"", recovery_command);
+
pool_debug("exec_recovery: start recovery");
result = PQexec(conn, recovery_command);
r = (PQresultStatus(result) != PGRES_TUPLES_OK);
[parent: 35625c08c683]