aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc
diff options
context:
space:
mode:
authorAlexander Smirnov <alex@ydb.tech>2024-04-16 09:11:59 +0000
committerAlexander Smirnov <alex@ydb.tech>2024-04-16 09:11:59 +0000
commit25de1d521ca218e2b040739fea77a39e9fc543e9 (patch)
tree21521d8866cf1462dbd52c071cf369974c29650e /contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc
parentbf444b8ed4d0f6bf17fd753e2cf88f9440012e87 (diff)
parent0a63d9ddc516f206f2b8745ce5e5dfa60190d755 (diff)
downloadydb-25de1d521ca218e2b040739fea77a39e9fc543e9.tar.gz
Merge branch 'rightlib' into mergelibs-240416-0910
Diffstat (limited to 'contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc')
-rw-r--r--contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc b/contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc
index abb20e245d..154e3471b8 100644
--- a/contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc
+++ b/contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc
@@ -31,10 +31,23 @@
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/sync.h"
#include "src/core/lib/gprpp/thd.h"
+#include "src/core/lib/gprpp/env.h"
+#include "src/core/lib/gpr/string.h"
namespace grpc {
namespace {
+size_t GetNextingThreadNumFromEnv() {
+ auto value = grpc_core::GetEnv("GRPC_NEXTING_THREAD_NUM_ENV");
+ if (!value.has_value()) return 0;
+ int parse_succeeded = gpr_parse_nonnegative_int(value->c_str());
+
+ if (parse_succeeded <= 0) {
+ return 0;
+ }
+ return static_cast<size_t>(parse_succeeded);
+}
+
gpr_once g_once_init_callback_alternative = GPR_ONCE_INIT;
grpc_core::Mutex* g_callback_alternative_mu;
@@ -55,6 +68,13 @@ struct CallbackAlternativeCQ {
cq = new CompletionQueue;
int num_nexting_threads =
grpc_core::Clamp(gpr_cpu_num_cores() / 2, 2u, 16u);
+
+ auto threads_limit_env = GetNextingThreadNumFromEnv();
+ if (threads_limit_env) {
+ gpr_log(GPR_INFO, "Nexting thread number changed via env from %d to %zd", num_nexting_threads, threads_limit_env);
+ num_nexting_threads = static_cast<int>(threads_limit_env);
+ }
+
nexting_threads = new std::vector<grpc_core::Thread>;
for (int i = 0; i < num_nexting_threads; i++) {
nexting_threads->emplace_back(