Rev 439: fixed a race condition in the handling of the recovery
lock in http://samba.org/~tridge/ctdb
tridge at samba.org
tridge at samba.org
Sun Jun 3 00:29:16 GMT 2007
------------------------------------------------------------
revno: 439
revision-id: tridge at samba.org-20070603002914-oycc73iztdrrq6g9
parent: tridge at samba.org-20070602094506-384lkqipi0x10k6c
committer: Andrew Tridgell <tridge at samba.org>
branch nick: tridge
timestamp: Sun 2007-06-03 10:29:14 +1000
message:
fixed a race condition in the handling of the recovery lock
modified:
common/ctdb_call.c ctdb_call.c-20061128065342-to93h6eejj5kon81-1
common/ctdb_recover.c ctdb_recover.c-20070503002147-admmfgt1oj6gexfo-1
common/ctdb_recoverd.c recoverd.c-20070503213540-bvxuyd9jm1f7ig90-1
=== modified file 'common/ctdb_call.c'
--- a/common/ctdb_call.c 2007-05-31 03:50:53 +0000
+++ b/common/ctdb_call.c 2007-06-03 00:29:14 +0000
@@ -394,8 +394,9 @@
/* its a protocol error if the sending node is not the current dmaster */
if (header.dmaster != hdr->srcnode) {
- DEBUG(0,("vnn %u dmaster request non-master %u dmaster=%u key %08x\n",
- ctdb->vnn, hdr->srcnode, header.dmaster, ctdb_hash(&key)));
+ DEBUG(0,("vnn %u dmaster request non-master %u dmaster=%u key %08x dbid 0x%08x\n",
+ ctdb->vnn, hdr->srcnode, header.dmaster, ctdb_hash(&key),
+ ctdb_db->db_id));
ctdb_fatal(ctdb, "ctdb_req_dmaster from non-master");
return;
}
=== modified file 'common/ctdb_recover.c'
--- a/common/ctdb_recover.c 2007-06-02 03:16:11 +0000
+++ b/common/ctdb_recover.c 2007-06-03 00:29:14 +0000
@@ -487,8 +487,8 @@
/* we should not be able to get the lock on the nodes list, as it should be
held by the recovery master */
if (ctdb_recovery_lock(ctdb, false)) {
- DEBUG(0,("ERROR: node list not locked when recovering!\n"));
- ctdb_fatal(ctdb, "node list not locked - make sure it is on shared storage");
+ DEBUG(0,("ERROR: recovery lock file %s not locked when recovering!\n",
+ ctdb->recovery_lock_file));
return -1;
}
=== modified file 'common/ctdb_recoverd.c'
--- a/common/ctdb_recoverd.c 2007-06-02 01:36:42 +0000
+++ b/common/ctdb_recoverd.c 2007-06-03 00:29:14 +0000
@@ -614,7 +614,8 @@
}
/* release the recmaster lock */
- if (ctdb->recovery_lock_fd != -1) {
+ if (em->vnn != ctdb_get_vnn(ctdb) &&
+ ctdb->recovery_lock_fd != -1) {
close(ctdb->recovery_lock_fd);
ctdb->recovery_lock_fd = -1;
}
More information about the samba-cvs
mailing list