Pārlūkot izejas kodu

dump userver commit, tweak a couple of places, tweak pg pool (#8114)

itrofimow 2 gadi atpakaļ
vecāks
revīzija
5d34290a71

+ 3 - 1
frameworks/C++/userver/userver-bare.dockerfile

@@ -1,7 +1,9 @@
 FROM ghcr.io/userver-framework/docker-userver-build-base:v1a AS builder
+RUN apt install -y libnghttp2-dev
+
 WORKDIR /src
 RUN git clone https://github.com/userver-framework/userver.git && \
-    cd userver && git checkout 5e33f7fe98604080b52208badef0d728c8d4aea0
+    cd userver && git checkout 7932d3f014926fc1502057a6833064e0d745b66c
 COPY userver_benchmark/ ./
 RUN mkdir build && cd build && \
     cmake -DUSERVER_IS_THE_ROOT_PROJECT=0 -DUSERVER_FEATURE_CRYPTOPP_BLAKE2=0 \

+ 3 - 1
frameworks/C++/userver/userver.dockerfile

@@ -1,7 +1,9 @@
 FROM ghcr.io/userver-framework/docker-userver-build-base:v1a AS builder
+RUN apt install -y libnghttp2-dev
+
 WORKDIR /src
 RUN git clone https://github.com/userver-framework/userver.git && \
-    cd userver && git checkout 5e33f7fe98604080b52208badef0d728c8d4aea0
+    cd userver && git checkout 7932d3f014926fc1502057a6833064e0d745b66c
 COPY userver_benchmark/ ./
 RUN mkdir build && cd build && \
     cmake -DUSERVER_IS_THE_ROOT_PROJECT=0 -DUSERVER_FEATURE_CRYPTOPP_BLAKE2=0 \

+ 0 - 1
frameworks/C++/userver/userver_benchmark/bare/simple_server.cpp

@@ -26,4 +26,3 @@ SimpleResponse SimpleServer::HandleRequest(std::string_view url) const {
 }
 
 }  // namespace userver_techempower::bare
-

+ 5 - 4
frameworks/C++/userver/userver_benchmark/common/db_helpers.cpp

@@ -1,7 +1,7 @@
 #include "db_helpers.hpp"
 
-#include <charconv>
 #include <cctype>
+#include <charconv>
 
 #include <userver/formats/json/inline.hpp>
 #include <userver/utils/rand.hpp>
@@ -16,7 +16,8 @@ int ParseFromQueryVal(std::string_view query_val) {
   }
 
   int parse_result{};
-  const auto [ptr, err] = std::from_chars(query_val.data(), query_val.data() + query_val.size(), parse_result);
+  const auto [ptr, err] = std::from_chars(
+      query_val.data(), query_val.data() + query_val.size(), parse_result);
   if (err != std::errc{} || ptr != query_val.data() + query_val.size()) {
     return 1;
   }
@@ -24,7 +25,7 @@ int ParseFromQueryVal(std::string_view query_val) {
   return std::min(500, std::max(1, parse_result));
 }
 
-}
+}  // namespace
 
 int GenerateRandomId() {
   return userver::utils::RandRange(1, kMaxWorldRows + 1);
@@ -52,7 +53,7 @@ int ParseParamFromQuery(std::string_view url, std::string_view name) {
   if (pos == std::string_view::npos) {
     return 1;
   }
-  pos += name.size() + 1; // +1 for '='
+  pos += name.size() + 1;  // +1 for '='
 
   std::size_t len = 0;
   while (pos + len < url.size() && std::isdigit(url[pos + len])) {

+ 4 - 1
frameworks/C++/userver/userver_benchmark/controllers/fortunes/handler.cpp

@@ -11,6 +11,9 @@ namespace userver_techempower::fortunes {
 
 namespace {
 
+const std::string kContentTypeHeader{"Content-Type"};
+const std::string kContentTypeTextHtml{"text/html; charset=utf-8"};
+
 struct Fortune final {
   int id;
   std::string message;
@@ -135,7 +138,7 @@ Handler::Handler(const userver::components::ComponentConfig& config,
 std::string Handler::HandleRequestThrow(
     const userver::server::http::HttpRequest& request,
     userver::server::request::RequestContext&) const {
-  request.GetHttpResponse().SetContentType("text/html; charset=utf-8");
+  request.GetHttpResponse().SetHeader(kContentTypeHeader, kContentTypeTextHtml);
   return GetResponse();
 }
 

+ 6 - 4
frameworks/C++/userver/userver_benchmark/controllers/plaintext/handler.cpp

@@ -2,15 +2,17 @@
 
 namespace userver_techempower::plaintext {
 
+const std::string kContentTypeHeader{"Content-Type"};
+const std::string kContentTypeTextPlain{"text/plain"};
+
 std::string Handler::HandleRequestThrow(
     const userver::server::http::HttpRequest& request,
     userver::server::request::RequestContext&) const {
-  request.GetHttpResponse().SetContentType("text/plain");
+  request.GetHttpResponse().SetHeader(kContentTypeHeader,
+                                      kContentTypeTextPlain);
   return GetResponse();
 }
 
-std::string Handler::GetResponse() {
-  return "Hello, World!";
-}
+std::string Handler::GetResponse() { return "Hello, World!"; }
 
 }  // namespace userver_techempower::plaintext

+ 29 - 1
frameworks/C++/userver/userver_benchmark/userver_techempower.cpp

@@ -7,6 +7,7 @@
 #include <userver/storages/postgres/component.hpp>
 #include <userver/storages/secdist/component.hpp>
 #include <userver/storages/secdist/provider_component.hpp>
+#include <userver/tracing/manager_component.hpp>
 
 #include "controllers/cached_queries/handler.hpp"
 #include "controllers/fortunes/handler.hpp"
@@ -21,22 +22,49 @@
 
 namespace userver_techempower {
 
+class NoopTracingManager final
+    : public userver::tracing::TracingManagerComponentBase {
+ public:
+  static constexpr std::string_view kName{"noop-tracing-manager"};
+  using userver::tracing::TracingManagerComponentBase::
+      TracingManagerComponentBase;
+
+ protected:
+  bool TryFillSpanBuilderFromRequest(
+      const userver::server::http::HttpRequest&,
+      userver::tracing::SpanBuilder&) const final {
+    return true;
+  }
+
+  void FillRequestWithTracingContext(
+      const userver::tracing::Span&,
+      userver::clients::http::RequestTracingEditor) const final {}
+
+  void FillResponseWithTracingContext(
+      const userver::tracing::Span&,
+      userver::server::http::HttpResponse&) const final {}
+};
+
 int Main(int argc, char* argv[]) {
   auto component_list =
       userver::components::MinimalServerComponentList()
+          // some required infra
           .Append<userver::clients::dns::Component>()
           .Append<userver::components::Secdist>()
           .Append<userver::components::DefaultSecdistProvider>()
           .Append<userver::components::TestsuiteSupport>()
           .Append<userver::components::Postgres>("hello-world-db")
+          // actual handlers
           .Append<plaintext::Handler>()
           .Append<json::Handler>()
           .Append<single_query::Handler>()
           .Append<multiple_queries::Handler>()
           .Append<updates::Handler>()
-          .Append<cached_queries::WorldCacheComponent>()
+          .Append<cached_queries::WorldCacheComponent>()  // cache component
           .Append<cached_queries::Handler>()
           .Append<fortunes::Handler>()
+          // tracing tweaks
+          .Append<NoopTracingManager>()
           // bare
           .Append<bare::SimpleRouter>()
           .Append<bare::SimpleServer>();

+ 1 - 7
frameworks/C++/userver/userver_configs/dynamic_config_fallback.json

@@ -37,13 +37,7 @@
 
   "POSTGRES_STATEMENT_METRICS_SETTINGS": {},
   "POSTGRES_CONNECTION_PIPELINE_ENABLED": false,
-  "POSTGRES_CONNECTION_POOL_SETTINGS": {
-    "hello_world": {
-      "min_pool_size": 75,
-      "max_pool_size": 100,
-      "max_queue_size": 512
-    }
-  },
+  "POSTGRES_CONNECTION_POOL_SETTINGS": {},
   "POSTGRES_CONNECTION_SETTINGS": {},
   "POSTGRES_DEFAULT_COMMAND_CONTROL": {
     "network_timeout_ms": 7000,

+ 6 - 1
frameworks/C++/userver/userver_configs/static_config.yaml

@@ -58,6 +58,10 @@ components_manager:
             config: /app/secure_data.json  # Values are supposed to be stored in this file
             missing-ok: false
 
+        noop-tracing-manager:
+        tracing-manager-locator:
+            component-name: noop-tracing-manager
+
         plaintext-handler:
             path: /plaintext
             method: GET
@@ -72,8 +76,9 @@ components_manager:
             dbalias: hello_world
             blocking_task_processor: fs-task-processor
             min_pool_size: 75
-            max_pool_size: 100
+            max_pool_size: 520
             max_queue_size: 512
+            connecting_limit: 15
 
         single-query-handler:
             path: /db