Rev 661: merge from ronnie in http://samba.org/~tridge/ctdb

tridge at samba.org tridge at samba.org
Thu Oct 18 23:39:08 GMT 2007


------------------------------------------------------------
revno: 661
revision-id: tridge at samba.org-20071018233907-nz5qbg3elqjpybob
parent: tridge at samba.org-20071018233055-hmf4cgly84gjf8h6
parent: sahlberg at ronnie-20071018230537-ywtg8qzc8i6w6wrn
committer: Andrew Tridgell <tridge at samba.org>
branch nick: tridge
timestamp: Fri 2007-10-19 09:39:07 +1000
message:
  merge from ronnie
modified:
  ib/ibw_ctdb_init.c             ibw_ctdb_init.c-20070102171305-cn2z4k7ibx8141d5-1
  include/ctdb_private.h         ctdb_private.h-20061117234101-o3qt14umlg9en8z0-13
  server/ctdb_server.c           ctdb.c-20061127094323-t50f58d65iaao5of-2
  tcp/tcp_init.c                 tcp_init.c-20061128004937-x70q1cu5xzg5g2tm-2
    ------------------------------------------------------------
    revno: 432.1.326
    revision-id: sahlberg at ronnie-20071018230537-ywtg8qzc8i6w6wrn
    parent: sahlberg at ronnie-20071018230452-q0s5kk9jgbnvje6g
    committer: Ronnie Sahlberg <sahlberg at ronnie>
    branch nick: ctdb
    timestamp: Fri 2007-10-19 09:05:37 +1000
    message:
      add  missing ) in the IB transport (which i dont compile for)
    modified:
      ib/ibw_ctdb_init.c             ibw_ctdb_init.c-20070102171305-cn2z4k7ibx8141d5-1
    ------------------------------------------------------------
    revno: 432.1.325
    revision-id: sahlberg at ronnie-20071018230452-q0s5kk9jgbnvje6g
    parent: sahlberg at ronnie-20071018225830-fwc1j2b2zvdhkvz7
    committer: Ronnie Sahlberg <sahlberg at ronnie>
    branch nick: ctdb
    timestamp: Fri 2007-10-19 09:04:52 +1000
    message:
      add a stub restart method for IB
    modified:
      ib/ibw_ctdb_init.c             ibw_ctdb_init.c-20070102171305-cn2z4k7ibx8141d5-1
    ------------------------------------------------------------
    revno: 432.1.324
    revision-id: sahlberg at ronnie-20071018225830-fwc1j2b2zvdhkvz7
    parent: sahlberg at ronnie-20071018065400-y2m2s9ialombjc7d
    committer: Ronnie Sahlberg <sahlberg at ronnie>
    branch nick: ctdb
    timestamp: Fri 2007-10-19 08:58:30 +1000
    message:
      add a new transport method so that when a node is marked as dead, we 
      shut down and restart the transport
      
      othervise, if we use the tcp transport the tcp connection might try to 
      retransmit the queued data during the time the node is unavailable.
      this together with the exponential backoff for tcp means that the tcp 
      connection quickly reaches the maximum backoff rto which is often 60 or 
      120 seconds.   this would mean that it could take up to 60/120 seconds 
      before the tcp layer detects that the connection is dead and it has to 
      be reestablished.
    modified:
      include/ctdb_private.h         ctdb_private.h-20061117234101-o3qt14umlg9en8z0-13
      server/ctdb_server.c           ctdb.c-20061127094323-t50f58d65iaao5of-2
      tcp/tcp_init.c                 tcp_init.c-20061128004937-x70q1cu5xzg5g2tm-2
    ------------------------------------------------------------
    revno: 432.1.323
    revision-id: sahlberg at ronnie-20071018065400-y2m2s9ialombjc7d
    parent: sahlberg at ronnie-20071018055350-ckv86nfpg3bjrh7i
    committer: Ronnie Sahlberg <sahlberg at ronnie>
    branch nick: ctdb
    timestamp: Thu 2007-10-18 16:54:00 +1000
    message:
      set the flags explicitely isnstead of masking them in
    modified:
      server/ctdb_server.c           ctdb.c-20061127094323-t50f58d65iaao5of-2
    ------------------------------------------------------------
    revno: 432.1.322
    revision-id: sahlberg at ronnie-20071018055350-ckv86nfpg3bjrh7i
    parent: sahlberg at ronnie-20071018041348-h91h0vmvbr33nytc
    parent: tridge at samba.org-20071018055115-ei6mwy91qs3iu4ok
    committer: Ronnie Sahlberg <sahlberg at ronnie>
    branch nick: ctdb
    timestamp: Thu 2007-10-18 15:53:50 +1000
    message:
      merge from tridge
    modified:
      server/ctdb_recover.c          ctdb_recover.c-20070503002147-admmfgt1oj6gexfo-1
=== modified file 'ib/ibw_ctdb_init.c'
--- a/ib/ibw_ctdb_init.c	2007-07-10 05:46:05 +0000
+++ b/ib/ibw_ctdb_init.c	2007-10-18 23:05:37 +0000
@@ -177,6 +177,12 @@
 	return rc;
 }
 
+static void ctdb_ibw_restart(struct ctdb_node *node)
+{
+	/* TODO: implement this method for IB */
+	DEBUG(0,("WARNING: method restart is not yet implemented for IB\n"));
+}
+
 /*
  * transport packet allocator - allows transport to control memory for packets
  */
@@ -204,6 +210,7 @@
 	.queue_pkt = ctdb_ibw_queue_pkt,
 	.add_node = ctdb_ibw_add_node,
 	.allocate_pkt = ctdb_ibw_allocate_pkt,
+	.restart      = ctdb_ibw_restart,
 
 //	.stop = ctdb_ibw_stop
 };

=== modified file 'include/ctdb_private.h'
--- a/include/ctdb_private.h	2007-10-16 02:15:02 +0000
+++ b/include/ctdb_private.h	2007-10-18 22:58:30 +0000
@@ -207,6 +207,7 @@
 	int (*queue_pkt)(struct ctdb_node *, uint8_t *data, uint32_t length);
 	void *(*allocate_pkt)(TALLOC_CTX *mem_ctx, size_t );
 	void (*shutdown)(struct ctdb_context *); /* shutdown transport */
+	void (*restart)(struct ctdb_node *); /* stop and restart the connection */
 };
 
 /*

=== modified file 'server/ctdb_server.c'
--- a/server/ctdb_server.c	2007-10-10 00:45:22 +0000
+++ b/server/ctdb_server.c	2007-10-18 22:58:30 +0000
@@ -120,7 +120,7 @@
 	node->pnn = ctdb->num_nodes;
 
 	/* nodes start out disconnected and unhealthy */
-	node->flags |= NODE_FLAGS_DISCONNECTED | NODE_FLAGS_UNHEALTHY;
+	node->flags = (NODE_FLAGS_DISCONNECTED | NODE_FLAGS_UNHEALTHY);
 
 	if (ctdb->address.address &&
 	    ctdb_same_address(&ctdb->address, &node->address)) {
@@ -338,9 +338,12 @@
 	node->flags |= NODE_FLAGS_DISCONNECTED | NODE_FLAGS_UNHEALTHY;
 	node->rx_cnt = 0;
 	node->dead_count = 0;
-	DEBUG(1,("%s: node %s is dead: %u connected\n", 
+
+	DEBUG(0,("%s: node %s is dead: %u connected\n", 
 		 node->ctdb->name, node->name, node->ctdb->num_connected));
 	ctdb_daemon_cancel_controls(node->ctdb, node);
+
+	node->ctdb->methods->restart(node);
 }
 
 /*

=== modified file 'tcp/tcp_init.c'
--- a/tcp/tcp_init.c	2007-07-10 05:29:31 +0000
+++ b/tcp/tcp_init.c	2007-10-18 23:39:07 +0000
@@ -88,6 +88,24 @@
 	return 0;
 }
 
+/*
+  shutdown and try to restart a connection to a node after it has been
+  disconnected
+*/
+static void ctdb_tcp_restart(struct ctdb_node *node)
+{
+	struct ctdb_tcp_node *tnode = talloc_get_type(
+		node->private_data, struct ctdb_tcp_node);
+
+	DEBUG(0,("Tearing down connection to dead node :%d\n", node->pnn));
+
+	tnode->fd = -1;
+	ctdb_queue_set_fd(tnode->out_queue, -1);
+
+	event_add_timed(node->ctdb->ev, tnode, timeval_zero(), 
+			ctdb_tcp_node_connect, node);
+}
+
 
 /*
   shutdown the transport
@@ -121,6 +139,7 @@
 	.add_node     = ctdb_tcp_add_node,
 	.allocate_pkt = ctdb_tcp_allocate_pkt,
 	.shutdown     = ctdb_tcp_shutdown,
+	.restart      = ctdb_tcp_restart,
 };
 
 /*



More information about the samba-cvs mailing list