HDDS-7593: HSync and Lease Recovery
Epic: HDDS-7593 Feature branch: https://github.com/apache/ozone/tree/HDDS-7593
1. builds/intermittent test failures
Ran full CI for the latest commit for the feature branch two times. In both the runs all the tests has passed.
2. documentation
The new API is for developers to build upon. Not intended for end-users or administrators.
3. design, attached the docs
The design and architecture spans across multiple design docs
Design doc: Supporting Hflush and lease recovery
Ozone File Lease Recovery Protocol Detail Design
Support Incremental ChunkList in PutBlock requests
4. S3 compatibility
S3 behavior was not changed.
The new APIs (hsync, recoverLease, ...) are Hadoop file system APIs and are not supported by S3.
5. Docker-compose / acceptance tests
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 ~46.8% for both master and ~44.4% for the feature branch.
8. build time
Build time in CI of the latest commit on the feature branch (https://github.com/apache/ozone/commit/f7610c0012cd5e83769ff22eebeba092d3893d14) is similar to that of master (https://github.com/apache/ozone/actions/runs/9847590592): 1hr15m vs. 1hr15m.
9. possible incompatible changes/used feature flag
A number of feature flags were introduced:
ozone.client.incremental.chunk.list
ozone.client.stream.putblock.piggybacking
ozone.incremental.chunk.list
Additionally, new Datanode layout version "HBASE_SUPPORT" was added. A Datanode wire protocol version COMBINED_PUTBLOCK_WRITECHUNK_RPC was added too.
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.