-
Notifications
You must be signed in to change notification settings - Fork 2k
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
Releasing the messages immediately if prefetch is disabled and if there is no (active) downstream #26936
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for fixing my PR @anuchandy ! One test case I had troubles testing was whether it released messages if they expired while the same current work was polling and that the next work item would get new messages...
...ng-servicebus/src/main/java/com/azure/messaging/servicebus/SynchronousMessageSubscriber.java
Show resolved
Hide resolved
This pull request is protected by Check Enforcer. What is Check Enforcer?Check Enforcer helps ensure all pull requests are covered by at least one check-run (typically an Azure Pipeline). When all check-runs associated with this pull request pass then Check Enforcer itself will pass. Why am I getting this message?You are getting this message because Check Enforcer did not detect any check-runs being associated with this pull request within five minutes. This may indicate that your pull request is not covered by any pipelines and so Check Enforcer is correctly blocking the pull request being merged. What should I do now?If the check-enforcer check-run is not passing and all other check-runs associated with this PR are passing (excluding license-cla) then you could try telling Check Enforcer to evaluate your pull request again. You can do this by adding a comment to this pull request as follows: What if I am onboarding a new service?Often, new services do not have validation pipelines associated with them, in order to bootstrap pipelines for a new service, you can issue the following command as a pull request comment: |
Hi @conniey, I've added a UT. Regarding the expired messages, I later learned from Ramya that we could not release if it's already expired, so release should happen asap if there are no active receivers. |
The below diagram shows what is with this new release feature, adding it for future reference - quite_period: a period in the sliding window with no active receivers, any messages during this duration are released. As illustrated, we continue to use the sliding window, i.e., the prefetch queue is shared, and there is no correlation such as this set of messages belonging to this specific receive call. By design, a receive call can receive messages that arrived as a result of an earlier credit call (e.g., receive_3); those messages are unlikely to be expired as they just arrived |
...ing-servicebus/src/main/java/com/azure/messaging/servicebus/implementation/MessageUtils.java
Outdated
Show resolved
Hide resolved
...ng-servicebus/src/main/java/com/azure/messaging/servicebus/SynchronousMessageSubscriber.java
Show resolved
Hide resolved
Co-authored-by: Weidong Xu <[email protected]>
… when prefetch is disabled
…re is no (active) downstream (Azure#26936) * Adding DispositionStatus.RELEASED * Releasing messages that are expired. On dispose, any buffered messages are disposed. * Adding test for subscriber. * Add CHANGELOG. * Fixing broken test. * Release message if there is no active downstream (and when prefetch is disabled) * adding impl doc * Adding test for message release in no-prefetch scenario * Ensuring code consistency Co-authored-by: Weidong Xu <[email protected]> * Updating changelog to include message-release behavior of sync client when prefetch is disabled Co-authored-by: Connie Yau <[email protected]> Co-authored-by: Weidong Xu <[email protected]>
Description
What is not in the scope of this pr
All SDK Contribution checklist:
General Guidelines and Best Practices
Testing Guidelines