Vous avez reçu un message "Your GitLab account has been locked ..." ? Pas d'inquiétude : lisez cet article https://docs.gricad-pages.univ-grenoble-alpes.fr/help/unlock/

Commit a0b50e77 authored by faquin's avatar faquin
Browse files

Ignore error if it has already been handled.

When a node die TakTuk may trigger two different messages, internal data
structures need protection to avoid accessing an already handled error.
parent d8567e5b
......@@ -235,32 +235,35 @@ class Isengard:
self.dead_node(sp_node)
self.propagate_state_info(sp_node)
else :
sp_node_key = arguments[PEER]+"-"+arguments[PEER_POS]
sp_node = self.spawned[sp_node_key]
nodes = [sp_node.name]
ranks = [str(sp_node.rank)]
childrens = self.get_children_by_position(sp_node, arguments[PEER_POS])
for children in childrens :
self.dead_node(children)
nodes.append(children.name)
nodes.append(str(children.rank))
self.dead_node(sp_node)
self.fire_node_dead(arguments[PEER], nodes, ranks)
# Advertise running commandes that nodes are deads
toremove = []
dispactch= False
for i in range(0, len(self.running_commands)) :
running_command = self.running_commands[i]
ret = running_command.node_deads(nodes, ranks)
if ret > -1:
dispactch = True
if ret == 2:
toremove.append(i)
logger.info("dead command propagation")
break
if dispactch:
for i in toremove:
del self.running_commands[i]
try:
sp_node_key = arguments[PEER]+"-"+arguments[PEER_POS]
sp_node = self.spawned[sp_node_key]
nodes = [sp_node.name]
ranks = [str(sp_node.rank)]
childrens = self.get_children_by_position(sp_node, arguments[PEER_POS])
for children in childrens :
self.dead_node(children)
nodes.append(children.name)
nodes.append(str(children.rank))
self.dead_node(sp_node)
self.fire_node_dead(arguments[PEER], nodes, ranks)
# Advertise running commandes that nodes are deads
toremove = []
dispactch= False
for i in range(0, len(self.running_commands)) :
running_command = self.running_commands[i]
ret = running_command.node_deads(nodes, ranks)
if ret > -1:
dispactch = True
if ret == 2:
toremove.append(i)
logger.info("dead command propagation")
break
if dispactch:
for i in toremove:
del self.running_commands[i]
except :
pass
self.spawned_lock.release()
def get_children_by_position(self, father, position) :
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment