Skip to content

Commit eb41d13

Browse files
authoredSep 3, 2024··
Expose QueryRejectedError (#1616)
Expose QueryRejectedError
1 parent 1b6220d commit eb41d13

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed
 

‎internal/interceptor.go

+1
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,7 @@ type ClientOutboundInterceptor interface {
375375
TerminateWorkflow(context.Context, *ClientTerminateWorkflowInput) error
376376

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

‎internal/internal_workflow_client.go

+11-6
Original file line numberDiff line numberDiff line change
@@ -214,8 +214,8 @@ type (
214214
paginate func(nexttoken []byte) (*workflowservice.GetWorkflowExecutionHistoryResponse, error)
215215
}
216216

217-
// queryRejectedError is a wrapper for QueryRejected
218-
queryRejectedError struct {
217+
// QueryRejectedError is a wrapper for QueryRejected
218+
QueryRejectedError struct {
219219
queryRejected *querypb.QueryRejected
220220
}
221221
)
@@ -924,9 +924,10 @@ func (wc *WorkflowClient) QueryWorkflowWithOptions(ctx context.Context, request
924924
QueryRejectCondition: request.QueryRejectCondition,
925925
})
926926
if err != nil {
927-
if err, ok := err.(*queryRejectedError); ok {
927+
var qerr *QueryRejectedError
928+
if errors.As(err, &qerr) {
928929
return &QueryWorkflowWithOptionsResponse{
929-
QueryRejected: err.queryRejected,
930+
QueryRejected: qerr.QueryRejected(),
930931
}, nil
931932
}
932933
return nil, err
@@ -1994,7 +1995,7 @@ func (w *workflowClientInterceptor) QueryWorkflow(
19941995
}
19951996

19961997
if resp.QueryRejected != nil {
1997-
return nil, &queryRejectedError{
1998+
return nil, &QueryRejectedError{
19981999
queryRejected: resp.QueryRejected,
19992000
}
20002001
}
@@ -2241,7 +2242,11 @@ func (luh *lazyUpdateHandle) Get(ctx context.Context, valuePtr interface{}) erro
22412242
return resp.Result.Get(valuePtr)
22422243
}
22432244

2244-
func (q *queryRejectedError) Error() string {
2245+
func (q *QueryRejectedError) QueryRejected() *querypb.QueryRejected {
2246+
return q.queryRejected
2247+
}
2248+
2249+
func (q *QueryRejectedError) Error() string {
22452250
return fmt.Sprintf("query rejected: %s", q.queryRejected.Status.String())
22462251
}
22472252

‎temporal/error.go

+4
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ type (
158158

159159
// UnknownExternalWorkflowExecutionError can be returned when external workflow doesn't exist
160160
UnknownExternalWorkflowExecutionError = internal.UnknownExternalWorkflowExecutionError
161+
162+
// QueryRejectedError is a possible error that can be returned by
163+
// ClientOutboundInterceptor.QueryWorkflow to indicate that the query was rejected by the server.
164+
QueryRejectedError = internal.QueryRejectedError
161165
)
162166

163167
var (

0 commit comments

Comments
 (0)
Please sign in to comment.