github-actions[bot] commented on code in PR #65217:
URL: https://github.com/apache/doris/pull/65217#discussion_r3534421683
##########
be/src/core/column/column_varbinary.h:
##########
@@ -65,7 +68,7 @@ class ColumnVarbinary final : public COWHelper<IColumn,
ColumnVarbinary> {
void clear() override {
_data.clear();
- _arena.clear();
+ reset_to_new_local_storage();
Review Comment:
`clear()` is now on an allocation path because it calls
`reset_to_new_local_storage()`, which clears the current owner set and then
does `std::make_shared<Arena>()`. This method is reached from cleanup/reuse
code such as `MutableBlock::clear_column_data() noexcept`
(`block.cpp:1286-1290`), so an allocation failure while clearing a VARBINARY
column can now terminate the process during cleanup; in non-`noexcept` callers
it is also not exception-safe because `_arena` still points at the old Arena
after `_auxiliary_data.clear()` destroys it if the new allocation throws.
Please make the reset allocate the replacement owner before dropping the
current one, and avoid introducing a throwing allocation into the clear/reuse
path (for example by reusing the local Arena or by separating the local owner
from borrowed owners).
--
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]