-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MDEV-33075 Resolve server shutdown issues on macOS, Solaris, and FreeBSD
This commit addresses multiple server shutdown problems observed on macOS, Solaris, and FreeBSD: 1. Corrected a non-portable assumption where socket shutdown was expected to wake up poll() with listening sockets in the main thread. Use more robust self-pipe to wake up poll() by writing to the pipe's write end. 2. Fixed a random crash on macOS from pthread_kill(signal_handler) when the signal_handler was detached and the thread had already exited. Use more robust `kill(getpid(), SIGTERM)` to wake up the signal handler thread. 3. Made sure, that signal handler thread always exits once `abort_loop` is set, and also calls `my_thread_end()` and clears `signal_thread_in_use` when exiting. This fixes warning "1 thread did not exit" by `my_global_thread_end()` seen on FreeBSD/macOS when the process is terminated via signal. Additionally, the shutdown code underwent light refactoring for better readability and maintainability: - Modified `break_connect_loop()` to no longer wait for the main thread, aligning behavior with Windows (since 10.4). - Removed dead code related to the unused `USE_ONE_SIGNAL_HAND` preprocessor constant. - Eliminated support for `#ifndef HAVE_POLL` in `handle_connection_sockets` This code is also dead, since 10.4
- Loading branch information
Showing
1 changed file
with
53 additions
and
151 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters