Skip to content
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

[WIP] Ensure popReceipt is updated between RenewMessage operations #1065

Draft
wants to merge 5 commits into
base: azure-storage-v12
Choose a base branch
from

Conversation

davidmrdavid
Copy link
Collaborator

@davidmrdavid davidmrdavid commented Apr 17, 2024

In order to update messages on Azure Storage, we need to provide an up-to-date "popReceipt" to the Azure Storage SDK. Otherwise, the request will fail with "404"-type errors. After every message update operation, the popReceipt for a message is updated.

From recent reports, we learned that in the new Azure Storage SDK, the popReceipt of an queueMessage object is not automatically updated in-place when the update API is called. Instead, the update API now returns an updateReceipt object containing the new popRecepit, and leaves the popReceipt in the queueMessage object intact, making it stale.
 
This suggests that we cannot simply access queueMessage.popReceipt to obtain the latest receipt, instead we'll need to maintain an extra mapping between messageIds and their latest popReceipts. This PR implements a rather naive mapping, but further refinement may be needed.

work in progress

@davidmrdavid
Copy link
Collaborator Author

would be great to add some kind of test to make sure the popReceipt is updated in future releases. This is an invariant we'd expect no matter what.

@davidmrdavid
Copy link
Collaborator Author

davidmrdavid commented Apr 18, 2024

note: let's refactor as per this PR (#1066 so that we actually update the popReceipt in the SDK queue object. Unclear yet if the PR should be merged as-is, or incorporated here. Needs some thinking.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant