func()

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,
	}
}