[SCM] CTDB repository - branch master updated -
ctdb-1.0.86-61-gb75ac11
Ronnie Sahlberg
sahlberg at samba.org
Thu Jul 9 04:17:16 GMT 2009
The branch, master has been updated
via b75ac1185481060ab71bd743e1e48d333d716eba (commit)
via 1e007c833098b03dd81797c081da1ae1b10c971c (commit)
from 99f239f8b96c8c0a06ac8ca8b8083be96265865a (commit)
http://gitweb.samba.org/?p=sahlberg/ctdb.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit b75ac1185481060ab71bd743e1e48d333d716eba
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date: Thu Jul 9 14:44:03 2009 +1000
stopped nodes can not win a recmaster election
stopped nodes must yield the recmaster role
commit 1e007c833098b03dd81797c081da1ae1b10c971c
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date: Thu Jul 9 14:34:12 2009 +1000
change the infolevel when logging stop/continue commands
-----------------------------------------------------------------------
Summary of changes:
server/ctdb_recover.c | 4 ++--
server/ctdb_recoverd.c | 19 ++++++++++++++++++-
2 files changed, 20 insertions(+), 3 deletions(-)
Changeset truncated at 500 lines:
diff --git a/server/ctdb_recover.c b/server/ctdb_recover.c
index 97602b9..b9a507b 100644
--- a/server/ctdb_recover.c
+++ b/server/ctdb_recover.c
@@ -1158,7 +1158,7 @@ int32_t ctdb_control_set_recmaster(struct ctdb_context *ctdb, uint32_t opcode, T
int32_t ctdb_control_stop_node(struct ctdb_context *ctdb)
{
- DEBUG(DEBUG_ERR,(__location__ " Stopping node\n"));
+ DEBUG(DEBUG_INFO,(__location__ " Stopping node\n"));
ctdb->nodes[ctdb->pnn]->flags |= NODE_FLAGS_STOPPED;
return 0;
@@ -1166,7 +1166,7 @@ int32_t ctdb_control_stop_node(struct ctdb_context *ctdb)
int32_t ctdb_control_continue_node(struct ctdb_context *ctdb)
{
- DEBUG(DEBUG_ERR,(__location__ " Continue node\n"));
+ DEBUG(DEBUG_INFO,(__location__ " Continue node\n"));
ctdb->nodes[ctdb->pnn]->flags &= ~NODE_FLAGS_STOPPED;
return 0;
diff --git a/server/ctdb_recoverd.c b/server/ctdb_recoverd.c
index 8f6106f..d601ca6 100644
--- a/server/ctdb_recoverd.c
+++ b/server/ctdb_recoverd.c
@@ -1660,11 +1660,21 @@ static bool ctdb_election_win(struct ctdb_recoverd *rec, struct election_message
return false;
}
+ /* we cant win if we are stopped */
+ if (rec->node_flags & NODE_FLAGS_STOPPED) {
+ return false;
+ }
+
/* we will automatically win if the other node is banned */
if (em->node_flags & NODE_FLAGS_BANNED) {
return true;
}
+ /* we will automatically win if the other node is banned */
+ if (em->node_flags & NODE_FLAGS_STOPPED) {
+ return true;
+ }
+
/* try to use the most connected node */
if (cmp == 0) {
cmp = (int)myem.num_connected - (int)em->num_connected;
@@ -2831,7 +2841,14 @@ again:
goto again;
}
}
-
+ /* If the local node is stopped, verify we are not the recmaster
+ and yield this role if so
+ */
+ if ((nodemap->nodes[pnn].flags & NODE_FLAGS_STOPPED) && (rec->recmaster == pnn)) {
+ DEBUG(DEBUG_ERR,("Local node is STOPPED. Yielding recmaster role\n"));
+ force_election(rec, pnn, nodemap);
+ goto again;
+ }
/* check that we (recovery daemon) and the local ctdb daemon
agrees on whether we are banned or not
--
CTDB repository
More information about the samba-cvs
mailing list