Commit 8ba76a4f authored by Vincent Pelletier's avatar Vincent Pelletier

Close storage connection right after sending it a shutdown request.

Otherwise, storage shutdown would be handled as an unexpected
disconnection, and would cause the node to reappear as temporarily down.

git-svn-id: https://svn.erp5.org/repos/neo/trunk@1602 71dcc9de-d417-0410-9af5-da40c76e7ee4
parent ee265260
...@@ -77,20 +77,27 @@ class AdministrationHandler(MasterHandler): ...@@ -77,20 +77,27 @@ class AdministrationHandler(MasterHandler):
else: else:
# no connection to the node # no connection to the node
raise protocol.ProtocolError('no connection to the node') raise protocol.ProtocolError('no connection to the node')
node.setState(state)
elif state == NodeStates.DOWN and node.isStorage(): elif state == NodeStates.DOWN and node.isStorage():
node.setState(state)
for storage_conn in app.em.getConnectionListByUUID(uuid):
storage_conn.close()
# modify the partition table if required # modify the partition table if required
cell_list = [] cell_list = []
if modify_partition_table: if modify_partition_table:
# remove from pt # remove from pt
cell_list = app.pt.dropNode(node) cell_list = app.pt.dropNode(node)
app.nm.remove(node)
else: else:
# outdate node in partition table # outdate node in partition table
cell_list = app.pt.outdate() cell_list = app.pt.outdate()
app.broadcastPartitionChanges(cell_list) app.broadcastPartitionChanges(cell_list)
else:
node.setState(state)
# /!\ send the node information *after* the partition table change # /!\ send the node information *after* the partition table change
node.setState(state)
p = protocol.ack('state changed') p = protocol.ack('state changed')
conn.answer(p) conn.answer(p)
app.broadcastNodesInformation([node]) app.broadcastNodesInformation([node])
......
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