aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp
diff options
context:
space:
mode:
authorivanmorozov <ivanmorozov@yandex-team.com>2023-04-11 20:13:07 +0300
committerivanmorozov <ivanmorozov@yandex-team.com>2023-04-11 20:13:07 +0300
commitfc0abe8a74268234d67d4046b4177a7ef061da3a (patch)
treebb71fbad961dbfdb3316171dd83e4b72699ee229 /library/cpp
parent952712c0ec8005e7ed4290dfdd1a345514b7564a (diff)
downloadydb-fc0abe8a74268234d67d4046b4177a7ef061da3a.tar.gz
use 200 chars solomon-tag-limit
Diffstat (limited to 'library/cpp')
-rw-r--r--library/cpp/actors/core/actor.h3
-rw-r--r--library/cpp/actors/util/local_process_key.h16
2 files changed, 15 insertions, 4 deletions
diff --git a/library/cpp/actors/core/actor.h b/library/cpp/actors/core/actor.h
index 7cc0baec982..b91618a5f57 100644
--- a/library/cpp/actors/core/actor.h
+++ b/library/cpp/actors/core/actor.h
@@ -630,7 +630,8 @@ namespace NActors {
using TActorActivity = decltype(((TDerived*)nullptr)->ActorActivityType());
return TEnumProcessKey<TActorActivityTag, TActorActivity>::GetIndex(TDerived::ActorActivityType());
} else {
- return TLocalProcessExtKey<TActorActivityTag, TDerived>::GetIndex();
+ // 200 characters is limit for solomon metric tag length
+ return TLocalProcessExtKey<TActorActivityTag, TDerived, 200>::GetIndex();
}
}
diff --git a/library/cpp/actors/util/local_process_key.h b/library/cpp/actors/util/local_process_key.h
index b82db5cfe5f..4d000db1980 100644
--- a/library/cpp/actors/util/local_process_key.h
+++ b/library/cpp/actors/util/local_process_key.h
@@ -12,7 +12,7 @@ class TLocalProcessKeyState {
template <typename U, const char* Name>
friend class TLocalProcessKey;
-template <typename U, class TClass>
+template <typename U, class TClass, ui32 KeyLengthLimit>
friend class TLocalProcessExtKey;
template <typename U, typename EnumT>
friend class TEnumProcessKey;
@@ -92,7 +92,7 @@ private:
inline static size_t Index = TLocalProcessKeyState<T>::GetInstance().Register(Name);
};
-template <typename T, class TClass>
+template <typename T, class TClass, ui32 KeyLengthLimit = 0>
class TLocalProcessExtKey {
public:
static TStringBuf GetName() {
@@ -104,8 +104,18 @@ public:
}
private:
+
+ static TString TypeNameRobust() {
+ const TString className = TypeName<TClass>();
+ if (KeyLengthLimit && className.size() > KeyLengthLimit) {
+ return className.substr(0, KeyLengthLimit - 3) + "...";
+ } else {
+ return className;
+ }
+ }
+
static const inline TString Name = TypeName<TClass>();
- inline static size_t Index = TLocalProcessKeyState<T>::GetInstance().Register(TypeName<TClass>());
+ inline static size_t Index = TLocalProcessKeyState<T>::GetInstance().Register(TypeNameRobust());
};
template <typename T, typename EnumT>