Skip to content

Commit c008fb4

Browse files
committed
comments
1 parent f139d88 commit c008fb4

File tree

3 files changed

+75
-33
lines changed

3 files changed

+75
-33
lines changed

common/metrics/tags.go

Lines changed: 55 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"strings"
77

88
enumspb "go.temporal.io/api/enums/v1"
9+
historypb "go.temporal.io/api/history/v1"
910
enumsspb "go.temporal.io/server/api/enums/v1"
1011
"go.temporal.io/server/common/locks"
1112
"go.temporal.io/server/common/primitives"
@@ -38,24 +39,31 @@ const (
3839
// Generic reason tag can be used anywhere a reason is needed.
3940
reason = "reason"
4041
// See server.api.enums.v1.ReplicationTaskType
41-
replicationTaskType = "replicationTaskType"
42-
replicationTaskPriority = "replicationTaskPriority"
43-
versioningBehavior = "versioning_behavior"
44-
isFirstAttempt = "first-attempt"
45-
workflowStatus = "workflow_status"
46-
workflowBehaviorBeforeOverride = "workflow_behavior_before_override"
47-
workflowBehaviorAfterOverride = "workflow_behavior_after_override"
48-
versioningOverrideOnNewWorkflow = "versioning_override_on_new_workflow"
49-
effectiveDeploymentBeforeTransition = "effective_deployment_before_transition"
50-
effectiveDeploymentAfterTransition = "effective_deployment_after_transition"
51-
queryType = "query_type"
52-
namespaceAllValue = "all"
53-
unknownValue = "_unknown_"
54-
totalMetricSuffix = "_total"
55-
tagExcludedValue = "_tag_excluded_"
56-
falseValue = "false"
57-
trueValue = "true"
58-
errorPrefix = "*"
42+
replicationTaskType = "replicationTaskType"
43+
replicationTaskPriority = "replicationTaskPriority"
44+
versioningBehavior = "versioning_behavior"
45+
isFirstAttempt = "first-attempt"
46+
workflowStatus = "workflow_status"
47+
behaviorBefore = "behavior_before"
48+
behaviorAfter = "behavior_after"
49+
runInitiator = "run_initiator"
50+
fromUnversioned = "from_unversioned"
51+
toUnversioned = "to_unversioned"
52+
queryType = "query_type"
53+
namespaceAllValue = "all"
54+
unknownValue = "_unknown_"
55+
totalMetricSuffix = "_total"
56+
tagExcludedValue = "_tag_excluded_"
57+
falseValue = "false"
58+
trueValue = "true"
59+
errorPrefix = "*"
60+
61+
newRun = "__new"
62+
existingRun = "__existing"
63+
childRun = "__child"
64+
canRun = "__can"
65+
retryRun = "__retry"
66+
cronRun = "__cron"
5967
)
6068

6169
// Tag is an interface to define metrics tags
@@ -394,21 +402,42 @@ func DestinationTag(value string) Tag {
394402
}
395403

396404
func VersioningBehaviorBeforeOverrideTag(behavior enumspb.VersioningBehavior) Tag {
397-
return &tagImpl{key: workflowBehaviorBeforeOverride, value: behavior.String()}
405+
return &tagImpl{key: behaviorBefore, value: behavior.String()}
398406
}
399407

400408
func VersioningBehaviorAfterOverrideTag(behavior enumspb.VersioningBehavior) Tag {
401-
return &tagImpl{key: workflowBehaviorAfterOverride, value: behavior.String()}
409+
return &tagImpl{key: behaviorAfter, value: behavior.String()}
402410
}
403411

404-
func VersioningOverrideOnNewWorkflowTag(isNewWorkflow bool) Tag {
405-
return &tagImpl{key: versioningOverrideOnNewWorkflow, value: strconv.FormatBool(isNewWorkflow)}
412+
func RunInitiatorTag(prevRunID string, attributes *historypb.WorkflowExecutionStartedEventAttributes) Tag {
413+
// UpdateWorkflowExecutionOptions API is the caller
414+
if attributes == nil {
415+
return &tagImpl{key: runInitiator, value: existingRun}
416+
}
417+
418+
// StartWorkflowExecution API is the caller
419+
if prevRunID == "" {
420+
return &tagImpl{key: runInitiator, value: newRun}
421+
} else if attributes.GetInitiator() == enumspb.CONTINUE_AS_NEW_INITIATOR_WORKFLOW {
422+
return &tagImpl{key: runInitiator, value: childRun}
423+
} else if attributes.GetInitiator() == enumspb.CONTINUE_AS_NEW_INITIATOR_RETRY {
424+
return &tagImpl{key: runInitiator, value: retryRun}
425+
} else if attributes.GetInitiator() == enumspb.CONTINUE_AS_NEW_INITIATOR_CRON_SCHEDULE {
426+
return &tagImpl{key: runInitiator, value: cronRun}
427+
}
428+
return &tagImpl{key: runInitiator, value: existingRun}
406429
}
407430

408-
func EffectiveDeploymentBeforeTransitionTag(version string) Tag {
409-
return &tagImpl{key: effectiveDeploymentBeforeTransition, value: version}
431+
func FromUnversionedTag(version string) Tag {
432+
if version == "_unversioned_" {
433+
return &tagImpl{key: fromUnversioned, value: trueValue}
434+
}
435+
return &tagImpl{key: fromUnversioned, value: falseValue}
410436
}
411437

412-
func EffectiveDeploymentAfterTransitionTag(version string) Tag {
413-
return &tagImpl{key: effectiveDeploymentAfterTransition, value: version}
438+
func ToUnversionedTag(version string) Tag {
439+
if version == "_unversioned_" {
440+
return &tagImpl{key: toUnversioned, value: trueValue}
441+
}
442+
return &tagImpl{key: toUnversioned, value: falseValue}
414443
}

common/worker_versioning/worker_versioning.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,17 @@ func OverrideIsPinned(override *workflowpb.VersioningOverride) bool {
375375
override.GetPinned().GetBehavior() == workflowpb.VersioningOverride_PINNED_OVERRIDE_BEHAVIOR_PINNED
376376
}
377377

378+
func ExtractVersioningBehaviorFromOverride(override *workflowpb.VersioningOverride) enumspb.VersioningBehavior {
379+
if override.GetAutoUpgrade() {
380+
return enumspb.VERSIONING_BEHAVIOR_AUTO_UPGRADE
381+
} else if override.GetPinned() != nil {
382+
return enumspb.VERSIONING_BEHAVIOR_PINNED
383+
}
384+
385+
//nolint:staticcheck // SA1019: worker versioning v0.31
386+
return override.GetBehavior()
387+
}
388+
378389
func ValidateVersioningOverride(override *workflowpb.VersioningOverride) error {
379390
if override == nil {
380391
return nil

service/history/workflow/mutable_state_impl.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2470,8 +2470,8 @@ func (ms *MutableStateImpl) AddWorkflowExecutionStartedEventWithOptions(
24702470
ms.metricsHandler.WithTags(
24712471
metrics.NamespaceTag(ms.namespaceEntry.Name().String()),
24722472
metrics.VersioningBehaviorBeforeOverrideTag(enumspb.VERSIONING_BEHAVIOR_UNSPECIFIED),
2473-
metrics.VersioningBehaviorAfterOverrideTag(startRequest.GetStartRequest().GetVersioningOverride().GetBehavior()), //nolint:staticcheck // SA1019: worker versioning v0.31
2474-
metrics.VersioningOverrideOnNewWorkflowTag(prevRunID == ""),
2473+
metrics.VersioningBehaviorAfterOverrideTag(worker_versioning.ExtractVersioningBehaviorFromOverride(startRequest.GetStartRequest().GetVersioningOverride())),
2474+
metrics.RunInitiatorTag(prevRunID, event.GetWorkflowExecutionStartedEventAttributes()),
24752475
),
24762476
).Record(1)
24772477
}
@@ -4817,18 +4817,20 @@ func (ms *MutableStateImpl) AddWorkflowExecutionOptionsUpdatedEvent(
48174817
links,
48184818
)
48194819
prevEffectiveVersioningBehavior := ms.GetEffectiveVersioningBehavior()
4820+
prevEffectiveDeployment := ms.GetEffectiveDeployment()
4821+
48204822
if err := ms.ApplyWorkflowExecutionOptionsUpdatedEvent(event); err != nil {
48214823
return nil, err
48224824
}
48234825

4824-
// Versioning Override set via UpdateWorkflowExecutionOptionsRequest
4825-
if versioningOverride != nil {
4826+
if !proto.Equal(ms.GetEffectiveDeployment(), prevEffectiveDeployment) ||
4827+
ms.GetEffectiveVersioningBehavior() != prevEffectiveVersioningBehavior {
48264828
metrics.WorkerDeploymentVersioningOverrideCounter.With(
48274829
ms.metricsHandler.WithTags(
48284830
metrics.NamespaceTag(ms.namespaceEntry.Name().String()),
48294831
metrics.VersioningBehaviorBeforeOverrideTag(prevEffectiveVersioningBehavior),
48304832
metrics.VersioningBehaviorAfterOverrideTag(ms.GetEffectiveVersioningBehavior()),
4831-
metrics.VersioningOverrideOnNewWorkflowTag(false),
4833+
metrics.RunInitiatorTag("", event.GetWorkflowExecutionStartedEventAttributes()),
48324834
),
48334835
).Record(1)
48344836
}
@@ -8158,8 +8160,8 @@ func (ms *MutableStateImpl) StartDeploymentTransition(deployment *deploymentpb.D
81588160
metrics.StartDeploymentTransitionCounter.With(
81598161
ms.metricsHandler.WithTags(
81608162
metrics.NamespaceTag(ms.namespaceEntry.Name().String()),
8161-
metrics.EffectiveDeploymentBeforeTransitionTag(worker_versioning.ExternalWorkerDeploymentVersionToString(worker_versioning.ExternalWorkerDeploymentVersionFromDeployment(preTransitionEffectiveDeployment))),
8162-
metrics.EffectiveDeploymentAfterTransitionTag(worker_versioning.ExternalWorkerDeploymentVersionToString(worker_versioning.ExternalWorkerDeploymentVersionFromDeployment(deployment))),
8163+
metrics.FromUnversionedTag(worker_versioning.ExternalWorkerDeploymentVersionToString(worker_versioning.ExternalWorkerDeploymentVersionFromDeployment(preTransitionEffectiveDeployment))),
8164+
metrics.ToUnversionedTag(worker_versioning.ExternalWorkerDeploymentVersionToString(worker_versioning.ExternalWorkerDeploymentVersionFromDeployment(deployment))),
81638165
),
81648166
).Record(1)
81658167

0 commit comments

Comments
 (0)