[SCM] CTDB repository - branch 1.0.112 updated - ctdb-1.0.111-62-g3f403ff
Ronnie Sahlberg
sahlberg at samba.org
Wed Apr 21 00:25:37 MDT 2010
The branch, 1.0.112 has been updated
via 3f403ff374915a831b02d2f072bc61cf1ba9e77a (commit)
via cf65d8f35b67de8977ce884d8aab24c56513cd8b (commit)
from 923398888bb839e22951a8dd21187bf3f343eb3d (commit)
http://gitweb.samba.org/?p=sahlberg/ctdb.git;a=shortlog;h=1.0.112
- Log -----------------------------------------------------------------
commit 3f403ff374915a831b02d2f072bc61cf1ba9e77a
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date: Wed Apr 21 15:42:00 2010 +1000
New version 1.0.112-15
* Wed Apr 21 2010 : Version 1.0.112-15
- Change how we add/remove iptable rules during recovery to make
rules leaks less likey.
- change a debug message loglevel from ERR to NOTICE
BZ62086
- In the recovery daemon, track pulbic ip assignment
across the cluster and verify consistency.
- From Martins: change the 10.interface script to handle
virtio interfaces correctly for virtual clusters.
- Make the recovery master verify the reclock setting across the cluster
and ban nodes with inconsistencies.
BZ56354
commit cf65d8f35b67de8977ce884d8aab24c56513cd8b
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date: Wed Apr 21 13:46:54 2010 +1000
Let the recovery master verify the reclock setting on all nodes in the cluster.
Any node that is found to use a different filename from the first node
will be banned.
Nodes that have no reclock file at all configured are ignored in this check.
BZ56354
-----------------------------------------------------------------------
Summary of changes:
packaging/RPM/ctdb.spec.in | 14 ++++++++-
server/ctdb_recoverd.c | 69 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 82 insertions(+), 1 deletions(-)
Changeset truncated at 500 lines:
diff --git a/packaging/RPM/ctdb.spec.in b/packaging/RPM/ctdb.spec.in
index 023551b..15d7a7b 100644
--- a/packaging/RPM/ctdb.spec.in
+++ b/packaging/RPM/ctdb.spec.in
@@ -5,7 +5,7 @@ Vendor: Samba Team
Packager: Samba Team <samba at samba.org>
Name: ctdb
Version: 1.0.112
-Release: 14
+Release: 15
Epoch: 0
License: GNU GPL version 3
Group: System Environment/Daemons
@@ -123,6 +123,18 @@ rm -rf $RPM_BUILD_ROOT
%{_docdir}/ctdb/tests/bin/ctdb_transaction
%changelog
+* Wed Apr 21 2010 : Version 1.0.112-15
+ - Change how we add/remove iptable rules during recovery to make
+ rules leaks less likey.
+ - change a debug message loglevel from ERR to NOTICE
+ BZ62086
+ - In the recovery daemon, track pulbic ip assignment
+ across the cluster and verify consistency.
+ - From Martins: change the 10.interface script to handle
+ virtio interfaces correctly for virtual clusters.
+ - Make the recovery master verify the reclock setting across the cluster
+ and ban nodes with inconsistencies.
+ BZ56354
* Mon Mar 29 2010 : Version 1.0.112-14
- Wipe the new serverid database before starting winbind
* Wed Mar 25 2010 : Version 1.0.112-13
diff --git a/server/ctdb_recoverd.c b/server/ctdb_recoverd.c
index 68f744a..6ceb95e 100644
--- a/server/ctdb_recoverd.c
+++ b/server/ctdb_recoverd.c
@@ -64,6 +64,9 @@ struct ctdb_recoverd {
TALLOC_CTX *ip_reallocate_ctx;
struct ip_reallocate_list *reallocate_callers;
TALLOC_CTX *ip_check_disable_ctx;
+
+ const char *reclock_file_path;
+ uint32_t reclock_check_count;
};
#define CONTROL_TIMEOUT() timeval_current_ofs(ctdb->tunable.recover_timeout, 0)
@@ -1973,6 +1976,69 @@ static void election_handler(struct ctdb_context *ctdb, uint64_t srvid,
}
+static void async_reclock_path_callback(struct ctdb_context *ctdb, uint32_t node_pnn, int32_t res, TDB_DATA data, void *callback_data)
+{
+ struct ctdb_recoverd *rec = talloc_get_type(callback_data, struct ctdb_recoverd);
+ const char *name;
+
+ if (data.dsize == 0) {
+ return;
+ }
+
+ name = (char *)data.dptr;
+
+ /* The first one we get is the one we will trust. Everyone which
+ uses a different file will get their ban count upped */
+ if (rec->reclock_file_path == NULL) {
+ rec->reclock_file_path = talloc_strdup(rec, name);
+ return;
+ }
+
+ if (!strcmp(rec->reclock_file_path, name)) {
+ return;
+ }
+
+ DEBUG(DEBUG_CRIT,("ERROR: Node %u has inconsistent reclock file setting. Verify reclock settings on all nodes in the cluster.\n", node_pnn));
+ ctdb_set_culprit_count(rec, node_pnn, rec->nodemap->num);
+}
+
+static int verify_reclock_file_path(struct ctdb_recoverd *rec)
+{
+ uint32_t *nodes;
+ TALLOC_CTX *tmp_ctx;
+ struct ctdb_context *ctdb = rec->ctdb;
+
+ /* only check once every 10 seconds */
+ rec->reclock_check_count++;
+ if (rec->reclock_check_count < 10) {
+ return 0;
+ }
+
+ rec->reclock_check_count = 0;
+ if (rec->reclock_file_path != NULL) {
+ talloc_free(discard_const(rec->reclock_file_path));
+ rec->reclock_file_path = NULL;
+ }
+
+ tmp_ctx = talloc_new(ctdb);
+ CTDB_NO_MEMORY(ctdb, tmp_ctx);
+
+ nodes = list_of_active_nodes(ctdb, rec->nodemap, tmp_ctx, true);
+ if (ctdb_client_async_control(ctdb, CTDB_CONTROL_GET_RECLOCK_FILE,
+ nodes, 0,
+ CONTROL_TIMEOUT(),
+ false, tdb_null,
+ async_reclock_path_callback, NULL,
+ rec) != 0) {
+ DEBUG(DEBUG_ERR, (__location__ " Failed to verify reclock path settings.\n"));
+ talloc_free(tmp_ctx);
+ return -1;
+ }
+
+ talloc_free(tmp_ctx);
+ return 0;
+}
+
/*
force the start of the election process
*/
@@ -2988,6 +3054,9 @@ again:
}
+ /* ensure we all share the same setting for the reclock file */
+ verify_reclock_file_path(rec);
+
/* ensure our local copies of flags are right */
ret = update_local_flags(rec, nodemap);
if (ret == MONITOR_ELECTION_NEEDED) {
--
CTDB repository
More information about the samba-cvs
mailing list