[sheepdog] [PATCH] shepherd: show warning at startup

MORITA Kazutaka morita.kazutaka at gmail.com
Fri May 31 12:04:18 CEST 2013


From: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>

The current shepherd driver doesn't handle node change events as sheep
expects.  This patch prints a warning message to notice the user that
shepherd is not suitable for production, and adds some FIXME comments
that must be done before we remove the warning message.

Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
---
 sheep/cluster/shepherd.c |    9 +++++++++
 shepherd/shepherd.c      |    3 +++
 2 files changed, 12 insertions(+)

diff --git a/sheep/cluster/shepherd.c b/sheep/cluster/shepherd.c
index ac57503..2bc93d2 100644
--- a/sheep/cluster/shepherd.c
+++ b/sheep/cluster/shepherd.c
@@ -111,6 +111,10 @@ retry:
 			exit(1);
 		}
 
+		/*
+		 * FIXME: member change events must be ordered with nonblocked
+		 *        events
+		 */
 		res = sd_check_join_cb(&join->node, join->opaque);
 		if (res == CJ_RES_FAIL) {
 			sd_eprintf("sd_check_join_cb() failed");
@@ -171,6 +175,7 @@ retry:
 		nr_nodes = join_reply->nr_nodes;
 	}
 
+	/* FIXME: member change events must be ordered with nonblocked events */
 	sd_join_handler(&this_node, nodes, nr_nodes,
 			join_reply->res, join_reply->opaque);
 
@@ -337,6 +342,7 @@ static void msg_new_node(struct sph_msg *rcv)
 		exit(1);
 	}
 
+	/* FIXME: member change events must be ordered with nonblocked events */
 	res = sd_check_join_cb(&join->node, join->opaque);
 
 	join->res = res;
@@ -379,6 +385,8 @@ static void msg_new_node_finish(struct sph_msg *rcv)
 
 	sd_iprintf("new node: %s",
 		node_to_str(&join_node_finish->new_node));
+
+	/* FIXME: member change events must be ordered with nonblocked events */
 	sd_join_handler(&join_node_finish->new_node, nodes, nr_nodes,
 			join_node_finish->res, jm);
 
@@ -452,6 +460,7 @@ static void do_leave_sheep(void)
 removed:
 	sd_dprintf("calling sd_leave_handler(), sender: %s",
 		node_to_str(&sender));
+	/* FIXME: member change events must be ordered with nonblocked events */
 	sd_leave_handler(&sender, nodes, nr_nodes);
 }
 
diff --git a/shepherd/shepherd.c b/shepherd/shepherd.c
index 6eef5a3..418d3ad 100644
--- a/shepherd/shepherd.c
+++ b/shepherd/shepherd.c
@@ -790,6 +790,9 @@ int main(int argc, char **argv)
 	struct option *long_options;
 	const char *short_options;
 
+	printf(TEXT_BOLD_RED "** WARNING: shepherd is still only suitable for "
+	       "testing and review **" TEXT_NORMAL "\n");
+
 	progname = argv[0];
 
 	install_crash_handler(crash_handler);
-- 
1.7.9.5



More information about the sheepdog mailing list