BiteTheDDDDt opened a new pull request, #63345:
URL: https://github.com/apache/doris/pull/63345
### What problem does this PR solve?
Issue Number: None
Related PR: None
Problem Summary:
For shared hash table hash joins, the builder task may leave
`process_build_block()` before the hash table is actually built, for example
when the build side returns an error before the EOS build step completes. In
that state the shared hash table variant can still be `monostate`.
`HashJoinBuildSinkLocalState::close()` previously set `_signaled = true`
whenever the builder was not terminated. That wakes non-builder tasks even when
the shared hash table was never built, so they can reach the shared hash table
copy path and report a misleading `Hash table type mismatch when share hash
table` instead of preserving the original build-side error.
This PR gates `_signaled` on the actual shared hash table state. Non-builder
tasks are signaled only when the builder is not terminated and the shared hash
table variant is no longer `monostate`. If the builder closes after an error
before the hash table is built, `_signaled` stays false and non-builders take
the existing EOF guard instead of visiting an unbuilt hash table.
### Release note
None
### Check List (For Author)
- Test: Unit Test
- `./run-be-ut.sh --run
--filter=SharedHashTableSignalTest.UnbuiltHashTableDoesNotSignal -j 8`
- `build-support/check-format.sh`
- `build-support/run-clang-tidy.sh --build-dir be/ut_build_ASAN` was
attempted; it reports pre-existing complexity diagnostics in the touched hash
join files and `jni-util.h` static assertions.
- Behavior changed: No
- Does this need documentation: No
--
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]