diff --git a/packages/@azure/servicebus/data-plane/lib/queueClient.ts b/packages/@azure/servicebus/data-plane/lib/queueClient.ts index 42f434898cd4..b9bcf53e5661 100644 --- a/packages/@azure/servicebus/data-plane/lib/queueClient.ts +++ b/packages/@azure/servicebus/data-plane/lib/queueClient.ts @@ -177,10 +177,12 @@ export class QueueClient extends Client { } before using "getSessionReceiver" to create a new one for the same sessionId` ); } - delete this._context.expiredMessageSessions[options.sessionId]; } this._context.isSessionEnabled = true; const messageSession = await MessageSession.create(this._context, options); + if (messageSession.sessionId) { + delete this._context.expiredMessageSessions[messageSession.sessionId]; + } return new SessionReceiver(this._context, messageSession); } } diff --git a/packages/@azure/servicebus/data-plane/lib/subscriptionClient.ts b/packages/@azure/servicebus/data-plane/lib/subscriptionClient.ts index 5d940b8af83c..b1eacf6dda73 100644 --- a/packages/@azure/servicebus/data-plane/lib/subscriptionClient.ts +++ b/packages/@azure/servicebus/data-plane/lib/subscriptionClient.ts @@ -219,10 +219,12 @@ export class SubscriptionClient extends Client { } before using "getSessionReceiver" to create a new one for the same sessionId` ); } - delete this._context.expiredMessageSessions[options.sessionId]; } this._context.isSessionEnabled = true; const messageSession = await MessageSession.create(this._context, options); + if (messageSession.sessionId) { + delete this._context.expiredMessageSessions[messageSession.sessionId]; + } return new SessionReceiver(this._context, messageSession); } diff --git a/packages/@azure/servicebus/data-plane/test/renewLockSessions.spec.ts b/packages/@azure/servicebus/data-plane/test/renewLockSessions.spec.ts index 10036c03ff44..a5ca2ecfa22a 100644 --- a/packages/@azure/servicebus/data-plane/test/renewLockSessions.spec.ts +++ b/packages/@azure/servicebus/data-plane/test/renewLockSessions.spec.ts @@ -420,8 +420,8 @@ async function testBatchReceiverManualLockRenewalErrorOnLockExpiry( should.equal(errorWasThrown, true, "Error thrown flag must be true"); - // Clean up any left over messages - sessionClient = await receiverClient.getSessionReceiver({ sessionId: TestMessage.sessionId }); + // Subsequent receivers for the same session should work as expected. + sessionClient = await receiverClient.getSessionReceiver(); const unprocessedMsgs = await sessionClient.receiveBatch(1); await unprocessedMsgs[0].complete(); }