)]}'
{
  "commit": "95b0ca5d2f130ea864fb3e081b90b7a8b2144f0a",
  "tree": "b42004b4f3fbf6477f0f7b167678190cd87761d4",
  "parents": [
    "ed98a60a5d3569b46be53f342968fedc7cb4586b"
  ],
  "author": {
    "name": "Cheng Pan",
    "email": "chengpan@apache.org",
    "time": "Thu Nov 12 11:27:54 2026 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Nov 12 12:27:54 2026 +0900"
  },
  "message": "[ZEPPELIN-6701] Support Spark 4.1, 4.2 and 4.3\n\n### What is this PR for?\n\nAdds official Spark 4.1, 4.2 and 4.3 support.\n\n1. Adds `spark-4.1`, `spark-4.2` and `spark-4.3` build profiles, using Spark `4.1.3`, `4.2.0` and `4.3.0`.\n2. Extends the supported Spark version range to `3.3`-`4.3`; `4.4` is the unsupported-future boundary.\n3. Restructures the `spark-test` job as a matrix-driven job covering Spark, Scala, Java, and Python combinations.\n4. Runs Spark 4.1, 4.2 and 4.3 tests with JDK 17 and Python 3.14.\n5. Adds a Python 3.14 conda lock resolved from conda-forge, and pins the interpreter in the test environment YAMLs.\n6. Updates the Spark build documentation.\n\n### What type of PR is it?\n\nFeature\n\n### How should this be tested?\n\nCI validates all supported combinations through the matrix-driven `spark-test` job. The Python 3.14 runs install `testing/locks/python-3.14-linux-64.conda.lock`, which carries the Spark-derived dependency constraints, including `pandas\u003e\u003d2.2,\u003c3.0`, `numpy\u003e\u003d1.21`, `pyarrow\u003e\u003d18`, and `grpcio\u003e\u003d1.76,\u003c2`.\n\nLocally verified:\n\n```bash\n./mvnw package -pl spark/interpreter -am -DskipTests -Pspark-4.1 -Pspark-scala-2.13\n./mvnw package -pl spark/interpreter -am -DskipTests -Pspark-4.2 -Pspark-scala-2.13\n./mvnw test -pl spark/interpreter -Pspark-4.3 -Pspark-scala-2.13 -Dtest\u003dSparkVersionTest -DfailIfNoTests\u003dfalse\n```\n\nAlso verified the Python 3.14 lock solve and installation.\n\n### Screenshots\n\nN/A\n\n### How this resolves?\n\nProvides the Maven profiles, runtime version boundary, CI coverage, and documentation needed to test and build against Spark 4.1, 4.2 and 4.3.\n\n### Questions\n\n1. Does the licenses file need to update? No\n2. Is there breaking changes for older versions? No\n3. Does this need documentation? Yes\n\n\nCloses #5465 from pan3793/spark-41-42.\n\nSigned-off-by: Jongyoul Lee \u003cjongyoul@gmail.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "31b681d29787c125f00181f16d94717fb619f3ea",
      "old_mode": 33188,
      "old_path": ".github/workflows/core.yml",
      "new_id": "ae2f19693e98d36e4687483992abd3eee1b17e2a",
      "new_mode": 33188,
      "new_path": ".github/workflows/core.yml"
    },
    {
      "type": "modify",
      "old_id": "30f6c61d3cf10efb7a99d8dda6064bbd95967716",
      "old_mode": 33188,
      "old_path": "docs/setup/basics/how_to_build.md",
      "new_id": "5d9fddd50837e69d015b7ff4fa8456bc7203321b",
      "new_mode": 33188,
      "new_path": "docs/setup/basics/how_to_build.md"
    },
    {
      "type": "modify",
      "old_id": "a51f045ae8eef2d1ec00ab351051618cfc30a279",
      "old_mode": 33188,
      "old_path": "spark/interpreter/pom.xml",
      "new_id": "a2d3a98fecaaa621ea8c1e1c19456c2f41a000b3",
      "new_mode": 33188,
      "new_path": "spark/interpreter/pom.xml"
    },
    {
      "type": "modify",
      "old_id": "2db447985ae16755b44d0b1440fc125b64c5e01f",
      "old_mode": 33188,
      "old_path": "spark/interpreter/src/main/java/org/apache/zeppelin/spark/SparkVersion.java",
      "new_id": "c7bdbd20a3dfaac906353183107672ee79cf2a51",
      "new_mode": 33188,
      "new_path": "spark/interpreter/src/main/java/org/apache/zeppelin/spark/SparkVersion.java"
    },
    {
      "type": "modify",
      "old_id": "06aa392e4ca12d7a4016cd6e5db34a8bc057b06d",
      "old_mode": 33188,
      "old_path": "spark/interpreter/src/test/java/org/apache/zeppelin/spark/SparkVersionTest.java",
      "new_id": "479300837a64565aa8ed4a1654d12b639b5710ba",
      "new_mode": 33188,
      "new_path": "spark/interpreter/src/test/java/org/apache/zeppelin/spark/SparkVersionTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "46ab36cf523ef99a66a30119b2b43e5c8d0add3b",
      "new_mode": 33188,
      "new_path": "testing/env_python_3.14.yml"
    },
    {
      "type": "modify",
      "old_id": "20bd686c65fab0bc4539d7cb83cc34ae281f6508",
      "old_mode": 33188,
      "old_path": "testing/env_python_3.7.yml",
      "new_id": "e3231b1c27fea8a61d0ba4941778c9e6f46c8a44",
      "new_mode": 33188,
      "new_path": "testing/env_python_3.7.yml"
    },
    {
      "type": "modify",
      "old_id": "d125b9ce70c282866740345e07e7b4c84de86b64",
      "old_mode": 33188,
      "old_path": "testing/env_python_3.8.yml",
      "new_id": "9efe79addfc7bbb53981123e4caef9128a155408",
      "new_mode": 33188,
      "new_path": "testing/env_python_3.8.yml"
    },
    {
      "type": "modify",
      "old_id": "8c8de7ce712caac3c3650bd84f1da4c910811385",
      "old_mode": 33188,
      "old_path": "testing/locks/README.md",
      "new_id": "b20b371e8f616a1e97017aa0e013266c5943e4b4",
      "new_mode": 33188,
      "new_path": "testing/locks/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ff4ee29fe56714984d31c717de4318e87a13c07a",
      "new_mode": 33188,
      "new_path": "testing/locks/python-3.14-linux-64.conda.lock"
    }
  ]
}
