From 6512a654f086b305980016071c6cfc4afb0e534b Mon Sep 17 00:00:00 2001 From: Ramya Rao Date: Wed, 5 Aug 2020 12:04:29 -0700 Subject: [PATCH] [Service Bus] Improve err msg when failing to senders and receivers (#10451) --- .../service-bus/src/core/messageReceiver.ts | 6 ++++++ .../service-bus/src/core/messageSender.ts | 4 ++++ .../service-bus/src/session/messageSession.ts | 13 +++++++++++-- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/sdk/servicebus/service-bus/src/core/messageReceiver.ts b/sdk/servicebus/service-bus/src/core/messageReceiver.ts index 965cd5dc9692..b3b4957980ef 100644 --- a/sdk/servicebus/service-bus/src/core/messageReceiver.ts +++ b/sdk/servicebus/service-bus/src/core/messageReceiver.ts @@ -337,6 +337,12 @@ export class MessageReceiver extends LinkEntity { this.name, err ); + + // Fix the unhelpful error messages for the OperationTimeoutError that comes from `rhea-promise`. + if ((err as MessagingError).code === "OperationTimeoutError") { + err.message = "Failed to create a receiver within allocated time and retry attempts."; + } + throw err; } } diff --git a/sdk/servicebus/service-bus/src/core/messageSender.ts b/sdk/servicebus/service-bus/src/core/messageSender.ts index b1d0bdc22df0..c086769430ea 100644 --- a/sdk/servicebus/service-bus/src/core/messageSender.ts +++ b/sdk/servicebus/service-bus/src/core/messageSender.ts @@ -460,6 +460,10 @@ export class MessageSender extends LinkEntity { this.name, err ); + // Fix the unhelpful error messages for the OperationTimeoutError that comes from `rhea-promise`. + if ((err as MessagingError).code === "OperationTimeoutError") { + err.message = "Failed to create a sender within allocated time and retry attempts."; + } throw err; } finally { this.isConnecting = false; diff --git a/sdk/servicebus/service-bus/src/session/messageSession.ts b/sdk/servicebus/service-bus/src/session/messageSession.ts index 4486d664d14b..f9408e653447 100644 --- a/sdk/servicebus/service-bus/src/session/messageSession.ts +++ b/sdk/servicebus/service-bus/src/session/messageSession.ts @@ -331,11 +331,11 @@ export class MessageSession extends LinkEntity { if (this.providedSessionId == null && receivedSessionId == null) { // Ideally this code path should never be reached as `MessageSession.createReceiver()` should fail instead // TODO: https://github.com/Azure/azure-sdk-for-js/issues/9775 to figure out why this code path indeed gets hit. - errorMessage = `No unlocked sessions were available`; + errorMessage = `Failed to create a receiver. No unlocked sessions available.`; } else if (this.providedSessionId != null && receivedSessionId !== this.providedSessionId) { // This code path is reached if the session is already locked by another receiver. // TODO: Check why the service would not throw an error or just timeout instead of giving a misleading successful receiver - errorMessage = `Failed to get a lock on the session ${this.providedSessionId}`; + errorMessage = `Failed to create a receiver for the requested session '${this.providedSessionId}'. It may be locked by another receiver.`; } if (errorMessage) { @@ -398,6 +398,15 @@ export class MessageSession extends LinkEntity { this.name, errObj ); + + // Fix the unhelpful error messages for the OperationTimeoutError that comes from `rhea-promise`. + if ((errObj as MessagingError).code === "OperationTimeoutError") { + if (this.providedSessionId) { + errObj.message = `Failed to create a receiver for the requested session '${this.providedSessionId}' within allocated time and retry attempts.`; + } else { + errObj.message = "Failed to create a receiver within allocated time and retry attempts."; + } + } throw errObj; } }