Skip to content

Commit

Permalink
Add Failure to QueryFailure serviceerror (#199)
Browse files Browse the repository at this point in the history
  • Loading branch information
bergundy authored Dec 6, 2024
1 parent 4e70e5a commit 8a5e148
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 4 deletions.
4 changes: 2 additions & 2 deletions serviceerror/convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -135,9 +135,9 @@ func FromStatus(st *status.Status) error {
return newNotFound(st, nil)
}
case codes.InvalidArgument:
switch errDetails.(type) {
switch errDetails := errDetails.(type) {
case *errordetails.QueryFailedFailure:
return newQueryFailed(st)
return newQueryFailed(st, errDetails)
default:
return newInvalidArgument(st)
}
Expand Down
19 changes: 17 additions & 2 deletions serviceerror/query_failed.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,16 @@ import (
"google.golang.org/grpc/status"

"go.temporal.io/api/errordetails/v1"
"go.temporal.io/api/failure/v1"
)

type (
// QueryFailed represents query failed error.
QueryFailed struct {
Message string
// The full reason for this query failure. May not be available if the response is generated by an old
// SDK.
Failure *failure.Failure
st *status.Status
}
)
Expand All @@ -44,6 +48,14 @@ func NewQueryFailed(message string) error {
}
}

// NewQueryFailed returns new QueryFailed error.
func NewQueryFailedWithFailure(message string, failure *failure.Failure) error {
return &QueryFailed{
Message: message,
Failure: failure,
}
}

// Error returns string message.
func (e *QueryFailed) Error() string {
return e.Message
Expand All @@ -56,14 +68,17 @@ func (e *QueryFailed) Status() *status.Status {

st := status.New(codes.InvalidArgument, e.Message)
st, _ = st.WithDetails(
&errordetails.QueryFailedFailure{},
&errordetails.QueryFailedFailure{
Failure: e.Failure,
},
)
return st
}

func newQueryFailed(st *status.Status) error {
func newQueryFailed(st *status.Status, errDetails *errordetails.QueryFailedFailure) error {
return &QueryFailed{
Message: st.Message(),
Failure: errDetails.Failure,
st: st,
}
}

0 comments on commit 8a5e148

Please sign in to comment.