Skip to content

Commit

Permalink
Add field accessors for ActivityError (#508)
Browse files Browse the repository at this point in the history
  • Loading branch information
vitarb committed Aug 4, 2021
1 parent 75c27df commit b735e08
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
30 changes: 30 additions & 0 deletions internal/error.go
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,36 @@ func (e *ActivityError) Unwrap() error {
return e.cause
}

// ScheduledEventID returns event id of the scheduled workflow task corresponding to the activity.
func (e *ActivityError) ScheduledEventID() int64 {
return e.scheduledEventID
}

// StartedEventID returns event id of the started workflow task corresponding to the activity.
func (e *ActivityError) StartedEventID() int64 {
return e.startedEventID
}

// Identity returns identity of the worker that attempted activity execution.
func (e *ActivityError) Identity() string {
return e.identity
}

// ActivityType returns declared type of the activity.
func (e *ActivityError) ActivityType() *commonpb.ActivityType {
return e.activityType
}

// ActivityID return assigned identifier for the activity.
func (e *ActivityError) ActivityID() string {
return e.activityID
}

// RetryState returns details on why activity failed.
func (e *ActivityError) RetryState() enumspb.RetryState {
return e.retryState
}

// Error from error interface
func (e *ChildWorkflowExecutionError) Error() string {
msg := fmt.Sprintf("%s (type: %s, workflowID: %s, runID: %s, initiatedEventID: %d, startedEventID: %d)",
Expand Down
16 changes: 16 additions & 0 deletions internal/error_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,22 @@ func Test_GenericGoError(t *testing.T) {
require.Equal(t, "workflow error", err.Error())
}

func Test_ActivityErrorAccessors(t *testing.T) {
require := require.New(t)
err := NewApplicationError("app err", "", true, nil)
var applicationErr *ApplicationError
require.True(errors.As(err, &applicationErr))
err = NewActivityError(8, 22, "alex", &commonpb.ActivityType{Name: "activityType"}, "32283", enumspb.RETRY_STATE_NON_RETRYABLE_FAILURE, applicationErr)
var activityErr *ActivityError
require.True(errors.As(err, &activityErr))
require.Equal("32283", activityErr.ActivityID())
require.Equal(&commonpb.ActivityType{Name: "activityType"}, activityErr.ActivityType())
require.Equal(enumspb.RETRY_STATE_NON_RETRYABLE_FAILURE, activityErr.RetryState())
require.Equal("alex", activityErr.Identity())
require.Equal(int64(8), activityErr.ScheduledEventID())
require.Equal(int64(22), activityErr.StartedEventID())
}

func Test_ActivityNotRegistered(t *testing.T) {
registeredActivityFn, unregisteredActivitFn := "RegisteredActivity", "UnregisteredActivityFn"
s := &WorkflowTestSuite{}
Expand Down

0 comments on commit b735e08

Please sign in to comment.