-
Notifications
You must be signed in to change notification settings - Fork 1.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
Added description of failure scenarios when code uses databases and brokers together #3609
Conversation
@udidahan : Thanks for your contribution! The author(s) have been notified to review your proposed change. |
@EdPrice-MSFT is this more the kind of thing you had in mind? Thanks! |
IMPORTANT: When this content is ready to merge, you must add cc: @EdPrice-MSFT #label:"aq-pr-triaged" |
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.
Thank you for the contribution! A couple of comments from me.
- One common technique of making message handling idempotent is to check some persistent store, like a database, if the message has already been processed, and if so, not running the logic to process it again. | ||
- However, if the processing of the message includes database operations, specifically the insertion of new records with database-generated identifiers, as well as the emitting of new messages to the broker containing those identifiers, because there aren't distributed transactions which encompass both the database and the message broker, there can be a number of complications that can occur if the process running the code happens to fail, for example: | ||
- If the code emitting the messages runs before the database transaction is committed, which is how many developers work using the Unit of Work pattern, those messages can "escape" if the failure occurs between calling the broker and asking that the database transaction be committed. As the transaction rolls back, those database-generated IDs are also undone, leaving them available to other code which may be running at the same time. This can cause recipients of the "escaped" messages to processes the wrong database entries, hurting the overall consistency and correctness of your system. | ||
- For a deeper discussion on these failure scenarios and how to handle them, see [this webinar on the topic](https://particular.net/webinars/implementing-an-outbox). |
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.
- For a deeper discussion on these failure scenarios and how to handle them, see [this webinar on the topic](https://particular.net/webinars/implementing-an-outbox). |
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.
Please remove this. A link to your company's webinar, promoting your product, is not part of Azure Mission-critical guidance.
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.
Done.
docs/reference-architectures/containers/aks-mission-critical/mission-critical-data-platform.md
Outdated
Show resolved
Hide resolved
I was thinking more like having you create a new architecture, like a Solution Idea, which shows how Azure services work with your company's solutions. Regarding this PR... See feedback from @msimecek. Thanks, Martin! |
@udidahan : Thanks for your contribution! The author(s) have been notified to review your proposed change. |
Docs Build status updates of commit 6c9acd3:
|
File | Status | Preview URL | Details |
---|---|---|---|
docs/reference-architectures/containers/aks-mission-critical/mission-critical-data-platform.md | Details |
docs/reference-architectures/containers/aks-mission-critical/mission-critical-data-platform.md
- Line 165, Column 59: [Warning: hard-coded-locale - See documentation]
Link 'https://docs.microsoft.com/en-us/azure/architecture/best-practices/transactional-outbox-cosmos' contains locale code 'en-us'. For localizability, remove 'en-us' from links to most Microsoft sites.
- Line 165, Column 59: [Suggestion: docs-link-absolute - See documentation]
Absolute link 'https://docs.microsoft.com/en-us/azure/architecture/best-practices/transactional-outbox-cosmos' will be broken in isolated environments. Replace with a relative link.
For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:
- Try searching the docs.microsoft.com contributor guides
- Post your question in the Docs support channel
@udidahan : Thanks for your contribution! The author(s) have been notified to review your proposed change. |
Docs Build status updates of commit 17f0044: ✅ Validation status: passed
For more details, please refer to the build report. Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report. For any questions, please:
|
@udidahan : Thanks for your contribution! The author(s) have been notified to review your proposed change. |
Docs Build status updates of commit 0349a10: ✅ Validation status: passed
For more details, please refer to the build report. Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report. For any questions, please:
|
I hope these changes address all the concerns raised. Thanks. |
@udidahan : Thanks for your contribution! The author(s) have been notified to review your proposed change. |
Docs Build status updates of commit 5152ded: ❌ Validation status: errorsPlease follow instructions here which may help to resolve issue.
For more details, please refer to the build report. If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build. Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report. Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them. For any questions, please:
|
…ission-critical-data-platform.md Co-authored-by: Martin Simecek <[email protected]>
@udidahan : Thanks for your contribution! The author(s) have been notified to review your proposed change. |
Docs Build status updates of commit 1c9e4fb: ❌ Validation status: errorsPlease follow instructions here which may help to resolve issue.
For more details, please refer to the build report. If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build. Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report. Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them. For any questions, please:
|
Changes incorporated 👍🏼 |
docs/reference-architectures/containers/aks-mission-critical/mission-critical-data-platform.md
Outdated
Show resolved
Hide resolved
…ission-critical-data-platform.md
@ckittel : Thanks for your contribution! The author(s) have been notified to review your proposed change. |
Docs Build status updates of commit bcb5a07: ❌ Validation status: errorsPlease follow instructions here which may help to resolve issue.
For more details, please refer to the build report. If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build. Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report. Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them. For any questions, please:
|
Added a commit just to see if I can get the build to kick off again (might have an upstream problem here) |
@udidahan -- looks like our build process is currently being temperamental. Nothing for you to address here, we'll keep trying. |
Thanks for letting me know. I was a bit worried 😅 |
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.
Finished edit. Looks great!
Let's lead the RFC quote to set it up better. Finished edit pass.
@EdPrice-MSFT : Thanks for your contribution! The author(s) have been notified to review your proposed change. |
Docs Build status updates of commit edb5dee: ❌ Validation status: errorsPlease follow instructions here which may help to resolve issue.
For more details, please refer to the build report. If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build. Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report. Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them. For any questions, please:
|
I created an incident to resolve the build error: https://portal.microsofticm.com/imp/v3/incidents/details/336037212/home |
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.
Made an edit pass. Please review.
Looks great!
#Sign-Off |
Invalid command: '#sign-off'. Only the assigned author of one or more file in this PR can sign off. @msimecek |
Docs Build status updates of commit edb5dee: ❌ Validation status: errorsPlease follow instructions here which may help to resolve issue.
For more details, please refer to the build report. If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build. Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report. Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them. For any questions, please:
|
Thanks everyone for helping get this across the finish line. BTW, how long does it usually take for these merges to make their way to the public site? The reason I ask is that I don't see the changes on the public site: |
OK. I see that it's live now. Thank you all. |
When developers are building mission-critical systems, they need to be aware of the various failure scenarios and how to handle them.
This PR gives them one detailed example and points them at resources that explain the topic further.