Skip to content

Commit 75bf3e4

Browse files
authored
Merge pull request #59 from JoshVanL/error-type-for-missing-task-result-0.10
[1.10] Task Result: Type error for missing task result
2 parents a7103a2 + ae2ec1e commit 75bf3e4

File tree

3 files changed

+63
-19
lines changed

3 files changed

+63
-19
lines changed

api/errors.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package api
2+
3+
import (
4+
"errors"
5+
"fmt"
6+
)
7+
8+
var (
9+
ErrInstanceNotFound = errors.New("no such instance exists")
10+
ErrNotStarted = errors.New("orchestration has not started")
11+
ErrNotCompleted = errors.New("orchestration has not yet completed")
12+
ErrNoFailures = errors.New("orchestration did not report failure details")
13+
ErrDuplicateInstance = errors.New("orchestration instance already exists")
14+
ErrIgnoreInstance = errors.New("ignore creating orchestration instance")
15+
ErrTaskCancelled = errors.New("task was cancelled")
16+
17+
EmptyInstanceID = InstanceID("")
18+
)
19+
20+
type UnknownTaskIDError struct {
21+
TaskID int32
22+
InstanceID string
23+
}
24+
25+
func NewUnknownTaskIDError(instanceID string, taskID int32) error {
26+
return &UnknownTaskIDError{
27+
TaskID: taskID,
28+
InstanceID: instanceID,
29+
}
30+
}
31+
32+
func (e *UnknownTaskIDError) Error() string {
33+
return fmt.Sprintf("unknown instance ID/task ID combo: %s/%d", e.InstanceID, e.TaskID)
34+
}
35+
36+
func IsUnknownTaskIDError(err error) bool {
37+
_, ok := err.(*UnknownTaskIDError)
38+
return ok
39+
}
40+
41+
type UnknownInstanceIDError struct {
42+
InstanceID string
43+
}
44+
45+
func NewUnknownInstanceIDError(instanceID string) error {
46+
return &UnknownInstanceIDError{
47+
InstanceID: instanceID,
48+
}
49+
}
50+
51+
func (e *UnknownInstanceIDError) Error() string {
52+
return fmt.Sprintf("unknown instance ID: %s", e.InstanceID)
53+
}
54+
55+
func IsUnknownInstanceIDError(err error) bool {
56+
_, ok := err.(*UnknownInstanceIDError)
57+
return ok
58+
}

api/orchestration.go

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package api
22

33
import (
44
"encoding/json"
5-
"errors"
65
"time"
76

87
"github.com/dapr/durabletask-go/api/protos"
@@ -11,18 +10,6 @@ import (
1110
"google.golang.org/protobuf/types/known/wrapperspb"
1211
)
1312

14-
var (
15-
ErrInstanceNotFound = errors.New("no such instance exists")
16-
ErrNotStarted = errors.New("orchestration has not started")
17-
ErrNotCompleted = errors.New("orchestration has not yet completed")
18-
ErrNoFailures = errors.New("orchestration did not report failure details")
19-
ErrDuplicateInstance = errors.New("orchestration instance already exists")
20-
ErrIgnoreInstance = errors.New("ignore creating orchestration instance")
21-
ErrTaskCancelled = errors.New("task was cancelled")
22-
23-
EmptyInstanceID = InstanceID("")
24-
)
25-
2613
type CreateOrchestrationAction = protos.CreateOrchestrationAction
2714

2815
const (

backend/local/task.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ package local
22

33
import (
44
"context"
5-
"fmt"
6-
"strconv"
75
"sync"
86

97
"github.com/dapr/durabletask-go/api"
@@ -37,14 +35,15 @@ func (be *TasksBackend) CompleteActivityTask(ctx context.Context, response *prot
3735
if be.deletePendingActivityTask(response.GetInstanceId(), response.GetTaskId(), response) {
3836
return nil
3937
}
40-
return fmt.Errorf("unknown instance ID/task ID combo: %s", response.GetInstanceId()+"/"+strconv.FormatInt(int64(response.GetTaskId()), 10))
38+
39+
return api.NewUnknownTaskIDError(response.GetInstanceId(), response.GetTaskId())
4140
}
4241

4342
func (be *TasksBackend) CancelActivityTask(ctx context.Context, instanceID api.InstanceID, taskID int32) error {
4443
if be.deletePendingActivityTask(string(instanceID), taskID, nil) {
4544
return nil
4645
}
47-
return fmt.Errorf("unknown instance ID/task ID combo: %s", string(instanceID)+"/"+strconv.FormatInt(int64(taskID), 10))
46+
return api.NewUnknownTaskIDError(instanceID.String(), taskID)
4847
}
4948

5049
func (be *TasksBackend) WaitForActivityCompletion(ctx context.Context, request *protos.ActivityRequest) (*protos.ActivityResponse, error) {
@@ -70,14 +69,14 @@ func (be *TasksBackend) CompleteOrchestratorTask(ctx context.Context, response *
7069
if be.deletePendingOrchestrator(response.GetInstanceId(), response) {
7170
return nil
7271
}
73-
return fmt.Errorf("unknown instance ID: %s", response.GetInstanceId())
72+
return api.NewUnknownInstanceIDError(response.GetInstanceId())
7473
}
7574

7675
func (be *TasksBackend) CancelOrchestratorTask(ctx context.Context, instanceID api.InstanceID) error {
7776
if be.deletePendingOrchestrator(string(instanceID), nil) {
7877
return nil
7978
}
80-
return fmt.Errorf("unknown instance ID: %s", instanceID)
79+
return api.NewUnknownInstanceIDError(instanceID.String())
8180
}
8281

8382
func (be *TasksBackend) WaitForOrchestratorCompletion(ctx context.Context, request *protos.OrchestratorRequest) (*protos.OrchestratorResponse, error) {

0 commit comments

Comments
 (0)