RFCs are a way for Atlassian to share what we’re working on with our valued developer community.
It’s a document for building shared understanding of a topic. It expresses a technical solution, but can also communicate how it should be built or even document standards. The most important aspect of an RFC is that a written specification facilitates feedback and drives consensus. It is not a tool for approving or committing to ideas, but more so a collaborative practice to shape an idea and to find serious flaws early.
Please respect our community guidelines: keep it welcoming and safe by commenting on the idea not the people (especially the author); keep it tidy by keeping on topic; empower the community by keeping comments constructive. Thanks!
Project Summary
This RFC proposes the implementation of transactional operations in Forge Key Value Store and Custom Entity store to address the need for atomicity in data operations, which is a significant pain point. The solution aims to provide a reliable way to perform multiple operations in a single request, ensuring data integrity and consistency.
Publish: 22 November 2024
Discuss: 06 December 2024
Resolve: 20 December 2024
Problem
Developers face challenges in ensuring data integrity when performing multiple operations due to the absence of transactional support in Forge. This limitation leads to issues like race conditions and data inconsistency, particularly in complex use cases.
Proposed Solution
- The proposed solution involves implementing atomic operations on top of Key Value Store and Custom Entities. This will allow developers to perform atomic operations, ensuring that all operations succeed or fail together.
- The solution will further include support for conditions on top of Entities, enhancing the ability to enforce business logic and data constraints.
Asks
While we would appreciate any reactions to this RFC, we are especially interested in learning more about:
- What use cases can you unlock with atomic operations on Key Value Store and Custom Entities, like ensuring all updates succeed together in a batch process?
- Conditions(for example equal to) will likely be supported only on the Entity Store, not the Key Value Store, due to the need for typed data sets. Would this possible limitation block any of your proposed use cases?
- Are you using transactions with other data stores because Forge doesn’t support them yet? If yes, do you use conditions like “equal to” for data validation?
- How many operations do you need in one transaction to support your task, such as updating multiple records at once?
- Is the order of operations within a transaction important for your use case? If yes, please help us understand the use case.
We welcome feedback and suggestions to refine the proposed solution and ensure it meets the needs of our developer community.