void ProxygenServer::vmStopped() { m_shutdownState = ShutdownState::DRAINING_WRITES; if (!drained() && RuntimeOption::ServerGracefulShutdownWait > 0) { m_worker.getEventBase()->runInEventBaseThread([&] { std::chrono::seconds s(RuntimeOption::ServerGracefulShutdownWait); VLOG(4) << this << ": scheduling graceful timeout=" << s.count() << " port=" << m_port; scheduleTimeout(s); }); } else { forceStop(); } }
void ProxygenServer::onConnectionsDrained() { ++m_drainCount; Logger::Info("All connections drained from ProxygenServer drainCount=%d", m_drainCount); if (!drained()) { // both servers have to finish Logger::Verbose("%p: waiting for other server port=%d", this, m_port); return; } // Stop the graceful shutdown timer cancelTimeout(); // proceed to next shutdown phase doShutdown(); }