From edf74d24948250af3e61a91eb8b19ae287027c3c Mon Sep 17 00:00:00 2001 From: Roman Gershman Date: Sun, 27 Feb 2022 15:40:20 +0200 Subject: [PATCH] Add tcp_nodelay flag that is by default on --- helio | 2 +- src/server/dfly_main.cc | 3 +++ src/server/dragonfly_connection.cc | 11 ++++++++--- tools/docker/Dockerfile.alpine-prod | 1 + 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/helio b/helio index ec055f6..1b01326 160000 --- a/helio +++ b/helio @@ -1 +1 @@ -Subproject commit ec055f6bb2476aaebda441cbf1fc3c738bf5a4c6 +Subproject commit 1b01326ec8689e559dcf4c5be6f328055479e808 diff --git a/src/server/dfly_main.cc b/src/server/dfly_main.cc index 45909f2..88a02ff 100644 --- a/src/server/dfly_main.cc +++ b/src/server/dfly_main.cc @@ -36,6 +36,9 @@ void RunEngine(ProactorPool* pool, AcceptServer* acceptor, HttpListener<>* http) } // namespace dfly int main(int argc, char* argv[]) { + gflags::SetUsageMessage("dragonfly [FLAGS]"); + gflags::SetVersionString("v0.2"); + MainInitGuard guard(&argc, &argv); CHECK_GT(FLAGS_port, 0u); diff --git a/src/server/dragonfly_connection.cc b/src/server/dragonfly_connection.cc index ddcb3c1..7ec4e0a 100644 --- a/src/server/dragonfly_connection.cc +++ b/src/server/dragonfly_connection.cc @@ -1,4 +1,4 @@ -// Copyright 2021, Roman Gershman. All rights reserved. +// Copyright 2022, Roman Gershman. All rights reserved. // See LICENSE for licensing terms. // @@ -22,6 +22,8 @@ #include "util/tls/tls_socket.h" #include "util/uring/uring_socket.h" +DEFINE_bool(tcp_nodelay, true, "Configures dragonfly connections with socket option TCP_NODELAY"); + using namespace util; using namespace std; using nonstd::make_unexpected; @@ -137,9 +139,12 @@ void Connection::UnregisterShutdownHook(ShutdownHandle id) { void Connection::HandleRequests() { this_fiber::properties().set_name("DflyConnection"); - int val = 1; LinuxSocketBase* lsb = static_cast(socket_.get()); - CHECK_EQ(0, setsockopt(lsb->native_handle(), SOL_TCP, TCP_NODELAY, &val, sizeof(val))); + + if (FLAGS_tcp_nodelay) { + int val = 1; + CHECK_EQ(0, setsockopt(lsb->native_handle(), SOL_TCP, TCP_NODELAY, &val, sizeof(val))); + } auto remote_ep = lsb->RemoteEndpoint(); diff --git a/tools/docker/Dockerfile.alpine-prod b/tools/docker/Dockerfile.alpine-prod index 2f00324..75f4757 100644 --- a/tools/docker/Dockerfile.alpine-prod +++ b/tools/docker/Dockerfile.alpine-prod @@ -25,6 +25,7 @@ VOLUME /data WORKDIR /data COPY tools/docker/entrypoint.sh /usr/local/bin/entrypoint.sh COPY --from=builder /build/build-opt/dragonfly /usr/local/bin/ +RUN dragonfly -version ENTRYPOINT ["entrypoint.sh"]