From 90dea1e48b36549266a04e41175b2858649e0faa Mon Sep 17 00:00:00 2001 From: Bulat Gayazov Date: Wed, 25 Mar 2026 16:29:25 +0000 Subject: [PATCH] feat ydb: dedicate operation_timeout and cancel_after from client_timeout --- ydb/src/ydb/impl/operation_settings.hpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/ydb/src/ydb/impl/operation_settings.hpp b/ydb/src/ydb/impl/operation_settings.hpp index 5cc4f073a8b2..15a65f87b064 100644 --- a/ydb/src/ydb/impl/operation_settings.hpp +++ b/ydb/src/ydb/impl/operation_settings.hpp @@ -16,6 +16,8 @@ USERVER_NAMESPACE_BEGIN namespace ydb::impl { +constexpr double kOperationTimeoutMultiplier = 0.8; + std::chrono::milliseconds GetBoundTimeout(std::chrono::milliseconds timeout, engine::Deadline deadline); NYdb::NQuery::TExecuteQuerySettings ToExecuteQuerySettings(const QuerySettings& query_settings); @@ -33,6 +35,23 @@ void ApplyToRequestSettings( } } +template +void ApplyToRequestSettings( + NYdb::TOperationRequestSettings& result, + const OperationSettings& settings, + engine::Deadline deadline +) { + auto timeout = GetBoundTimeout(settings.client_timeout_ms, deadline); + + result.ClientTimeout(timeout); + result.OperationTimeout(timeout * kOperationTimeoutMultiplier); + result.CancelAfter(timeout * kOperationTimeoutMultiplier); + + if (!settings.trace_id.empty()) { + result.TraceId(impl::ToString(settings.trace_id)); + } +} + template T PrepareRequestSettings(const OperationSettings& settings, engine::Deadline deadline) { T result;