johntomcat7408-cmyk opened a new pull request, #4311:
URL: https://github.com/apache/amoro/pull/4311
## Why are the changes needed?
Snapshot expiration planning uses Iceberg's global worker pool by default.
Under load, expiration planning can occupy that shared pool while
self-optimizing commits wait for worker futures, leaving tables in the
committing state for a long time.
Close #4264.
## Brief change log
- Add a process-wide planning pool dedicated to snapshot expiration.
- Configure its size with `expire-snapshots.plan-thread-count` (default:
`10`) from the Iceberg process factory.
- Pass the dedicated executor to `ExpireSnapshots.planWith(...)`.
- Add regression coverage for pool isolation, configuration validation, and
the expiration call path.
## How was this patch tested?
- [x] Add test cases that check positive and negative cases.
- [x] Screenshots are not applicable.
- [x] Run tests locally and on a Linux VM.
Validated on Linux with both JDK 11 and JDK 17:
```bash
./mvnw test \
-pl amoro-ams \
-am \
-Pskip-dashboard-build \
-Dtest=TestIcebergThreadPools,TestIcebergTableMaintainer,TestIcebergProcessFactory,TestSnapshotExpireIceberg
\
-Dsurefire.failIfNoSpecifiedTests=false
```
Both runs completed with `BUILD SUCCESS`. The focused unit tests passed
without failures or errors, and `TestSnapshotExpireIceberg` reported 0 failures
and 0 errors.
## Documentation
- Does this pull request introduce a new feature? No; it isolates an
existing maintenance operation and adds a tuning option.
- The default option is included in `process-factories.yaml`, and the pool
scope and fallback behavior are documented in JavaDocs.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]