quiet certain connection errors when shutting down

Summary: Similar to D27155123 (1a56da1c6f).

Reviewed By: krallin

Differential Revision: D27805926

fbshipit-source-id: cf58a2e9b2ef92ca536f3b61b63fb42cfb1ec940
This commit is contained in:
Jan Mazur 2021-04-16 02:25:01 -07:00 committed by Facebook GitHub Bot
parent a0c85e4e2a
commit 77a205db89
8 changed files with 21 additions and 3 deletions

View File

@ -391,6 +391,7 @@ members = [
"permission_checker",
"phases",
"pushrebase",
"quiet_stream",
"reachabilityindex",
"reachabilityindex/common",
"reachabilityindex/if",

View File

@ -26,6 +26,7 @@ openssl = "0.10"
percent-encoding = "2.1"
permission_checker = { version = "0.1.0", path = "../permission_checker" }
pin-project = "0.4"
quiet_stream = { version = "0.1.0", path = "../quiet_stream" }
scuba_ext = { version = "0.1.0", path = "../common/scuba_ext" }
serde = { version = "=1.0.118", features = ["derive", "rc"] }
serde_derive = "1.0"

View File

@ -15,6 +15,7 @@ use gotham::handler::Handler;
use hyper::server::conn::Http;
use openssl::ssl::SslAcceptor;
use permission_checker::MononokeIdentitySet;
use quiet_stream::QuietShutdownStream;
use slog::{warn, Logger};
use std::panic::RefUnwindSafe;
use std::sync::Arc;
@ -48,6 +49,7 @@ pub async fn https<H>(
.await
.context("Error performing TLS handshake")?;
let tls_socket_data = TlsSocketData::from_ssl(
ssl_socket.ssl(),
trusted_proxy_idents.as_ref(),
@ -56,6 +58,8 @@ pub async fn https<H>(
let service = handler.clone().into_service(addr, Some(tls_socket_data));
let ssl_socket = QuietShutdownStream::new(ssl_socket);
Http::new()
.serve_connection(ssl_socket, service)
.await
@ -88,6 +92,8 @@ where
let service = handler.clone().into_service(addr, None);
let socket = QuietShutdownStream::new(socket);
Http::new()
.serve_connection(socket, service)
.await

View File

@ -0,0 +1,11 @@
[package]
name = "quiet_stream"
version = "0.1.0"
authors = ["Facebook"]
edition = "2018"
license = "GPLv2+"
[dependencies]
futures = { version = "0.3.13", features = ["async-await", "compat"] }
pin-project = "0.4"
tokio = { version = "0.2.25", features = ["full", "test-util"] }

View File

@ -44,8 +44,8 @@ mononoke_types = { version = "0.1.0", path = "../../mononoke_types" }
openssl = "0.10"
percent-encoding = "2.1"
permission_checker = { version = "0.1.0", path = "../../permission_checker" }
pin-project = "0.4"
qps = { version = "0.1.0", path = "../qps" }
quiet_stream = { version = "0.1.0", path = "../../quiet_stream" }
repo_client = { version = "0.1.0", path = "../../repo_client" }
scribe_ext = { version = "0.1.0", path = "../../common/scribe_ext" }
scuba_ext = { version = "0.1.0", path = "../../common/scuba_ext" }

View File

@ -53,8 +53,8 @@ use crate::http_service::MononokeHttpService;
use crate::repo_handlers::RepoHandler;
use crate::request_handler::{create_conn_logger, request_handler};
use crate::security_checker::ConnectionsSecurityChecker;
use crate::stream::QuietShutdownStream;
use qps::Qps;
use quiet_stream::QuietShutdownStream;
define_stats! {
prefix = "mononoke.connection_acceptor";

View File

@ -16,7 +16,6 @@ mod netspeedtest;
mod repo_handlers;
mod request_handler;
mod security_checker;
mod stream;
pub use crate::connection_acceptor::wait_for_connections_closed;