-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MessageSender abstraction is broken for Path when Send-Via is used #6031
Comments
Added a validation PR against |
Thank you @SeanFeldman for reporting this. |
@nemakam this will be handled in 4.0.0? |
Yes |
@jsquire @AlexGhiondea have you had a chance to triage this one? This is a client bug. |
@SeanFeldman we will consider this for the next release of the Service Bus client. We currently do not have a release date for when that is going to be. |
@AlexGhiondea note that this will be a breaking change and will require a new major. |
@AlexGhiondea any updates about next (major) release and when this will be addressed? |
@AlexGhiondea @jsquire would be nice to label this issue as |
…er (#6941) Fixing #6031 In the case of Via-Sender defined by `viaSender = new MessageSender(connection, "path", "via")`, 1. Path will now point to wherever the amqp-link is created to. 2. viaEntityPath will point to via entity. 3. TransferDestinationPath will point to the final destination of the message
Closed in #6941 |
Needs to be a minor with the change made in PR. |
Actual Behavior
MessageSender
supports Send-Via feature. Send-Via is using a transfer queue to route message to their final destination when using transactional processing. The abstraction is represented by a public overload ofMessageSender
that takes in two pathsentitytPath
viaEntityPath
https://github.com/Azure/azure-service-bus-dotnet/blob/e278f87b0b3aa563ab055918e988baec9ec155a3/src/Microsoft.Azure.ServiceBus/Core/MessageSender.cs#L127-L135
The abstraction has been copied from the old client and works, but it's broken when
Path
andTransferDestinationPath
are queried back. That's because all public overloads are invoking an internal overload, swapping the two paths:https://github.com/Azure/azure-service-bus-dotnet/blob/e278f87b0b3aa563ab055918e988baec9ec155a3/src/Microsoft.Azure.ServiceBus/Core/MessageSender.cs#L132
where internal overload is
https://github.com/Azure/azure-service-bus-dotnet/blob/e278f87b0b3aa563ab055918e988baec9ec155a3/src/Microsoft.Azure.ServiceBus/Core/MessageSender.cs#L137-L144
assigning
viaEntityPath
tothis.Path
andentityPath
tothis.TransferDestinationPath
. Which is inverted.Expected Behavior
Path
and Send-Via/TransferDestinationPath
afterMessageSender
constructor is invoked should be identical to the values passed in.Repro
LinqPad repro script attached.
Recommendations
The fix should be released as a major version for the following reasons:
The text was updated successfully, but these errors were encountered: