diff --git a/NEXT_CHANGELOG.md b/NEXT_CHANGELOG.md index a58fc01d6..57e3889d1 100644 --- a/NEXT_CHANGELOG.md +++ b/NEXT_CHANGELOG.md @@ -6,6 +6,8 @@ ### Bug Fixes +* Fixed `selectSparkVersion()` method to use contains() instead of equals() for spark version matching. + ### Documentation ### Internal Changes diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/mixin/ClustersExt.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/mixin/ClustersExt.java index 79be6c740..dc86da730 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/mixin/ClustersExt.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/mixin/ClustersExt.java @@ -50,7 +50,7 @@ public String selectSparkVersion(SparkVersionSelector selector) throws IllegalAr matches = version.getName().contains("LTS") || version.getKey().contains("-esr-"); } if (matches && selector.sparkVersion != null) { - matches = ("Apache Spark " + selector.sparkVersion).equals(version.getName()); + matches = version.getName().contains("Apache Spark " + selector.sparkVersion); } if (matches) { versions.add(version.getKey()); diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/ClustersExtTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/ClustersExtTest.java index 8c35de9e2..841d58956 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/ClustersExtTest.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/ClustersExtTest.java @@ -118,4 +118,29 @@ void nullComparisonTest() { String nodeType = clustersExt.selectNodeType(new NodeTypeSelector().withLocalDisk()); assertEquals("testId1", nodeType); } + + private GetSparkVersionsResponse testGetSparkVersionsWithSparkVersion() { + Collection versions = new ArrayList<>(); + // Mock realistic Databricks Runtime version based on actual API response format + // The key point: version name contains more than just "Apache Spark X.Y.Z" + versions.add( + new SparkVersion() + .setName("13.3 LTS (includes Apache Spark 3.4.1, Scala 2.12)") + .setKey("13.3.x-scala2.12")); + return new GetSparkVersionsResponse().setVersions(versions); + } + + @Test + void sparkVersionWithSparkVersionParameter() { + ClustersExt clustersExt = new ClustersExt(clustersMock); + Mockito.doReturn(testGetSparkVersionsWithSparkVersion()).when(clustersMock).sparkVersions(); + + // Test that sparkVersion parameter works with realistic API response format + // This tests the contains() fix - the version name is "13.3 LTS (includes Apache Spark 3.4.1, + // Scala 2.12)" + // not just "Apache Spark 3.4.1", so equals() would fail but contains() works + String sparkVersion = + clustersExt.selectSparkVersion(new SparkVersionSelector().withSparkVersion("3.4.1")); + assertEquals("13.3.x-scala2.12", sparkVersion); + } }