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

changchen pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-gluten.git


The following commit(s) were added to refs/heads/main by this push:
     new 82f51bb228 [GLUTEN-1632][CH]Daily Update Clickhouse Version (20250611) 
(#9936)
82f51bb228 is described below

commit 82f51bb2284b032ff6acff89eb6a17b5460bed2f
Author: Kyligence Git <[email protected]>
AuthorDate: Wed Jun 11 09:51:53 2025 -0500

    [GLUTEN-1632][CH]Daily Update Clickhouse Version (20250611) (#9936)
    
    * [GLUTEN-1632][CH]Daily Update Clickhouse Version (20250611)
    
    * Fix Build due to https://github.com/ClickHouse/ClickHouse/pull/81191
    
    * Fix UT due to https://github.com/ClickHouse/ClickHouse/pull/79471
    
    ---------
    
    Co-authored-by: kyligence-git <[email protected]>
    Co-authored-by: Chang chen <[email protected]>
---
 cpp-ch/clickhouse.version                                  |  4 ++--
 cpp-ch/local-engine/Common/CHUtil.cpp                      |  2 +-
 .../local-engine/Storages/MergeTree/SparkMergeTreeMeta.cpp |  2 +-
 .../Storages/MergeTree/StorageMergeTreeFactory.h           |  2 +-
 cpp-ch/local-engine/local_engine_jni.cpp                   | 14 +++++++++++++-
 5 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/cpp-ch/clickhouse.version b/cpp-ch/clickhouse.version
index beaa3d5c3c..b5deb19d7a 100644
--- a/cpp-ch/clickhouse.version
+++ b/cpp-ch/clickhouse.version
@@ -1,3 +1,3 @@
 CH_ORG=Kyligence
-CH_BRANCH=rebase_ch/20250609
-CH_COMMIT=ce8834acde9
+CH_BRANCH=rebase_ch/20250611
+CH_COMMIT=6dc897a845d
diff --git a/cpp-ch/local-engine/Common/CHUtil.cpp 
b/cpp-ch/local-engine/Common/CHUtil.cpp
index 33f9a62f64..926a3948d5 100644
--- a/cpp-ch/local-engine/Common/CHUtil.cpp
+++ b/cpp-ch/local-engine/Common/CHUtil.cpp
@@ -999,7 +999,7 @@ void BackendFinalizerUtil::finalizeGlobally()
 {
     // Make sure client caches release before ClientCacheRegistry
     ReadBufferBuilderFactory::instance().clean();
-    StorageMergeTreeFactory::clear();
+    StorageMergeTreeFactory::clear_cache_map();
     QueryContext::resetGlobal();
     std::lock_guard lock(paths_mutex);
     std::ranges::for_each(
diff --git a/cpp-ch/local-engine/Storages/MergeTree/SparkMergeTreeMeta.cpp 
b/cpp-ch/local-engine/Storages/MergeTree/SparkMergeTreeMeta.cpp
index 9b2a3d04ba..63705a0a93 100644
--- a/cpp-ch/local-engine/Storages/MergeTree/SparkMergeTreeMeta.cpp
+++ b/cpp-ch/local-engine/Storages/MergeTree/SparkMergeTreeMeta.cpp
@@ -296,7 +296,7 @@ RangesInDataParts 
MergeTreeTableInstance::extractRange(DataPartsVector parts_vec
         std::inserter(ranges_in_data_parts, ranges_in_data_parts.end()),
         [&](const MergeTreePart & part)
         {
-            RangesInDataPart ranges_in_data_part{name_index.at(part.name), 0, 
0, {MarkRange(part.begin, part.end)}};
+            RangesInDataPart 
ranges_in_data_part{name_index.at(part.name),nullptr, 0, 0, 
{MarkRange(part.begin, part.end)}};
             return ranges_in_data_part;
         });
     return ranges_in_data_parts;
diff --git a/cpp-ch/local-engine/Storages/MergeTree/StorageMergeTreeFactory.h 
b/cpp-ch/local-engine/Storages/MergeTree/StorageMergeTreeFactory.h
index a853ee2f2a..99dee1751e 100644
--- a/cpp-ch/local-engine/Storages/MergeTree/StorageMergeTreeFactory.h
+++ b/cpp-ch/local-engine/Storages/MergeTree/StorageMergeTreeFactory.h
@@ -90,7 +90,7 @@ public:
             datapart_map_v->clear();
         }
     }
-    static void clear()
+    static void clear_cache_map()
     {
         if (storage_map) storage_map->clear();
         if (datapart_map) datapart_map->clear();
diff --git a/cpp-ch/local-engine/local_engine_jni.cpp 
b/cpp-ch/local-engine/local_engine_jni.cpp
index 261f99cc2e..c442b97fe8 100644
--- a/cpp-ch/local-engine/local_engine_jni.cpp
+++ b/cpp-ch/local-engine/local_engine_jni.cpp
@@ -172,6 +172,9 @@ JNIEXPORT jint JNI_OnLoad(JavaVM * vm, void * /*reserved*/)
 JNIEXPORT void 
Java_org_apache_gluten_vectorized_ExpressionEvaluatorJniWrapper_nativeInitNative(JNIEnv
 * env, jclass, jbyteArray conf_plan)
 {
     LOCAL_ENGINE_JNI_METHOD_START
+    // Ensure that current_thread is valid before initializing resource.
+    DB::ThreadStatus thread_status;
+
     const auto conf_plan_a = local_engine::getByteArrayElementsSafe(env, 
conf_plan);
     const std::string::size_type plan_buf_size = conf_plan_a.length();
     local_engine::SparkConfigs::update(
@@ -191,7 +194,11 @@ JNIEXPORT void 
Java_org_apache_gluten_vectorized_ExpressionEvaluatorJniWrapper_n
 
 JNIEXPORT void 
Java_org_apache_gluten_vectorized_ExpressionEvaluatorJniWrapper_nativeDestroyNative(JNIEnv
 * env, jclass)
 {
-    LOG_INFO(&Poco::Logger::get("jni"), "start destroy native");
+    LOCAL_ENGINE_JNI_METHOD_START
+    // Ensure that current_thread is valid before destroying resource to avoid
+    // any future calls to CurrentThread::get() in parts of the code.
+    // For example, see `MergeTreeData::getInMemoryMetadataPtr()`
+    DB::ThreadStatus thread_status;
     local_engine::BackendFinalizerUtil::finalizeGlobally();
 
     local_engine::JniErrorsGlobalState::instance().destroy(env);
@@ -207,6 +214,8 @@ JNIEXPORT void 
Java_org_apache_gluten_vectorized_ExpressionEvaluatorJniWrapper_n
     
env->DeleteGlobalRef(local_engine::WriteBufferFromJavaOutputStream::output_stream_class);
     
env->DeleteGlobalRef(local_engine::SourceFromJavaIter::serialized_record_batch_iterator_class);
     
env->DeleteGlobalRef(local_engine::SparkRowToCHColumn::spark_row_interator_class);
+
+    LOCAL_ENGINE_JNI_METHOD_END(env, )
 }
 
 /// Set settings for the current query. It assumes that all parameters are 
started with `CH_RUNTIME_SETTINGS_PREFIX` prefix,
@@ -980,6 +989,9 @@ JNIEXPORT jstring 
Java_org_apache_spark_sql_execution_datasources_CHDatasourceJn
     JNIEnv * env, jclass, jbyteArray plan_, jbyteArray read_)
 {
     LOCAL_ENGINE_JNI_METHOD_START
+    // Ensure that current_thread is valid, even if this function is called on 
Driver.
+    DB::ThreadStatus thread_status;
+
     const auto plan_a = local_engine::getByteArrayElementsSafe(env, plan_);
     auto plan_pb = local_engine::BinaryToMessage<substrait::Plan>(
         {reinterpret_cast<const char *>(plan_a.elems()), 
static_cast<size_t>(plan_a.length())});


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

Reply via email to