From 44a8d29580cc8b452be1e6f8550d58c5b842a3b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Tich=C3=A1k?= Date: Fri, 24 Apr 2026 15:58:34 +0200 Subject: [PATCH] [OCTRL-1092] Add metrics to TryTransition --- common/monitoring/metric.go | 8 ++++++++ core/environment/environment.go | 5 +++++ core/environment/transition.go | 5 +---- core/environment/utils.go | 9 +++++++++ 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/common/monitoring/metric.go b/common/monitoring/metric.go index fe0ab8c9..b0f4f98a 100644 --- a/common/monitoring/metric.go +++ b/common/monitoring/metric.go @@ -78,6 +78,14 @@ const ( TIMEOUT = "timeout" ) +func (metric *Metric) AddError(err error) { + if err == nil { + metric.AddResult(SUCCESS) + } else { + metric.AddResult(ERROR) + } +} + func (metric *Metric) AddResult(result string) { metric.AddTag("result", result) } diff --git a/core/environment/environment.go b/core/environment/environment.go index fcdac227..176b80a2 100644 --- a/core/environment/environment.go +++ b/core/environment/environment.go @@ -1007,6 +1007,9 @@ func (env *Environment) TryTransition(t Transition) (err error) { WorkflowTemplateInfo: env.GetWorkflowInfo(), }) + metric := transitionMetric(env, t.eventName(), "try") + defer monitoring.TimerSendSingle(&metric, monitoring.Millisecond)() + err = t.check() if err != nil { the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ @@ -1020,6 +1023,7 @@ func (env *Environment) TryTransition(t Transition) (err error) { LastRequestUser: env.GetLastRequestUser(), WorkflowTemplateInfo: env.GetWorkflowInfo(), }) + metric.AddError(err) return } err = env.Sm.Event(context.Background(), t.eventName(), t) @@ -1048,6 +1052,7 @@ func (env *Environment) TryTransition(t Transition) (err error) { WorkflowTemplateInfo: env.GetWorkflowInfo(), }) } + metric.AddError(err) return } diff --git a/core/environment/transition.go b/core/environment/transition.go index ecb563bf..0cf34263 100644 --- a/core/environment/transition.go +++ b/core/environment/transition.go @@ -77,8 +77,5 @@ func (t baseTransition) eventName() string { } func (t baseTransition) transitionDoMetric(env *Environment) monitoring.Metric { - metric := monitoring.NewMetric("transition_do") - metric.AddTag("transition", t.name) - metric.AddTag("envId", env.Id().String()) - return metric + return transitionMetric(env, t.eventName(), "do") } diff --git a/core/environment/utils.go b/core/environment/utils.go index 7bc15c4f..e705dcaf 100644 --- a/core/environment/utils.go +++ b/core/environment/utils.go @@ -33,6 +33,7 @@ import ( "sort" "github.com/AliceO2Group/Control/common/logger/infologger" + "github.com/AliceO2Group/Control/common/monitoring" pb "github.com/AliceO2Group/Control/common/protos" "github.com/AliceO2Group/Control/core/task" "github.com/AliceO2Group/Control/core/task/sm" @@ -166,3 +167,11 @@ func HandleFailedGoError(err error, env *Environment) { env.setState("ERROR") } } + +func transitionMetric(env *Environment, transition string, funName string) monitoring.Metric { + metric := monitoring.NewMetric("transition") + metric.AddTag("function", funName) + metric.AddTag("transition", transition) + metric.AddTag("envId", env.Id().String()) + return metric +}