class TP2::Server
def graceful_shutdown
def graceful_shutdown @opts[:logger]&.info(message: 'Shutting down gracefully...') # stop listening close_all_server_fds @machine.snooze return if @connection_fiber_map.empty? # sleep for a bit, let requests finish @machine.sleep(PENDING_REQUESTS_GRACE_PERIOD) return if @connection_fiber_map.empty? # terminate pending fibers pending = @connection_fiber_map.keys signal = UM::Terminate.new pending.each { @machine.schedule(it, signal) } @machine.timeout(PENDING_REQUESTS_TIMEOUT_PERIOD, UM::Terminate) do @machine.join(*@connection_fiber_map.keys) rescue UM::Terminate # timeout on waiting for adapters to finish running, do nothing end end