Skip to content

Commit

Permalink
Merge pull request #6969 from kozlovsky/fix/shutdown_request_resending
Browse files Browse the repository at this point in the history
Re-send shutdown request from GUI to Core if the previous shutdown request was canceled
  • Loading branch information
kozlovsky authored Jul 13, 2022
2 parents b75fa1b + e3f2bf5 commit 12ffc03
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/tribler/core/components/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@ def set_startup_exception(self, exc: Exception):
self._startup_exception = exc

async def shutdown(self):
self.logger.info('Session shutdown process started')
await gather(*[create_task(component.stop()) for component in self.components.values()])

def __enter__(self):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,6 @@ def setup_routes(self):
}
)
async def shutdown(self, request):
self._logger.info('Received a shutdown request from GUI')
self.shutdown_callback()
return RESTResponse({"shutdown": True})
1 change: 1 addition & 0 deletions src/tribler/core/start_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ async def core_session(config: TriblerConfig, components: List[Component]):

# SHUTDOWN
await session.shutdown_event.wait()
logger.info('Shutdown event fired')

if not config.gui_test_mode:
session.notifier[notifications.tribler_shutdown_state]("Saving configuration...")
Expand Down
17 changes: 15 additions & 2 deletions src/tribler/gui/core_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,9 +146,22 @@ def stop(self, quit_app_on_core_finished=True):

need_to_shutdown_core = (self.core_process or self.core_connected) and not self.core_finished
if need_to_shutdown_core:
self._logger.info("Sending shutdown request to Tribler Core")
self.events_manager.shutting_down = True
TriblerNetworkRequest("shutdown", lambda _: None, method="PUT", priority=QNetworkRequest.HighPriority)

def shutdown_request_processed(response):
self._logger.info(f"Shutdown request was processed by Core. Response: {response}")

def send_shutdown_request(initial=False):
if initial:
self._logger.info("Sending shutdown request to Tribler Core")
else:
self._logger.warning("Re-sending shutdown request to Tribler Core")

TriblerNetworkRequest("shutdown", shutdown_request_processed, method="PUT",
priority=QNetworkRequest.HighPriority, on_cancel=send_shutdown_request)

send_shutdown_request(initial=True)

elif self.should_quit_app_on_core_finished:
self._logger.info('Core finished, quitting GUI application')
self.app_manager.quit_application()
Expand Down
1 change: 1 addition & 0 deletions src/tribler/gui/tribler_request_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,7 @@ def cancel_request(self):
"""
Cancel the request by aborting the reply handle and calling on_cancel if available.
"""
logging.warning(f'Request from GUI to Core was canceled: {self.url}')
if self.reply:
self.reply.abort()
self.on_cancel()
Expand Down

0 comments on commit 12ffc03

Please sign in to comment.