Skip to content

Commit 407a703

Browse files
authored
Adding WorkflowType to "Workflow panic" log-message (#1259)
It is very expected to have this field, but customers have to walk through the stack trace, which is not always convinient especially with wrappers.
1 parent 624721d commit 407a703

File tree

2 files changed

+24
-9
lines changed

2 files changed

+24
-9
lines changed

internal/internal_task_handlers.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,6 +1240,7 @@ func (wth *workflowTaskHandlerImpl) completeWorkflow(
12401240
// Workflow panic
12411241
metricsScope.Counter(metrics.DecisionTaskPanicCounter).Inc(1)
12421242
wth.logger.Error("Workflow panic.",
1243+
zap.String(tagWorkflowType, task.WorkflowType.GetName()),
12431244
zap.String(tagWorkflowID, task.WorkflowExecution.GetWorkflowId()),
12441245
zap.String(tagRunID, task.WorkflowExecution.GetRunId()),
12451246
zap.String(tagPanicError, panicErr.Error()),

internal/internal_task_handlers_test.go

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,15 @@ func createTestEventTimerFired(eventID int64, id int) *s.HistoryEvent {
297297
TimerFiredEventAttributes: attr}
298298
}
299299

300+
func findLogField(entry observer.LoggedEntry, fieldName string) *zapcore.Field {
301+
for _, field := range entry.Context {
302+
if field.Key == fieldName {
303+
return &field
304+
}
305+
}
306+
return nil
307+
}
308+
300309
var testWorkflowTaskTasklist = "tl1"
301310

302311
func (t *TaskHandlersTestSuite) testWorkflowTaskWorkflowExecutionStartedHelper(params workerExecutionParameters) {
@@ -874,14 +883,7 @@ func (t *TaskHandlersTestSuite) TestWorkflowTask_NondeterministicLogNonexistingI
874883
ignoredWorkflowLogs := logs.FilterMessage("Ignored workflow panic error")
875884
require.Len(t.T(), ignoredWorkflowLogs.All(), 1)
876885

877-
// Find the ReplayError field
878-
withField := ignoredWorkflowLogs.All()[0]
879-
var replayErrorField *zapcore.Field
880-
for _, field := range withField.Context {
881-
if field.Key == "ReplayError" {
882-
replayErrorField = &field
883-
}
884-
}
886+
replayErrorField := findLogField(ignoredWorkflowLogs.All()[0], "ReplayError")
885887
require.NotNil(t.T(), replayErrorField)
886888
require.Equal(t.T(), zapcore.ErrorType, replayErrorField.Type)
887889
require.ErrorContains(t.T(), replayErrorField.Interface.(error),
@@ -928,12 +930,16 @@ func (t *TaskHandlersTestSuite) TestWorkflowTask_WorkflowPanics() {
928930
createTestEventDecisionTaskScheduled(2, &s.DecisionTaskScheduledEventAttributes{TaskList: &s.TaskList{Name: &taskList}}),
929931
createTestEventDecisionTaskStarted(3),
930932
}
933+
934+
obs, logs := observer.New(zap.ErrorLevel)
935+
logger := zap.New(obs)
936+
931937
task := createWorkflowTask(testEvents, 3, "PanicWorkflow")
932938
params := workerExecutionParameters{
933939
TaskList: taskList,
934940
WorkerOptions: WorkerOptions{
935941
Identity: "test-id-1",
936-
Logger: zap.NewNop(),
942+
Logger: logger,
937943
NonDeterministicWorkflowPolicy: NonDeterministicWorkflowPolicyBlockWorkflow,
938944
},
939945
}
@@ -946,6 +952,14 @@ func (t *TaskHandlersTestSuite) TestWorkflowTask_WorkflowPanics() {
946952
t.True(ok)
947953
t.EqualValues("WORKFLOW_WORKER_UNHANDLED_FAILURE", r.Cause.String())
948954
t.EqualValues("panicError", string(r.Details))
955+
956+
// Check that the error was logged
957+
panicLogs := logs.FilterMessage("Workflow panic.")
958+
require.Len(t.T(), panicLogs.All(), 1)
959+
960+
wfTypeField := findLogField(panicLogs.All()[0], tagWorkflowType)
961+
require.NotNil(t.T(), wfTypeField)
962+
require.Equal(t.T(), "PanicWorkflow", wfTypeField.String)
949963
}
950964

951965
func (t *TaskHandlersTestSuite) TestGetWorkflowInfo() {

0 commit comments

Comments
 (0)