nghttpx: Refactor graceful shutdown in Http2Upstream
Instead of using bool flag, just stop prepare watcher.
This commit is contained in:
parent
9237d30e34
commit
d0bf247419
|
@ -787,24 +787,26 @@ void Http2Upstream::submit_goaway() {
|
||||||
|
|
||||||
void Http2Upstream::check_shutdown() {
|
void Http2Upstream::check_shutdown() {
|
||||||
int rv;
|
int rv;
|
||||||
if (shutdown_handled_) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto worker = handler_->get_worker();
|
auto worker = handler_->get_worker();
|
||||||
|
|
||||||
if (worker->get_graceful_shutdown()) {
|
if (!worker->get_graceful_shutdown()) {
|
||||||
shutdown_handled_ = true;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ev_prepare_stop(handler_->get_loop(), &prep_);
|
||||||
|
|
||||||
rv = nghttp2_submit_shutdown_notice(session_);
|
rv = nghttp2_submit_shutdown_notice(session_);
|
||||||
if (rv != 0) {
|
if (rv != 0) {
|
||||||
ULOG(FATAL, this) << "nghttp2_submit_shutdown_notice() failed: "
|
ULOG(FATAL, this) << "nghttp2_submit_shutdown_notice() failed: "
|
||||||
<< nghttp2_strerror(rv);
|
<< nghttp2_strerror(rv);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
handler_->signal_write();
|
handler_->signal_write();
|
||||||
|
|
||||||
ev_timer_start(handler_->get_loop(), &shutdown_timer_);
|
ev_timer_start(handler_->get_loop(), &shutdown_timer_);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
nghttp2_session_callbacks *create_http2_upstream_callbacks() {
|
nghttp2_session_callbacks *create_http2_upstream_callbacks() {
|
||||||
int rv;
|
int rv;
|
||||||
|
@ -870,9 +872,7 @@ Http2Upstream::Http2Upstream(ClientHandler *handler)
|
||||||
downstream_queue_(downstream_queue_size(handler->get_worker()),
|
downstream_queue_(downstream_queue_size(handler->get_worker()),
|
||||||
!get_config()->http2_proxy),
|
!get_config()->http2_proxy),
|
||||||
handler_(handler),
|
handler_(handler),
|
||||||
session_(nullptr),
|
session_(nullptr) {
|
||||||
shutdown_handled_(false) {
|
|
||||||
|
|
||||||
int rv;
|
int rv;
|
||||||
|
|
||||||
auto &http2conf = get_config()->http2;
|
auto &http2conf = get_config()->http2;
|
||||||
|
|
|
@ -132,7 +132,6 @@ private:
|
||||||
ClientHandler *handler_;
|
ClientHandler *handler_;
|
||||||
nghttp2_session *session_;
|
nghttp2_session *session_;
|
||||||
bool flow_control_;
|
bool flow_control_;
|
||||||
bool shutdown_handled_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nghttp2_session_callbacks *create_http2_upstream_callbacks();
|
nghttp2_session_callbacks *create_http2_upstream_callbacks();
|
||||||
|
|
Loading…
Reference in New Issue