You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by do...@apache.org on 2026/07/24 22:08:56 UTC
(spark) branch master updated: [SPARK-58333][K8S] Add Java-friendly constructor to `KubernetesDriverConf`
This is an automated email from the ASF dual-hosted git repository.
dongjoon-hyun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push:
new 639814acaea1 [SPARK-58333][K8S] Add Java-friendly constructor to `KubernetesDriverConf`
639814acaea1 is described below
commit 639814acaea14bfc7d3ec5fd47a1f38a96fd7a98
Author: Dongjoon Hyun <do...@apache.org>
AuthorDate: Fri Jul 24 15:08:45 2026 -0700
[SPARK-58333][K8S] Add Java-friendly constructor to `KubernetesDriverConf`
### What changes were proposed in this pull request?
This PR aims to add a Java-friendly constructor to `KubernetesDriverConf` that accepts a nullable `String` for `proxyUser` instead of `Option[String]`.
### Why are the changes needed?
`KubernetesDriverConf` is a `DeveloperApi` used by Apache Spark K8s Operator. Since the operator's `SparkAppDriverConf` (Java) extends this class, it must call the constructor directly via `super(...)`, which currently requires Scala interop like `scala.Option.apply(...)` and passing `null` for the `clock` default argument.
### Does this PR introduce _any_ user-facing change?
No behavior change. This only adds a new constructor overload to a `DeveloperApi` class.
### How was this patch tested?
Pass the CIs with a newly added test case in `KubernetesConfSuite`.
### Was this patch authored or co-authored using generative AI tooling?
Generated-by: Claude Fable 5
Closes #57511 from dongjoon-hyun/SPARK-58333.
Authored-by: Dongjoon Hyun <do...@apache.org>
Signed-off-by: Dongjoon Hyun <do...@apache.org>
---
.../apache/spark/deploy/k8s/KubernetesConf.scala | 14 ++++++++++++++
.../spark/deploy/k8s/KubernetesConfSuite.scala | 21 +++++++++++++++++++++
2 files changed, 35 insertions(+)
diff --git a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/KubernetesConf.scala b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/KubernetesConf.scala
index 9070d6ce35ff..7436c714d80e 100644
--- a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/KubernetesConf.scala
+++ b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/KubernetesConf.scala
@@ -98,6 +98,20 @@ class KubernetesDriverConf(
clock: Clock = new SystemClock())
extends KubernetesConf(sparkConf) with Logging {
+ /**
+ * Java-friendly constructor that accepts a nullable String for proxyUser
+ * instead of Option[String].
+ */
+ @Since("4.3.0")
+ def this(
+ sparkConf: SparkConf,
+ appId: String,
+ mainAppResource: MainAppResource,
+ mainClass: String,
+ appArgs: Array[String],
+ proxyUser: String) =
+ this(sparkConf, appId, mainAppResource, mainClass, appArgs, Option(proxyUser))
+
def driverNodeSelector: Map[String, String] =
KubernetesUtils.parsePrefixedKeyValuePairs(sparkConf, KUBERNETES_DRIVER_NODE_SELECTOR_PREFIX)
diff --git a/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/k8s/KubernetesConfSuite.scala b/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/k8s/KubernetesConfSuite.scala
index c1b3e8d6b252..20d8ac26039d 100644
--- a/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/k8s/KubernetesConfSuite.scala
+++ b/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/k8s/KubernetesConfSuite.scala
@@ -130,6 +130,27 @@ class KubernetesConfSuite extends SparkFunSuite {
assert(confWithProxy.proxyUser === Some("proxy"))
}
+ test("SPARK-58333: Java-friendly KubernetesDriverConf constructor with nullable proxyUser") {
+ val sparkConf = new SparkConf(false)
+ val conf = new KubernetesDriverConf(
+ sparkConf,
+ KubernetesTestConf.APP_ID,
+ JavaMainAppResource(None),
+ KubernetesTestConf.MAIN_CLASS,
+ APP_ARGS,
+ null: String)
+ assert(conf.proxyUser === None)
+
+ val confWithProxy = new KubernetesDriverConf(
+ sparkConf,
+ KubernetesTestConf.APP_ID,
+ JavaMainAppResource(None),
+ KubernetesTestConf.MAIN_CLASS,
+ APP_ARGS,
+ "proxy")
+ assert(confWithProxy.proxyUser === Some("proxy"))
+ }
+
test("Basic executor translated fields.") {
val conf = KubernetesConf.createExecutorConf(
new SparkConf(false),
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org