*/
void ctdb_node_dead(struct ctdb_node *node)
{
+ if (!(node->flags & NODE_FLAGS_CONNECTED)) {
+ DEBUG(1,("%s: node %s is already marked disconnected: %u connected\n",
+ node->ctdb->name, node->name,
+ node->ctdb->num_connected));
+ return;
+ }
node->ctdb->num_connected--;
node->flags &= ~NODE_FLAGS_CONNECTED;
node->rx_cnt = 0;
*/
void ctdb_node_connected(struct ctdb_node *node)
{
+ if (node->flags & NODE_FLAGS_CONNECTED) {
+ DEBUG(1,("%s: node %s is already marked connected: %u connected\n",
+ node->ctdb->name, node->name,
+ node->ctdb->num_connected));
+ return;
+ }
node->ctdb->num_connected++;
node->dead_count = 0;
node->flags |= NODE_FLAGS_CONNECTED;
DEBUG(0,("Failed to start recovery daemon\n"));
exit(11);
}
+
+ /* start monitoring for dead nodes */
+ ctdb_start_monitoring(ctdb);
}
/* go into main ctdb loop */
ctdb->ev = event_context_init(NULL);
- /* start monitoring for dead nodes */
- ctdb_start_monitoring(ctdb);
-
/* start frozen, then let the first election sort things out */
if (!ctdb_blocking_freeze(ctdb)) {
DEBUG(0,("Failed to get initial freeze\n"));
}
/* tell all the other nodes about this database */
- ctdb_daemon_send_control(ctdb, CTDB_BROADCAST_VNNMAP, 0,
+ ctdb_daemon_send_control(ctdb, CTDB_BROADCAST_ALL, 0,
CTDB_CONTROL_DB_ATTACH, 0, CTDB_CTRL_FLAG_NOREPLY,
indata, NULL, NULL);