From 6dae4df22ffd010444c0ac82b5c753e4be24ab6b Mon Sep 17 00:00:00 2001 From: ivanmorozov333 Date: Sun, 19 Jan 2025 11:18:09 +0300 Subject: [PATCH] fix thread sanitizer alarms (#13522) --- .../engines/reader/common_reader/iterator/fetching.cpp | 4 ++-- .../engines/reader/common_reader/iterator/fetching.h | 10 ++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/ydb/core/tx/columnshard/engines/reader/common_reader/iterator/fetching.cpp b/ydb/core/tx/columnshard/engines/reader/common_reader/iterator/fetching.cpp index 1d418211244d..800ffb2dcbed 100644 --- a/ydb/core/tx/columnshard/engines/reader/common_reader/iterator/fetching.cpp +++ b/ydb/core/tx/columnshard/engines/reader/common_reader/iterator/fetching.cpp @@ -79,8 +79,8 @@ TString TFetchingScript::DebugString() const { return ""; } sb << "{branch:" << BranchName << ";"; - if (FinishInstant && StartInstant) { - sb << "duration:" << *FinishInstant - *StartInstant << ";"; + if (AtomicGet(FinishInstant) && AtomicGet(StartInstant)) { + sb << "duration:" << AtomicGet(FinishInstant) - AtomicGet(StartInstant) << ";"; } sb << "steps_10Ms:[" << sbBranch << "]}"; diff --git a/ydb/core/tx/columnshard/engines/reader/common_reader/iterator/fetching.h b/ydb/core/tx/columnshard/engines/reader/common_reader/iterator/fetching.h index 34b60a608f21..d0d6ae6d5840 100644 --- a/ydb/core/tx/columnshard/engines/reader/common_reader/iterator/fetching.h +++ b/ydb/core/tx/columnshard/engines/reader/common_reader/iterator/fetching.h @@ -109,8 +109,8 @@ class TFetchingScript { private: YDB_ACCESSOR(TString, BranchName, "UNDEFINED"); std::vector> Steps; - std::optional StartInstant; - std::optional FinishInstant; + TAtomic StartInstant; + TAtomic FinishInstant; public: TFetchingScript(const TSpecialReadContext& context); @@ -122,14 +122,12 @@ class TFetchingScript { } void AddStepDuration(const ui32 index, const TDuration d) { - FinishInstant = TMonotonic::Now(); + AtomicSet(FinishInstant, TMonotonic::Now().MicroSeconds()); GetStep(index)->AddDuration(d); } void OnExecute() { - if (!StartInstant) { - StartInstant = TMonotonic::Now(); - } + AtomicCas(&StartInstant, TMonotonic::Now().MicroSeconds(), 0); } TString DebugString() const;