HDDS-10656: Atomic Key Overwrite
Epic: HDDS-10656 Feature branch: https://github.com/apache/ozone/tree/HDDS-10656-atomic-key-overwrite
1. builds/intermittent test failures
Intermittent test failures observed on the branch are the same as on master. Currently most of these are due to HDDS-10750, which will be fixed by Ratis 3.1.0.
Ran full CI for the latest commit on the feature branch 4 times. The first run had an unrelated failure, all tests passed in the following 3 runs.
2. documentation
The new API is for developers to build upon. Not intended for end-users or administrators.
3. design, attached the docs
Design doc added on the master branch (HDDS-10657, pull request).
4. S3 compatibility
N/A, S3 behavior was not changed.
5. Docker-compose / acceptance tests
Robot test was added in HDDS-10947 to cover rewrite of key created via multipart upload. Other use cases are covered by integration tests.
6. support of containers / Kubernetes
N/A, the new request does not affect support of containers.
7. coverage/code quality
Current coverage is ~58% for both master and the feature branch.
8. build time
Build time in CI of the latest commit on the feature branch (54f151946cc349087bf73de04aa85a5d128f4584) is similar to that of master (9f1f7ed23801f219a41d9dd9283cc6fdf57381c8): 19:02 vs. 18:36.
9. possible incompatible changes/used feature flag
A new OM version number was introduced to prevent new client sending atomic key overwrite request to old OM which does not support this feature.
10. third party dependencies/license changes
N/A, no new dependencies were introduced.
11. performance
The changes do not impact performance. If the new API is used, an additional parameter is passed and check on the server side. If the feature is not used, the code path is unchanged. No new locks or expensive checks have been added to facilitate the new feature.
12. security considerations
N/A. New method was added to the existing OM client API.