This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new 946d28646a9 [fix](outfile)Fixed orcOutputStream.close() throwing an 
exception during destruction causing the program to hang. (#34254)
946d28646a9 is described below

commit 946d28646a950c4f0ecd85b5fa3537ddef72bc7b
Author: daidai <[email protected]>
AuthorDate: Sun Apr 28 19:54:34 2024 +0800

    [fix](outfile)Fixed orcOutputStream.close() throwing an exception during 
destruction causing the program to hang. (#34254)
    
    bp #34243
---
 be/src/vec/runtime/vorc_transformer.cpp | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/be/src/vec/runtime/vorc_transformer.cpp 
b/be/src/vec/runtime/vorc_transformer.cpp
index a07f734acac..3bf3d8cea70 100644
--- a/be/src/vec/runtime/vorc_transformer.cpp
+++ b/be/src/vec/runtime/vorc_transformer.cpp
@@ -62,7 +62,16 @@ VOrcOutputStream::VOrcOutputStream(doris::io::FileWriter* 
file_writer)
 
 VOrcOutputStream::~VOrcOutputStream() {
     if (!_is_closed) {
-        close();
+        try {
+            close();
+        } catch (...) {
+            /*
+         * Under normal circumstances, close() will be called first, and then 
the destructor will be called.
+         * If the task is canceled, close() will not be executed, but the 
destructor will be called directly,
+         * which will cause the be core.When the task is canceled, since the 
log file has been written during
+         * close(), no operation is performed here.
+         */
+        }
     }
 }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to