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]

Reply via email to