Skip to content

Commit f521433

Browse files
Gazizonokirobot-piglet
authored andcommitted
feat ydb: dedicate operation_timeout and cancel_after from client_timeout
------------------------ Note: by creating a PR or an issue you automatically agree to the CLA. See [CONTRIBUTING.md](https://github.com/userver-framework/userver/blob/develop/CONTRIBUTING.md). Feel free to remove this note, the agreement holds. --- Pull Request resolved: #1156 commit_hash:f33c507f243be074ee9a392cef98d5c7b2b894c0
1 parent 97306e5 commit f521433

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

ydb/src/ydb/impl/operation_settings.hpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ USERVER_NAMESPACE_BEGIN
1616

1717
namespace ydb::impl {
1818

19+
constexpr double kOperationTimeoutMultiplier = 0.8;
20+
1921
std::chrono::milliseconds GetBoundTimeout(std::chrono::milliseconds timeout, engine::Deadline deadline);
2022

2123
NYdb::NQuery::TExecuteQuerySettings ToExecuteQuerySettings(const QuerySettings& query_settings);
@@ -33,6 +35,23 @@ void ApplyToRequestSettings(
3335
}
3436
}
3537

38+
template <typename T>
39+
void ApplyToRequestSettings(
40+
NYdb::TOperationRequestSettings<T>& result,
41+
const OperationSettings& settings,
42+
engine::Deadline deadline
43+
) {
44+
auto timeout = GetBoundTimeout(settings.client_timeout_ms, deadline);
45+
46+
result.ClientTimeout(timeout);
47+
result.OperationTimeout(timeout * kOperationTimeoutMultiplier);
48+
result.CancelAfter(timeout * kOperationTimeoutMultiplier);
49+
50+
if (!settings.trace_id.empty()) {
51+
result.TraceId(impl::ToString(settings.trace_id));
52+
}
53+
}
54+
3655
template <typename T>
3756
T PrepareRequestSettings(const OperationSettings& settings, engine::Deadline deadline) {
3857
T result;

0 commit comments

Comments
 (0)