Merge pull request #117 from SourceZh/separate

add more comments for independent starting of master and workers
This commit is contained in:
leebaok 2016-05-22 10:02:43 -05:00
commit 209f3c1d1c
2 changed files with 9 additions and 0 deletions

View File

@ -104,6 +104,9 @@ class NodeMgr(object):
for node in runlist:
nodeip = node['key'].rsplit('/',1)[1]
if node['value']=='waiting':
# waiting state can be deleted, there is no use to let master check
# this state because worker will change it and master will not change it now.
# it is only preserved for compatible.
logger.info ("%s want to joins, call it to init first" % nodeip)
elif node['value']=='work':
logger.info ("new node %s joins" % nodeip)
@ -119,6 +122,7 @@ class NodeMgr(object):
self.etcd.setkey("machines/runnodes/"+nodeip, "ok")
if nodeip not in self.runnodes:
self.runnodes.append(nodeip)
# node not in all node list is a new node.
if nodeip not in self.allnodes:
self.allnodes.append(nodeip)
self.etcd.setkey("machines/allnodes/"+nodeip, "ok")

View File

@ -54,7 +54,9 @@ class Worker(object):
self.master = self.etcd.getkey("service/master")[1]
self.mode=None
# waiting state is preserved for compatible.
self.etcd.setkey("machines/runnodes/"+self.addr, "waiting")
# get this node's key to judge how to init.
[status, key] = self.etcd.getkey("machines/runnodes/"+self.addr)
if status:
self.key = generatekey("machines/allnodes/"+self.addr)
@ -72,6 +74,8 @@ class Worker(object):
logger.info ("worker registered and checked the token")
# worker search all run nodes to judge how to init
# If the node in all node list, we will recover it.
# Otherwise, this node is new added in.
value = 'init-new'
[status, alllist] = self.etcd.listdir("machines/allnodes")
for node in alllist:
@ -153,6 +157,7 @@ class Worker(object):
# start service of worker
def start(self):
# worker change it state itself. Independedntly from master.
self.etcd.setkey("machines/runnodes/"+self.addr, "work")
self.thread_sendheartbeat = threading.Thread(target=self.sendheartbeat)
self.thread_sendheartbeat.start()