spotify/magnolify

magnolify.bigtable.ByteStringComparator is built with Java 11 since 0.4.7 release

mattnworb opened this issue · 0 comments

It looks like the class magnolify.bigtable.ByteStringComparator is accidentally being compiled with Java 11 since version 0.4.7:

$ javap -v -cp magnolify-bigtable_2.12-0.4.8.jar magnolify.bigtable.ByteStringComparator  | grep "major version"
  major version: 55

$ javap -v -cp magnolify-bigtable_2.12-0.4.7.jar magnolify.bigtable.ByteStringComparator  | grep "major version"
  major version: 55

$ javap -v -cp magnolify-bigtable_2.12-0.4.6.jar magnolify.bigtable.ByteStringComparator  | grep "major version"
  major version: 52

list of classfile major versions by release

I noticed this does not happen for all classes in the jar, perhaps a difference between the Java sources and Scala sources in https://github.com/spotify/magnolify/tree/main/bigtable/src:

$ javap -v -cp magnolify-bigtable_2.12-0.4.8.jar magnolify.bigtable.BigtableType  | grep "major version"
  major version: 52

$ javap -v -cp magnolify-bigtable_2.12-0.4.8.jar magnolify.bigtable.Columns  | grep "major version"
  major version: 52

This came up when a team recently upgraded to version 0.4.8 (from 0.4.6) of the library (I'll fill this in later) on a pipeline running on Cloud Dataflow with Java 8 workers:

java.lang.UnsupportedClassVersionError: magnolify/bigtable/ByteStringComparator has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0