From 67333f2fa1a01eef550d8c150ad4ab4891d6d647 Mon Sep 17 00:00:00 2001 From: Bartosz Behring Date: Sun, 14 Nov 2021 10:28:36 +0100 Subject: [PATCH] Introducing `ErrMsgAlreadyAckd` to have more detailed error msg when trying to ack msg that was already acknowledged. --- js.go | 2 +- nats.go | 1 + test/js_test.go | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/js.go b/js.go index bd22e9fed..38d7be5a3 100644 --- a/js.go +++ b/js.go @@ -2552,7 +2552,7 @@ func (m *Msg) ackReply(ackType []byte, sync bool, opts ...AckOpt) error { // Skip if already acked. if atomic.LoadUint32(&m.ackd) == 1 { - return ErrInvalidJSAck + return ErrMsgAlreadyAckd } m.Sub.mu.Lock() diff --git a/nats.go b/nats.go index 129c120cb..72759717e 100644 --- a/nats.go +++ b/nats.go @@ -157,6 +157,7 @@ var ( ErrPullSubscribeRequired = errors.New("nats: must use pull subscribe to bind to pull based consumer") ErrConsumerNotActive = errors.New("nats: consumer not active") ErrMsgNotFound = errors.New("nats: message not found") + ErrMsgAlreadyAckd = errors.New("nats: message was already acknowledged") ) func init() { diff --git a/test/js_test.go b/test/js_test.go index f2e850d96..079ea70f2 100644 --- a/test/js_test.go +++ b/test/js_test.go @@ -2571,7 +2571,7 @@ func TestJetStreamSubscribe_AckPolicy(t *testing.T) { } err = msg.AckSync(nats.AckWait(2 * time.Second)) - if err != nats.ErrInvalidJSAck { + if err != nats.ErrMsgAlreadyAckd { t.Errorf("Unexpected error: %v", err) } @@ -3006,7 +3006,7 @@ func TestJetStreamSubscribe_AckDup(t *testing.T) { for i := 0; i < 5; i++ { e := <-ch - if e != nats.ErrInvalidJSAck { + if e != nats.ErrMsgAlreadyAckd { t.Errorf("Expected error: %v", e) } }