From 9a2ca06bb7641d502624917401f54da0ce02cdb2 Mon Sep 17 00:00:00 2001 From: Luis Gustavo Date: Sat, 19 Jul 2025 12:46:29 -0300 Subject: [PATCH] fix: remove message from inventory when nack with response --- src/subscriber.ts | 2 ++ test/subscriber.ts | 26 ++++++++++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/subscriber.ts b/src/subscriber.ts index 156ebfe55..bd166e5ee 100644 --- a/src/subscriber.ts +++ b/src/subscriber.ts @@ -887,6 +887,8 @@ export class Subscriber extends EventEmitter { const latency = (Date.now() - startTime) / 1000; this._latencies.add(latency); + this._inventory.remove(message); + // No exception means Success. return AckResponses.Success; } diff --git a/test/subscriber.ts b/test/subscriber.ts index df95cc1b9..3ae8b3f43 100644 --- a/test/subscriber.ts +++ b/test/subscriber.ts @@ -698,10 +698,32 @@ describe('Subscriber', () => { }); describe('nack', () => { + it('should remove the message from the inventory', async () => { + const inventory: FakeLeaseManager = stubs.get('inventory'); + const stub = sandbox.stub(inventory, 'remove').withArgs(message); + + await subscriber.nack(message); + + assert.strictEqual(stub.callCount, 1); + }); + }); + + describe('nackWithResponse', () => { + it('should remove the message from the inventory', async () => { + const inventory: FakeLeaseManager = stubs.get('inventory'); + const stub = sandbox.stub(inventory, 'remove').withArgs(message); + + await subscriber.nackWithResponse(message); + + assert.strictEqual(stub.callCount, 1); + }); + }); + + describe('ackWithResponse', () => { it('should modAck the message with a 0 deadline', async () => { const stub = sandbox.stub(subscriber, 'modAck'); - await subscriber.nack(message); + await subscriber.ackWithResponse(message); const [msg, deadline] = stub.lastCall.args; @@ -713,7 +735,7 @@ describe('Subscriber', () => { const inventory: FakeLeaseManager = stubs.get('inventory'); const stub = sandbox.stub(inventory, 'remove').withArgs(message); - await subscriber.nack(message); + await subscriber.ackWithResponse(message); assert.strictEqual(stub.callCount, 1); });