[feat](iceberg) HDFS lazy open + iceberg delete file file_size propagation - #66773
[feat](iceberg) HDFS lazy open + iceberg delete file file_size propagation#66773cambyzju wants to merge 14 commits into
Conversation
|
Thank you for your contribution to Apache Doris. Please clearly describe your PR:
|
|
run buildall |
TPC-H: Total hot run time: 17642 ms |
TPC-DS: Total hot run time: 85447 ms |
ClickBench: Total hot run time: 14.6 s |
Cloud UT Coverage ReportIncrement line coverage Increment coverage report
|
FE UT Coverage ReportIncrement line coverage `` 🎉 |
FE Regression Coverage ReportIncrement line coverage |
|
/review |
9c0e9b1 to
8f93283
Compare
|
run buildall |
|
/review |
|
Codex automated review failed and did not complete. Error: All Codex review accounts are usage-limited; earliest retry is 2026-08-20T03:35:00Z. Please trigger /review again after that time. |
143126e to
71bb025
Compare
|
run buildall |
TPC-H: Total hot run time: 17212 ms |
TPC-DS: Total hot run time: 83307 ms |
ClickBench: Total hot run time: 16.33 s |
TPC-H: Total hot run time: 17523 ms |
TPC-DS: Total hot run time: 83680 ms |
ClickBench: Total hot run time: 16.45 s |
Cloud UT Coverage ReportIncrement line coverage Increment coverage report
|
TPC-DS: Total hot run time: 83748 ms |
ClickBench: Total hot run time: 16.27 s |
BE Regression && UT Coverage ReportIncrement line coverage Increment coverage report
|
FE Regression Coverage ReportIncrement line coverage |
|
run check_coverage |
…ileSystem coverage
…ard null _handle in read_at_impl Two review comments on HDFS lazy open: 1. HdfsFileHandle::ensure_open() called hdfs_error() outside the call_once lambda, so waiting callers would query libhdfs thread-local last-error in their own thread context and see empty/unrelated errors. Move hdfs_error() and Status construction inside the lambda, store as _open_status, return the same Status to every caller. 2. HdfsFileReader::read_at_impl() called _handle->ensure_open() before any null guard. After a failed read sets _handle=nullptr, a subsequent read would dereference null. Add null guard before ensure_open(). Tests: - OpenFailurePreservesStatusInsideCallOnce: serial test verifies _open_status is preserved across calls (hdfs_error mock changed between calls). - ConcurrentOpenFailureReturnsSameStatusToAllCallers: 8 threads verify all callers see NOT_FOUND (simulates libhdfs thread-local last-error). - SecondReadAfterFailureDoesNotCrash: second read_at after first failed read returns InternalError instead of crashing. Also refactor MockHandleGuard to use a set_mock_return helper.
cdcf29c to
0072668
Compare
|
run buildall |
FE UT Coverage ReportIncrement line coverage `` 🎉 |
BE UT Coverage ReportIncrement line coverage Increment coverage report
|
BE Regression && UT Coverage ReportIncrement line coverage Increment coverage report
|
TPC-H: Total hot run time: 16796 ms |
TPC-DS: Total hot run time: 81392 ms |
ClickBench: Total hot run time: 14.67 s |
What problem does this PR solve?
Problem Summary:
When block cache hits, HdfsFileReader still calls hdfsOpenFile on every construction, wasting NameNode RPCs for data that's never read from HDFS.
How To Fix:
Release note
None
Check List (For Author)
Test
Behavior changed:
Does this need documentation?
Check List (For Reviewer who merge this PR)