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

dongjoon pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/spark-kubernetes-operator.git


The following commit(s) were added to refs/heads/main by this push:
     new a727f0c  [SPARK-53992] Add `SparkOperatorConfManager.getAll` method
a727f0c is described below

commit a727f0cea379caae219ff8ded2ad9843a694ea9b
Author: Dongjoon Hyun <[email protected]>
AuthorDate: Wed Oct 22 14:35:09 2025 -0700

    [SPARK-53992] Add `SparkOperatorConfManager.getAll` method
    
    ### What changes were proposed in this pull request?
    
    This PR aims to add `SparkOperatorConfManager.getAll` method to get all 
configurations.
    
    ### Why are the changes needed?
    
    Like Apache Spark `SparkConf.getAll` API, we had better support `getAll` 
API.
    
    
https://github.com/apache/spark/blob/0be5f96e7a7d1b9fb9f96f1914019f79ef973a25/core/src/main/scala/org/apache/spark/SparkConf.scala#L197
    
    ```scala
    /** Get all parameters as a list of pairs */
    def getAll: Array[(String, String)]
    ```
    
    ### Does this PR introduce _any_ user-facing change?
    
    No because this is a new API.
    
    ### How was this patch tested?
    
    Pass the CIs with newly added test case.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    No.
    
    Closes #402 from dongjoon-hyun/SPARK-53992.
    
    Authored-by: Dongjoon Hyun <[email protected]>
    Signed-off-by: Dongjoon Hyun <[email protected]>
---
 .../operator/config/SparkOperatorConfManager.java  | 15 +++++++++
 .../config/SparkOperatorConfManagerTest.java       | 37 ++++++++++++++++++++++
 2 files changed, 52 insertions(+)

diff --git 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/config/SparkOperatorConfManager.java
 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/config/SparkOperatorConfManager.java
index 225fd99..a0f4bfe 100644
--- 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/config/SparkOperatorConfManager.java
+++ 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/config/SparkOperatorConfManager.java
@@ -60,6 +60,21 @@ public class SparkOperatorConfManager {
     initialize();
   }
 
+  /**
+   * Returns all properties.
+   *
+   * @return a Properties instance contains all properties.
+   */
+  public Properties getAll() {
+    synchronized (this) {
+      Properties properties = new Properties();
+      properties.putAll(initialConfig);
+      properties.putAll(metricsConfig);
+      properties.putAll(configOverrides);
+      return properties;
+    }
+  }
+
   /**
    * Returns the current value for a given configuration key, considering 
dynamic overrides.
    *
diff --git 
a/spark-operator/src/test/java/org/apache/spark/k8s/operator/config/SparkOperatorConfManagerTest.java
 
b/spark-operator/src/test/java/org/apache/spark/k8s/operator/config/SparkOperatorConfManagerTest.java
index 7baf5e1..7d0538f 100644
--- 
a/spark-operator/src/test/java/org/apache/spark/k8s/operator/config/SparkOperatorConfManagerTest.java
+++ 
b/spark-operator/src/test/java/org/apache/spark/k8s/operator/config/SparkOperatorConfManagerTest.java
@@ -74,4 +74,41 @@ class SparkOperatorConfManagerTest {
       }
     }
   }
+
+  @Test
+  void testGetAll() {
+    String propBackUp = System.getProperty("spark.kubernetes.operator.foo");
+    System.setProperty("spark.kubernetes.operator.foo", "bar");
+    try {
+      SparkOperatorConfManager confManager = new SparkOperatorConfManager();
+
+      // Check initial configurations.
+      int initialSize = confManager.getAll().size();
+      Assertions.assertEquals(initialSize, confManager.initialConfig.size());
+      Assertions.assertEquals(0, confManager.configOverrides.size());
+      Assertions.assertEquals(0, confManager.metricsConfig.size());
+      Assertions.assertEquals(initialSize, confManager.getAll().size());
+
+      // Override existing config
+      confManager.refresh(Map.of("spark.kubernetes.operator.foo", "barbar"));
+      Assertions.assertEquals(initialSize, confManager.initialConfig.size());
+      Assertions.assertEquals(1, confManager.configOverrides.size());
+      Assertions.assertEquals(0, confManager.metricsConfig.size());
+      Assertions.assertEquals(initialSize, confManager.getAll().size());
+
+      // Override new configs and metrics
+      confManager.refresh(Map.of("k1", "v1", "k2", "v2"));
+      confManager.metricsConfig.put("m", "v");
+      Assertions.assertEquals(initialSize, confManager.initialConfig.size());
+      Assertions.assertEquals(2, confManager.configOverrides.size());
+      Assertions.assertEquals(1, confManager.metricsConfig.size());
+      Assertions.assertEquals(initialSize + 3, confManager.getAll().size());
+    } finally {
+      if (StringUtils.isNotEmpty(propBackUp)) {
+        System.setProperty("spark.kubernetes.operator.foo", propBackUp);
+      } else {
+        System.clearProperty("spark.kubernetes.operator.foo");
+      }
+    }
+  }
 }


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

Reply via email to