Skip to content

Commit

Permalink
Expose QueryRejectedError (#1616)
Browse files Browse the repository at this point in the history
Expose QueryRejectedError
  • Loading branch information
Quinn-With-Two-Ns authored Sep 3, 2024
1 parent 1b6220d commit eb41d13
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 6 deletions.
1 change: 1 addition & 0 deletions internal/interceptor.go
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,7 @@ type ClientOutboundInterceptor interface {
TerminateWorkflow(context.Context, *ClientTerminateWorkflowInput) error

// QueryWorkflow intercepts client.Client.QueryWorkflow.
// If the query is rejected, QueryWorkflow will return an QueryRejectedError
// interceptor.Header will return a non-nil map for this context.
QueryWorkflow(context.Context, *ClientQueryWorkflowInput) (converter.EncodedValue, error)

Expand Down
17 changes: 11 additions & 6 deletions internal/internal_workflow_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -214,8 +214,8 @@ type (
paginate func(nexttoken []byte) (*workflowservice.GetWorkflowExecutionHistoryResponse, error)
}

// queryRejectedError is a wrapper for QueryRejected
queryRejectedError struct {
// QueryRejectedError is a wrapper for QueryRejected
QueryRejectedError struct {
queryRejected *querypb.QueryRejected
}
)
Expand Down Expand Up @@ -924,9 +924,10 @@ func (wc *WorkflowClient) QueryWorkflowWithOptions(ctx context.Context, request
QueryRejectCondition: request.QueryRejectCondition,
})
if err != nil {
if err, ok := err.(*queryRejectedError); ok {
var qerr *QueryRejectedError
if errors.As(err, &qerr) {
return &QueryWorkflowWithOptionsResponse{
QueryRejected: err.queryRejected,
QueryRejected: qerr.QueryRejected(),
}, nil
}
return nil, err
Expand Down Expand Up @@ -1994,7 +1995,7 @@ func (w *workflowClientInterceptor) QueryWorkflow(
}

if resp.QueryRejected != nil {
return nil, &queryRejectedError{
return nil, &QueryRejectedError{
queryRejected: resp.QueryRejected,
}
}
Expand Down Expand Up @@ -2241,7 +2242,11 @@ func (luh *lazyUpdateHandle) Get(ctx context.Context, valuePtr interface{}) erro
return resp.Result.Get(valuePtr)
}

func (q *queryRejectedError) Error() string {
func (q *QueryRejectedError) QueryRejected() *querypb.QueryRejected {
return q.queryRejected
}

func (q *QueryRejectedError) Error() string {
return fmt.Sprintf("query rejected: %s", q.queryRejected.Status.String())
}

Expand Down
4 changes: 4 additions & 0 deletions temporal/error.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,10 @@ type (

// UnknownExternalWorkflowExecutionError can be returned when external workflow doesn't exist
UnknownExternalWorkflowExecutionError = internal.UnknownExternalWorkflowExecutionError

// QueryRejectedError is a possible error that can be returned by
// ClientOutboundInterceptor.QueryWorkflow to indicate that the query was rejected by the server.
QueryRejectedError = internal.QueryRejectedError
)

var (
Expand Down

0 comments on commit eb41d13

Please sign in to comment.