You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gluten.apache.org by "jackylee-ch (via GitHub)" <gi...@apache.org> on 2026/07/10 09:02:33 UTC

[PR] [TEST][VL] Forward Hadoop filesystem configuration per runtime [gluten]

jackylee-ch opened a new pull request, #12495:
URL: https://github.com/apache/gluten/pull/12495

   ## What changes are proposed in this pull request?
   
   This PR adds an explicit, credential-safe path for forwarding user-provided Hadoop filesystem configuration from Spark to each native Velox runtime. Spark's SQL configuration propagation does not carry bare `fs.*` settings, so executor-side native reads and writes can otherwise miss the filesystem configuration used by the originating Spark session.
   
   - Introduce a Hadoop configuration contributor SPI and collector that keeps user-provided filesystem settings, normalizes `fs.*` and `spark.hadoop.fs.*` keys, and caches an immutable snapshot once per `SparkSession`.
   - Carry that snapshot through whole-stage RDD execution and native writer/schema paths as dedicated serializable state, without embedding credentials in Substrait plans.
   - Overlay filesystem settings when each Velox runtime is created, keep Gluten control keys authoritative, and configure Hive, Iceberg, Delta, CUDF, and GCS writer connectors per runtime.
   - Derive runtime identity without credential values, extend filesystem and UGI redaction, and fail closed when GCS credential configuration is inconsistent.
   - Preserve existing Scala and C++ overloads, constructors, and default delegation so existing backend integrations remain source and binary compatible.
   
   ClickHouse source paths are unchanged.
   
   ## How was this patch tested?
   
   - Spark 3.5: the 10-module reactor install and a clean Velox backend compile/test completed successfully.
   - Spark 3.3 with Delta: the 10-module clean `test-compile` completed successfully.
   - Targeted Scala suites passed 43/43 tests: `HadoopConfCollectorSuite`, `HadoopConfTransportSuite`, `RuntimesSuite`, `GlutenRuntimeConfigSuite`, `VeloxHadoopConfTransportSuite`, and `VeloxHadoopConfWriterSuite`. This includes a real Spark closure serializer round trip.
   - Native tests passed 7/7 cases across `GlutenConfigTest` and `RuntimeTest`.
   - `VeloxParquetWriteHadoopConfSuite` passed 1/1 using the real native Parquet writer.
   - Scala formatting, clang-format 15 validation, license-header validation for all changed source files, and `git diff --check` passed.
   
   Known local validation gaps:
   
   - The local native build disabled S3, GCS, ABFS, and HDFS support, and no real cloud credentials were available. Credential-backed cloud read/write end-to-end tests and conditional cloud-native branches were therefore not run locally.
   - `VeloxParquetWriteForHiveSuite` passed 2/16 tests; 14 tests failed with an existing `TableWrite` `std::bad_cast` in the local `velox_ep_pr12331_runsetup` build. An A/B run using the previous connector-registration path produced the same failures, which excludes the new per-runtime connector overlay as the cause, but this suite is not green in the current local environment.
   
   ## Was this patch authored or co-authored using generative AI tooling?
   
   Generated-by: OpenAI Codex GPT-5
   


-- 
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: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org


Re: [PR] [TEST][VL] Forward Hadoop filesystem configuration per runtime [gluten]

Posted by "jackylee-ch (via GitHub)" <gi...@apache.org>.
jackylee-ch commented on code in PR #12495:
URL: https://github.com/apache/gluten/pull/12495#discussion_r3558319599


##########
backends-velox/src/main/scala/org/apache/gluten/backendsapi/velox/VeloxIteratorApi.scala:
##########
@@ -303,6 +354,21 @@ class VeloxIteratorApi extends IteratorApi with Logging {
 }
 
 object VeloxIteratorApi {
+  private[gluten] def buildExtraConf(
+      fsConf: Map[String, String],
+      enableCudf: Boolean,
+      supportsValueStreamDynamicFilter: Boolean): Map[String, String] = {
+    val dynamicFilterConf =
+      if (supportsValueStreamDynamicFilter) {
+        Map.empty[String, String]
+      } else {
+        Map(VeloxConfig.VALUE_STREAM_DYNAMIC_FILTER_ENABLED.key -> "false")
+      }
+    val controlConf =
+      Map(GlutenConfig.COLUMNAR_CUDF_ENABLED.key -> enableCudf.toString) ++ dynamicFilterConf
+    fsConf ++ controlConf
+  }

Review Comment:
   Handled in 11724eb11. `buildExtraConf` now accepts only `spark.hadoop.fs.*` keys before overlaying control settings; the regression test verifies non-filesystem SQL and UGI keys are dropped.



##########
backends-velox/src/main/scala/org/apache/gluten/backendsapi/velox/VeloxBackend.scala:
##########
@@ -72,6 +72,7 @@ class VeloxBackend extends SubstraitBackend {
   override def settings(): BackendSettingsApi = VeloxBackendSettings
   override def convFuncOverride(): ConventionFunc.Override = new ConvFunc()
   override def costers(): Seq[LongCoster] = Seq(LegacyCoster, RoughCoster)
+  override def interestedPrefixes(): Set[String] = Set("fs.s3a.", "fs.azure.", "fs.gs.", "fs.")

Review Comment:
   Handled in 11724eb11. The prefix set is simplified to `Set("fs.")`, retaining unknown filesystem schemes while removing redundant scheme-specific entries.



-- 
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: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org


Re: [PR] [TEST][VL] Forward Hadoop filesystem configuration per runtime [gluten]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #12495:
URL: https://github.com/apache/gluten/pull/12495#issuecomment-4935872766

   Run Gluten Clickhouse CI on x86


-- 
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: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org


Re: [PR] [TEST][VL] Forward Hadoop filesystem configuration per runtime [gluten]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #12495:
URL: https://github.com/apache/gluten/pull/12495#issuecomment-4937307563

   Run Gluten Clickhouse CI on x86


-- 
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: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org


Re: [PR] [TEST][VL] Forward Hadoop filesystem configuration per runtime [gluten]

Posted by "jackylee-ch (via GitHub)" <gi...@apache.org>.
jackylee-ch commented on PR #12495:
URL: https://github.com/apache/gluten/pull/12495#issuecomment-4935793426

   Run Gluten Clickhouse CI on x86


-- 
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: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org


Re: [PR] [TEST][VL] Forward Hadoop filesystem configuration per runtime [gluten]

Posted by "jackylee-ch (via GitHub)" <gi...@apache.org>.
jackylee-ch commented on code in PR #12495:
URL: https://github.com/apache/gluten/pull/12495#discussion_r3558318132


##########
cpp/velox/utils/ConfigExtractor.cc:
##########
@@ -246,6 +283,38 @@ std::string parquetSessionProperty(std::string_view key) {
 
 } // namespace
 
+std::shared_ptr<facebook::velox::config::ConfigBase> mergeFileSystemConfigs(
+    const std::shared_ptr<facebook::velox::config::ConfigBase>& backendConf,
+    const std::shared_ptr<facebook::velox::config::ConfigBase>& runtimeConf) {
+  constexpr std::string_view kSparkHadoopFsPrefix = "spark.hadoop.fs.";
+
+  auto merged = backendConf->rawConfigs();
+  for (const auto& [key, value] : runtimeConf->rawConfigs()) {
+    if (key.starts_with(kSparkHadoopFsPrefix)) {
+      merged.insert_or_assign(key, value);
+    }
+  }

Review Comment:
   Gluten requires C++20: `cpp/CMakeLists.txt` sets `CMAKE_CXX_STANDARD 20` with `CMAKE_CXX_STANDARD_REQUIRED ON`, and this file already uses `starts_with` in existing code. No compatibility change is needed.



##########
cpp/core/config/GlutenConfig.cc:
##########
@@ -33,9 +31,13 @@ std::optional<boost::regex> getRedactionRegex(const std::unordered_map<std::stri
   }
   return std::nullopt;
 }

Review Comment:
   Handled in 11724eb11. `getRedactionRegex` now catches `boost::regex_error` and falls back to `.*`, so dumping fails closed rather than disabling redaction. `GlutenConfigTest.InvalidRedactionRegexFailsClosed` verifies non-throwing behavior and that values are not exposed.



##########
backends-velox/src/main/scala/org/apache/gluten/datasource/VeloxDataSourceUtil.scala:
##########
@@ -31,25 +31,60 @@ import java.util
 
 object VeloxDataSourceUtil {
   def readSchema(files: Seq[FileStatus]): Option[StructType] = {
+    readSchema(files, new util.HashMap[String, String]())
+  }
+
+  def readSchema(
+      files: Seq[FileStatus],
+      fsConf: util.Map[String, String]): Option[StructType] = {
     if (files.isEmpty) {
       throw new IllegalArgumentException("No input file specified")
     }
-    readSchema(files.toList.head)
+    readSchema(files.toList.head, fsConf)
   }
 
   def readSchema(file: FileStatus): Option[StructType] = {
+    readSchema(file, new util.HashMap[String, String]())
+  }
+
+  def readSchema(
+      file: FileStatus,
+      fsConf: util.Map[String, String]): Option[StructType] = {
     val allocator = ArrowBufferAllocators.contextInstance()
-    val runtime = Runtimes.contextInstance(BackendsApiManager.getBackendName, "VeloxWriter")
+    val runtime =
+      Runtimes.contextInstance(BackendsApiManager.getBackendName, "VeloxWriter", fsConf)
     val datasourceJniWrapper = VeloxDataSourceJniWrapper.create(runtime)
-    val dsHandle =
-      datasourceJniWrapper.init(file.getPath.toString, -1, new util.HashMap[String, String]())
-    val cSchema = ArrowSchema.allocateNew(allocator)
-    datasourceJniWrapper.inspectSchema(dsHandle, cSchema.memoryAddress())
+    withDataSourceResource[ArrowSchema, Option[StructType]](
+      () => datasourceJniWrapper.init(file.getPath.toString, -1, fsConf),
+      () => ArrowSchema.allocateNew(allocator),
+      (dsHandle, cSchema) => {
+        datasourceJniWrapper.inspectSchema(dsHandle, cSchema.memoryAddress())
+        Option(SparkSchemaUtil.fromArrowSchema(ArrowAbiUtil.importToSchema(allocator, cSchema)))
+      },
+      datasourceJniWrapper.close
+    )
+  }
+
+  private[apache] def withDataSourceResource[R <: AutoCloseable, T](
+      initialize: () => Long,
+      allocate: () => R,
+      use: (Long, R) => T,
+      closeHandle: Long => Unit): T = {

Review Comment:
   Handled in 11724eb11. The helper is now `private[datasource]`, and its resource lifecycle tests were moved to `org.apache.gluten.datasource.VeloxDataSourceUtilSuite`, so no `org.apache.spark.*` access is required.



-- 
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: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org


Re: [PR] [DNM][VL] Forward Hadoop filesystem configuration per runtime [gluten]

Posted by "jackylee-ch (via GitHub)" <gi...@apache.org>.
jackylee-ch closed pull request #12495: [DNM][VL] Forward Hadoop filesystem configuration per runtime
URL: https://github.com/apache/gluten/pull/12495


-- 
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: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org


Re: [PR] [TEST][VL] Forward Hadoop filesystem configuration per runtime [gluten]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #12495:
URL: https://github.com/apache/gluten/pull/12495#issuecomment-4976890612

   Run Gluten Clickhouse CI on x86


-- 
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: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org


Re: [PR] [TEST][VL] Forward Hadoop filesystem configuration per runtime [gluten]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #12495:
URL: https://github.com/apache/gluten/pull/12495#issuecomment-4934554863

   Run Gluten Clickhouse CI on x86


-- 
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: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org


Re: [PR] [TEST][VL] Forward Hadoop filesystem configuration per runtime [gluten]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #12495:
URL: https://github.com/apache/gluten/pull/12495#issuecomment-4934285461

   Run Gluten Clickhouse CI on x86


-- 
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: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org


Re: [PR] [TEST][VL] Forward Hadoop filesystem configuration per runtime [gluten]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #12495:
URL: https://github.com/apache/gluten/pull/12495#issuecomment-4966565744

   Run Gluten Clickhouse CI on x86


-- 
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: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org


Re: [PR] [TEST][VL] Forward Hadoop filesystem configuration per runtime [gluten]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #12495:
URL: https://github.com/apache/gluten/pull/12495#issuecomment-4965853189

   Run Gluten Clickhouse CI on x86


-- 
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: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org


Re: [PR] [TEST][VL] Forward Hadoop filesystem configuration per runtime [gluten]

Posted by "Copilot (via GitHub)" <gi...@apache.org>.
Copilot commented on code in PR #12495:
URL: https://github.com/apache/gluten/pull/12495#discussion_r3557792117


##########
cpp/core/config/GlutenConfig.cc:
##########
@@ -33,9 +31,13 @@ std::optional<boost::regex> getRedactionRegex(const std::unordered_map<std::stri
   }
   return std::nullopt;
 }

Review Comment:
   Constructing `boost::regex` can throw `boost::regex_error` for an invalid user-provided `spark.redaction.regex`. Since this helper is now used by config dumping paths, a bad regex could crash/abort dumping (or worse, error out in a production debugging workflow). Consider catching `boost::regex_error` inside `getRedactionRegex` and returning `std::nullopt` (optionally logging a warning) so redaction gracefully degrades instead of failing.



##########
backends-velox/src/main/scala/org/apache/gluten/datasource/VeloxDataSourceUtil.scala:
##########
@@ -31,25 +31,60 @@ import java.util
 
 object VeloxDataSourceUtil {
   def readSchema(files: Seq[FileStatus]): Option[StructType] = {
+    readSchema(files, new util.HashMap[String, String]())
+  }
+
+  def readSchema(
+      files: Seq[FileStatus],
+      fsConf: util.Map[String, String]): Option[StructType] = {
     if (files.isEmpty) {
       throw new IllegalArgumentException("No input file specified")
     }
-    readSchema(files.toList.head)
+    readSchema(files.toList.head, fsConf)
   }
 
   def readSchema(file: FileStatus): Option[StructType] = {
+    readSchema(file, new util.HashMap[String, String]())
+  }
+
+  def readSchema(
+      file: FileStatus,
+      fsConf: util.Map[String, String]): Option[StructType] = {
     val allocator = ArrowBufferAllocators.contextInstance()
-    val runtime = Runtimes.contextInstance(BackendsApiManager.getBackendName, "VeloxWriter")
+    val runtime =
+      Runtimes.contextInstance(BackendsApiManager.getBackendName, "VeloxWriter", fsConf)
     val datasourceJniWrapper = VeloxDataSourceJniWrapper.create(runtime)
-    val dsHandle =
-      datasourceJniWrapper.init(file.getPath.toString, -1, new util.HashMap[String, String]())
-    val cSchema = ArrowSchema.allocateNew(allocator)
-    datasourceJniWrapper.inspectSchema(dsHandle, cSchema.memoryAddress())
+    withDataSourceResource[ArrowSchema, Option[StructType]](
+      () => datasourceJniWrapper.init(file.getPath.toString, -1, fsConf),
+      () => ArrowSchema.allocateNew(allocator),
+      (dsHandle, cSchema) => {
+        datasourceJniWrapper.inspectSchema(dsHandle, cSchema.memoryAddress())
+        Option(SparkSchemaUtil.fromArrowSchema(ArrowAbiUtil.importToSchema(allocator, cSchema)))
+      },
+      datasourceJniWrapper.close
+    )
+  }
+
+  private[apache] def withDataSourceResource[R <: AutoCloseable, T](
+      initialize: () => Long,
+      allocate: () => R,
+      use: (Long, R) => T,
+      closeHandle: Long => Unit): T = {

Review Comment:
   `private[apache]` makes this helper visible to the entire `org.apache.*` namespace (including Spark code), which is a very broad exposure for a low-level resource-management utility. If the intent is test-only access, prefer narrowing visibility (e.g., `private[gluten]` / `private[datasource]`) and adjusting the tests’ package (or using a small test-only wrapper) to avoid effectively making this a quasi-public API.



##########
backends-velox/src/main/scala/org/apache/gluten/backendsapi/velox/VeloxIteratorApi.scala:
##########
@@ -303,6 +354,21 @@ class VeloxIteratorApi extends IteratorApi with Logging {
 }
 
 object VeloxIteratorApi {
+  private[gluten] def buildExtraConf(
+      fsConf: Map[String, String],
+      enableCudf: Boolean,
+      supportsValueStreamDynamicFilter: Boolean): Map[String, String] = {
+    val dynamicFilterConf =
+      if (supportsValueStreamDynamicFilter) {
+        Map.empty[String, String]
+      } else {
+        Map(VeloxConfig.VALUE_STREAM_DYNAMIC_FILTER_ENABLED.key -> "false")
+      }
+    val controlConf =
+      Map(GlutenConfig.COLUMNAR_CUDF_ENABLED.key -> enableCudf.toString) ++ dynamicFilterConf
+    fsConf ++ controlConf
+  }

Review Comment:
   `buildExtraConf` currently forwards *all* keys from `fsConf` into the native extraConf map. If a caller accidentally passes a broader map (e.g., session conf containing tokens/UGI identity or other sensitive/non-filesystem keys), those could be propagated into the native side unexpectedly. Consider defensively filtering `fsConf` to only `spark.hadoop.fs.*` entries inside this helper (then overlay `controlConf`) so the contract is enforced at the boundary.



##########
backends-velox/src/main/scala/org/apache/gluten/backendsapi/velox/VeloxBackend.scala:
##########
@@ -72,6 +72,7 @@ class VeloxBackend extends SubstraitBackend {
   override def settings(): BackendSettingsApi = VeloxBackendSettings
   override def convFuncOverride(): ConventionFunc.Override = new ConvFunc()
   override def costers(): Seq[LongCoster] = Seq(LegacyCoster, RoughCoster)
+  override def interestedPrefixes(): Set[String] = Set("fs.s3a.", "fs.azure.", "fs.gs.", "fs.")

Review Comment:
   Including both the scheme-specific prefixes and the catch-all `\"fs.\"` is redundant (the `\"fs.\"` entry already matches all of the others). Dropping the redundant scheme-specific entries (or dropping the catch-all and keeping explicit schemes) would make intent clearer and avoid confusion about which are actually needed.



##########
cpp/velox/utils/ConfigExtractor.cc:
##########
@@ -246,6 +283,38 @@ std::string parquetSessionProperty(std::string_view key) {
 
 } // namespace
 
+std::shared_ptr<facebook::velox::config::ConfigBase> mergeFileSystemConfigs(
+    const std::shared_ptr<facebook::velox::config::ConfigBase>& backendConf,
+    const std::shared_ptr<facebook::velox::config::ConfigBase>& runtimeConf) {
+  constexpr std::string_view kSparkHadoopFsPrefix = "spark.hadoop.fs.";
+
+  auto merged = backendConf->rawConfigs();
+  for (const auto& [key, value] : runtimeConf->rawConfigs()) {
+    if (key.starts_with(kSparkHadoopFsPrefix)) {
+      merged.insert_or_assign(key, value);
+    }
+  }

Review Comment:
   `std::string::starts_with` requires C++20; if this codebase (or some build variants) compile with C++17, this will fail to build. To keep compatibility, replace `starts_with(...)` with an explicit prefix check (e.g., `key.size() >= prefix.size() && key.compare(0, prefix.size(), prefix) == 0`) or use a project-standard helper for prefix matching.



-- 
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: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org


Re: [PR] [TEST][VL] Forward Hadoop filesystem configuration per runtime [gluten]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #12495:
URL: https://github.com/apache/gluten/pull/12495#issuecomment-4933899341

   Run Gluten Clickhouse CI on x86


-- 
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: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org


Re: [PR] [TEST][VL] Forward Hadoop filesystem configuration per runtime [gluten]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #12495:
URL: https://github.com/apache/gluten/pull/12495#issuecomment-4938553750

   Run Gluten Clickhouse CI on x86


-- 
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: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org