Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use dedicated exit codes when another primary GUI/Core process is running #7746

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/run_tribler_headless.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from tribler.core.components.session import Session
from tribler.core.config.tribler_config import TriblerConfig
from tribler.core.start_core import components_gen
from tribler.core.utilities.exit_codes import EXITCODE_ANOTHER_CORE_PROCESS_IS_RUNNING
from tribler.core.utilities.osutils import get_appstate_dir, get_root_state_directory
from tribler.core.utilities.path_util import Path
from tribler.core.utilities.process_locking import CORE_LOCK_FILENAME, try_acquire_file_lock
Expand Down Expand Up @@ -91,7 +92,7 @@ async def signal_handler(sig):
if not current_process_owns_lock:
msg = 'Another Core process is already running'
print(msg)
self.process_manager.sys_exit(1, msg)
self.process_manager.sys_exit(EXITCODE_ANOTHER_CORE_PROCESS_IS_RUNNING, msg)

print("Starting Tribler")

Expand Down
3 changes: 2 additions & 1 deletion src/tribler/core/start_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
from tribler.core.sentry_reporter.sentry_reporter import SentryReporter, SentryStrategy
from tribler.core.upgrade.version_manager import VersionHistory
from tribler.core.utilities import slow_coro_detection
from tribler.core.utilities.exit_codes import EXITCODE_ANOTHER_CORE_PROCESS_IS_RUNNING
from tribler.core.utilities.process_locking import CORE_LOCK_FILENAME, try_acquire_file_lock
from tribler.core.utilities.process_manager import ProcessKind
from tribler.core.utilities.process_manager.manager import setup_process_manager
Expand Down Expand Up @@ -195,7 +196,7 @@
if not current_process_owns_lock:
msg = 'Another Core process is already running'
logger.warning(msg)
process_manager.sys_exit(1, msg)
process_manager.sys_exit(EXITCODE_ANOTHER_CORE_PROCESS_IS_RUNNING, msg)

Check warning on line 199 in src/tribler/core/start_core.py

View check run for this annotation

Codecov / codecov/patch

src/tribler/core/start_core.py#L199

Added line #L199 was not covered by tests

version_history = VersionHistory(root_state_dir)
state_dir = version_history.code_version.directory
Expand Down
2 changes: 2 additions & 0 deletions src/tribler/core/utilities/exit_codes.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@

# Valid range for custom errors is 1..127
EXITCODE_DATABASE_IS_CORRUPTED = 99 # If the Core process finishes with this error, the GUI process restarts it.
EXITCODE_ANOTHER_GUI_PROCESS_IS_RUNNING = 98 # A normal situation when a user double-clicks on the torrent file.
EXITCODE_ANOTHER_CORE_PROCESS_IS_RUNNING = 97 # Should not happen if process locking is working correctly.
3 changes: 2 additions & 1 deletion src/tribler/core/utilities/tiny_tribler_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from tribler.core.components.session import Session
from tribler.core.config.tribler_config import TriblerConfig
from tribler.core.utilities.async_group.async_group import AsyncGroup
from tribler.core.utilities.exit_codes import EXITCODE_ANOTHER_CORE_PROCESS_IS_RUNNING

Check warning on line 13 in src/tribler/core/utilities/tiny_tribler_service.py

View check run for this annotation

Codecov / codecov/patch

src/tribler/core/utilities/tiny_tribler_service.py#L13

Added line #L13 was not covered by tests
from tribler.core.utilities.osutils import get_root_state_directory
from tribler.core.utilities.process_locking import CORE_LOCK_FILENAME, try_acquire_file_lock
from tribler.core.utilities.process_manager import ProcessKind, ProcessManager
Expand Down Expand Up @@ -86,7 +87,7 @@
if not current_process_owns_lock:
msg = 'Another Core process is already running'
self.logger.warning(msg)
self.process_manager.sys_exit(1, msg)
self.process_manager.sys_exit(EXITCODE_ANOTHER_CORE_PROCESS_IS_RUNNING, msg)

Check warning on line 90 in src/tribler/core/utilities/tiny_tribler_service.py

View check run for this annotation

Codecov / codecov/patch

src/tribler/core/utilities/tiny_tribler_service.py#L90

Added line #L90 was not covered by tests

def _enable_graceful_shutdown(self):
self.logger.info("Enabling graceful shutdown")
Expand Down
6 changes: 4 additions & 2 deletions src/tribler/gui/start_gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
)
from tribler.core.logger.logger import load_logger_config
from tribler.core.sentry_reporter.sentry_reporter import SentryStrategy
from tribler.core.utilities.exit_codes import EXITCODE_ANOTHER_GUI_PROCESS_IS_RUNNING
from tribler.core.utilities.process_locking import GUI_LOCK_FILENAME, try_acquire_file_lock
from tribler.core.utilities.process_manager import ProcessKind
from tribler.core.utilities.process_manager.manager import setup_process_manager
Expand Down Expand Up @@ -66,10 +67,11 @@ def run_gui(api_port: Optional[int], api_key: Optional[str], root_state_dir: Pat
app.installTranslator(translator)

if not current_process_owns_lock:
logger.info('GUI Application is already running.')
msg = 'Tribler GUI application is already running'
logger.info(msg)
app.send_torrent_file_path_to_primary_process()
logger.info('Close the current GUI application.')
process_manager.sys_exit(1, 'Tribler GUI application is already running')
process_manager.sys_exit(EXITCODE_ANOTHER_GUI_PROCESS_IS_RUNNING, msg)

logger.info('Start Tribler Window')
window = TriblerWindow(process_manager, app_manager, settings, root_state_dir,
Expand Down
Loading