diff options
author | asorotsky <asorotsky@yandex-team.com> | 2023-05-23 19:56:01 +0300 |
---|---|---|
committer | asorotsky <asorotsky@yandex-team.com> | 2023-05-23 19:56:01 +0300 |
commit | 50a138c06e4801795c1552ce13ffaf138bc1d8bd (patch) | |
tree | ee84a693495836d5b20a5b2fe59dcec80603b4e2 /library/cpp/lwtrace/control.cpp | |
parent | f8324c2315c93a6d2bf8ac371cd60a4f18a74edf (diff) | |
download | ydb-50a138c06e4801795c1552ce13ffaf138bc1d8bd.tar.gz |
proper handling for joined probes timestamps;
Diffstat (limited to 'library/cpp/lwtrace/control.cpp')
-rw-r--r-- | library/cpp/lwtrace/control.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/library/cpp/lwtrace/control.cpp b/library/cpp/lwtrace/control.cpp index d9404ff269..b0d40f7063 100644 --- a/library/cpp/lwtrace/control.cpp +++ b/library/cpp/lwtrace/control.cpp @@ -73,11 +73,18 @@ TTraceDeserializeStatus TManager::HandleTraceResponse( LWTRACK(DeserializationError, orbit, probe->Event.Name, probe->Event.GetProvider()); result.AddFailedEventName(v.GetName()); } else { + // in case of fork join probes would be like "start 0 fork 1 ....... join 10 forked 5 forked 6" ui64 timestamp = EpochNanosecondsToCycles(v.GetTimestampNanosec()); + if (timestamp > prev) { + timestamp = prev + (timestamp-prev)*timeScale + timeOffset; + } else { + timestamp += timeOffset; + } + orbit.AddProbe( probe, params, - prev + (timestamp-prev)*timeScale + timeOffset); + timestamp); probe->Event.Signature.DestroyParams(params); prev = timestamp; } |