[Sheepdog] [PATCH v3 5/7] sheep: transient failure - get templeave time from master

yaohaiting.wujue at gmail.com yaohaiting.wujue at gmail.com
Wed May 2 09:12:53 CEST 2012


From: HaiTing Yao <wujue.yht at taobao.com>

When restart the sheepdog daemon or start a new daemon, the new daemon
should get templeave time from master

Signed-off-by: HaiTing Yao <wujue.yht at taobao.com>
---
 sheep/group.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/sheep/group.c b/sheep/group.c
index 5ec7c67..1c1cb07 100644
--- a/sheep/group.c
+++ b/sheep/group.c
@@ -53,6 +53,7 @@ struct join_message {
 	uint32_t result;
 	uint8_t inc_epoch; /* set non-zero when we increment epoch of all nodes */
 	uint8_t store[STORE_LEN];
+	uint32_t templeft_time;
 	union {
 		struct sd_node nodes[0];
 		struct sd_node leave_nodes[0];
@@ -543,6 +544,7 @@ static void finish_join(struct join_message *msg, struct sd_node *joined,
 
 	sys->nr_copies = msg->nr_copies;
 	sys->epoch = msg->epoch;
+	sys->templeft_time = msg->templeft_time;
 
 	/* add nodes execept for newly joined one */
 	for (i = 0; i < nr_nodes; i++) {
@@ -797,6 +799,7 @@ enum cluster_join_result sd_check_join_cb(struct sd_node *joining, void *opaque)
 		return CJ_RES_MASTER_TRANSFER;
 	}
 	jm->epoch = sys->epoch;
+	jm->templeft_time = sys->templeft_time;
 
 	if (jm->result == SD_RES_SUCCESS)
 		return CJ_RES_SUCCESS;
-- 
1.7.1




More information about the sheepdog mailing list