in qldbdriver/session.go [57:100]
func (session *session) wrapError(ctx context.Context, err error, transID string) *txnError {
var awsErr awserr.RequestFailure
if errors.As(err, &awsErr) {
switch awsErr.Code() {
case qldbsession.ErrCodeInvalidSessionException:
match := regex.MatchString(awsErr.Message())
return &txnError{
transactionID: transID,
message: "Invalid Session Exception.",
err: awsErr,
canRetry: !match,
abortSuccess: false,
isISE: true,
}
case qldbsession.ErrCodeOccConflictException:
return &txnError{
transactionID: transID,
message: "OCC Conflict Exception.",
err: awsErr,
canRetry: true,
abortSuccess: true,
isISE: false,
}
}
if awsErr.StatusCode() == http.StatusInternalServerError || awsErr.StatusCode() == http.StatusServiceUnavailable {
return &txnError{
transactionID: transID,
message: "Service unavailable or internal error.",
err: awsErr,
canRetry: true,
abortSuccess: session.tryAbort(ctx),
isISE: false,
}
}
}
return &txnError{
transactionID: transID,
message: "",
err: err,
canRetry: false,
abortSuccess: session.tryAbort(ctx),
isISE: false,
}
}