daemon: properly go through the data collect state for grpc session shutdown, also check and avoid repeating data collect or shutdown when already past those states
This commit is contained in:
parent
b762fe664b
commit
a23ef7d603
4 changed files with 19 additions and 7 deletions
daemon/core
|
@ -315,6 +315,7 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
|
||||||
"""
|
"""
|
||||||
logging.debug("stop session: %s", request)
|
logging.debug("stop session: %s", request)
|
||||||
session = self.get_session(request.session_id, context)
|
session = self.get_session(request.session_id, context)
|
||||||
|
session.data_collect()
|
||||||
session.shutdown()
|
session.shutdown()
|
||||||
return core_pb2.StopSessionResponse(result=True)
|
return core_pb2.StopSessionResponse(result=True)
|
||||||
|
|
||||||
|
|
|
@ -144,6 +144,7 @@ class CoreEmu:
|
||||||
result = False
|
result = False
|
||||||
if session:
|
if session:
|
||||||
logging.info("shutting session down: %s", _id)
|
logging.info("shutting session down: %s", _id)
|
||||||
|
session.data_collect()
|
||||||
session.shutdown()
|
session.shutdown()
|
||||||
result = True
|
result = True
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -106,6 +106,9 @@ class EventTypes(Enum):
|
||||||
def should_start(self) -> bool:
|
def should_start(self) -> bool:
|
||||||
return self.value > self.DEFINITION_STATE.value
|
return self.value > self.DEFINITION_STATE.value
|
||||||
|
|
||||||
|
def already_collected(self) -> bool:
|
||||||
|
return self.value >= self.DATACOLLECT_STATE.value
|
||||||
|
|
||||||
|
|
||||||
class ExceptionLevels(Enum):
|
class ExceptionLevels(Enum):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -770,10 +770,11 @@ class Session:
|
||||||
"""
|
"""
|
||||||
Shutdown all session nodes and remove the session directory.
|
Shutdown all session nodes and remove the session directory.
|
||||||
"""
|
"""
|
||||||
|
if self.state == EventTypes.SHUTDOWN_STATE:
|
||||||
|
logging.info("session(%s) state(%s) already shutdown", self.id, self.state)
|
||||||
|
return
|
||||||
logging.info("session(%s) state(%s) shutting down", self.id, self.state)
|
logging.info("session(%s) state(%s) shutting down", self.id, self.state)
|
||||||
if self.state != EventTypes.SHUTDOWN_STATE:
|
self.set_state(EventTypes.SHUTDOWN_STATE, send_event=True)
|
||||||
self.set_state(EventTypes.DATACOLLECT_STATE, send_event=True)
|
|
||||||
self.set_state(EventTypes.SHUTDOWN_STATE, send_event=True)
|
|
||||||
# clear out current core session
|
# clear out current core session
|
||||||
self.clear()
|
self.clear()
|
||||||
# shutdown sdt
|
# shutdown sdt
|
||||||
|
@ -1258,6 +1259,14 @@ class Session:
|
||||||
|
|
||||||
:return: nothing
|
:return: nothing
|
||||||
"""
|
"""
|
||||||
|
if self.state.already_collected():
|
||||||
|
logging.info(
|
||||||
|
"session(%s) state(%s) already data collected", self.id, self.state
|
||||||
|
)
|
||||||
|
return
|
||||||
|
logging.info("session(%s) state(%s) data collection", self.id, self.state)
|
||||||
|
self.set_state(EventTypes.DATACOLLECT_STATE, send_event=True)
|
||||||
|
|
||||||
# stop event loop
|
# stop event loop
|
||||||
self.event_loop.stop()
|
self.event_loop.stop()
|
||||||
|
|
||||||
|
@ -1279,10 +1288,8 @@ class Session:
|
||||||
self.update_control_iface_hosts(remove=True)
|
self.update_control_iface_hosts(remove=True)
|
||||||
|
|
||||||
# remove all four possible control networks
|
# remove all four possible control networks
|
||||||
self.add_remove_control_net(0, remove=True)
|
for i in range(4):
|
||||||
self.add_remove_control_net(1, remove=True)
|
self.add_remove_control_net(i, remove=True)
|
||||||
self.add_remove_control_net(2, remove=True)
|
|
||||||
self.add_remove_control_net(3, remove=True)
|
|
||||||
|
|
||||||
def short_session_id(self) -> str:
|
def short_session_id(self) -> str:
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Add table
Reference in a new issue