Skip to content

Binary incompatibility between 2.13.16 and 2.13.17: MurmurHash3.caseClassHash$default$2() missing in 2.13.16 #13181

@alicez-db

Description

@alicez-db

Summary

When running Apache Spark 4.1.0 with Scala 2.13.16 on the runtime classpath, Spark fails with a NoSuchMethodError on scala.util.hashing.MurmurHash3$.caseClassHash$default$2().

Filing to ask whether this method is expected to exist in Scala 2.13.16, or whether it was introduced in a later 2.13.x patch.

Reproduction

  1. Use Apache Spark 4.1.0
  2. Use Scala 2.13.16 on the runtime classpath
  3. Run any Spark code that exercises Catalyst (e.g. a basic DataFrame operation that triggers TreeNode.hashCode)

Observed error

java.lang.NoSuchMethodError: 'java.lang.String scala.util.hashing.MurmurHash3$.caseClassHash$default$2()'
  at org.apache.spark.sql.catalyst.trees.TreeNode.$anonfun$_hashCode$1(TreeNode.scala:226)
  at org.apache.spark.util.BestEffortLazyVal.apply(BestEffortLazyVal.scala:53)
  at org.apache.spark.sql.catalyst.trees.TreeNode.hashCode(TreeNode.scala:227)

Questions

  1. Does MurmurHash3.caseClassHash$default$2() exist in Scala 2.13.16, or was it introduced in a later 2.13.x patch?
  2. If it does not exist in 2.13.16, is that an expected outcome of patch version differences, or unintentional?
  3. Is there a recommended Scala 2.13.x patch version range for running Apache Spark 4.1.0?

Environment

  • Scala 2.13.16 (runtime)
  • Apache Spark 4.1.0
  • JDK 17

Context

I work at Databricks. A customer hit this while running Spark 4.1.0 on a runtime that ships Scala 2.13.16. Filing here for clarity on the Scala side. Happy to provide a minimal reproducer if helpful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions