You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[SPARK-52280][TEST] Upgrade MiMa to use 4.0.0 as previousSparkVersion
### What changes were proposed in this pull request?
The main change of this pr as follows:
1. Bump MiMa's `previousSparkVersion` to 4.0.0 and explicitly specify the `_2.13` suffix for the artifactId; otherwise, the `_2.12` suffix will be added by default, but Spark 4.0 does not support Scala 2.12, and there is no `spark-*_2.12.jar` available.
2. Clean up expired rules and case match
2.1. Remove `v40excludes` and `case v if v.startsWith("4.0")`
2.2 An exclude rule related to `SPARK-51261` has been added for `v41excludes`. This was likely an omission from before.
3. In `GenerateMIMAIgnore.scala`, replacing `Opcodes.ASM7` with `Opcodes.ASM8` has fixed the following error:
```
Exception in thread "main" java.lang.UnsupportedOperationException: Record requires ASM8
at org.objectweb.asm.ClassVisitor.visitRecordComponent(ClassVisitor.java:323)
at org.objectweb.asm.ClassReader.readRecordComponent(ClassReader.java:954)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:732)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:425)
at org.clapper.classutil.asm.ClassFile$.load(ClassFinderImpl.scala:224)
at org.clapper.classutil.ClassFinder.classData(ClassFinder.scala:404)
at org.clapper.classutil.ClassFinder.$anonfun$processOpenZip$2(ClassFinder.scala:359)
at scala.collection.Iterator$$anon$9.next(Iterator.scala:584)
at scala.collection.Iterator$$anon$10.nextCur(Iterator.scala:594)
at scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:608)
at scala.collection.immutable.LazyList$.scala$collection$immutable$LazyList$$stateFromIterator(LazyList.scala:1195)
at scala.collection.immutable.LazyList$.$anonfun$stateFromIterator$1(LazyList.scala:1195)
at scala.collection.immutable.LazyList.scala$collection$immutable$LazyList$$state$lzycompute(LazyList.scala:282)
at scala.collection.immutable.LazyList.scala$collection$immutable$LazyList$$state(LazyList.scala:273)
at scala.collection.immutable.LazyList.isEmpty(LazyList.scala:292)
at scala.collection.immutable.LazyList.$anonfun$lazyAppendedAll$1(LazyList.scala:401)
at scala.collection.immutable.LazyList.scala$collection$immutable$LazyList$$state$lzycompute(LazyList.scala:282)
at scala.collection.immutable.LazyList.scala$collection$immutable$LazyList$$state(LazyList.scala:273)
at scala.collection.immutable.LazyList.isEmpty(LazyList.scala:292)
at scala.collection.immutable.LazyList.$anonfun$lazyAppendedAll$1(LazyList.scala:401)
at scala.collection.immutable.LazyList.scala$collection$immutable$LazyList$$state$lzycompute(LazyList.scala:282)
at scala.collection.immutable.LazyList.scala$collection$immutable$LazyList$$state(LazyList.scala:273)
at scala.collection.immutable.LazyList.isEmpty(LazyList.scala:292)
at scala.collection.immutable.LazyList.$anonfun$mapImpl$1(LazyList.scala:539)
at scala.collection.immutable.LazyList.scala$collection$immutable$LazyList$$state$lzycompute(LazyList.scala:282)
at scala.collection.immutable.LazyList.scala$collection$immutable$LazyList$$state(LazyList.scala:273)
at scala.collection.immutable.LazyList.isEmpty(LazyList.scala:292)
at scala.collection.immutable.LazyList$.$anonfun$filterImpl$1(LazyList.scala:1036)
at scala.collection.immutable.LazyList.scala$collection$immutable$LazyList$$state$lzycompute(LazyList.scala:282)
at scala.collection.immutable.LazyList.scala$collection$immutable$LazyList$$state(LazyList.scala:273)
at scala.collection.immutable.LazyList.isEmpty(LazyList.scala:292)
at scala.collection.immutable.LazyList$.$anonfun$filterImpl$1(LazyList.scala:1036)
at scala.collection.immutable.LazyList.scala$collection$immutable$LazyList$$state$lzycompute(LazyList.scala:282)
at scala.collection.immutable.LazyList.scala$collection$immutable$LazyList$$state(LazyList.scala:273)
at scala.collection.immutable.LazyList.isEmpty(LazyList.scala:292)
at scala.collection.immutable.LazyList$LazyIterator.hasNext(LazyList.scala:1274)
at scala.collection.mutable.Growable.addAll(Growable.scala:61)
at scala.collection.mutable.Growable.addAll$(Growable.scala:57)
at scala.collection.immutable.SetBuilderImpl.addAll(Set.scala:405)
at scala.collection.immutable.Set$.from(Set.scala:362)
at scala.collection.IterableOnceOps.toSet(IterableOnce.scala:1469)
at scala.collection.IterableOnceOps.toSet$(IterableOnce.scala:1469)
at scala.collection.AbstractIterable.toSet(Iterable.scala:935)
at org.apache.spark.tools.GenerateMIMAIgnore$.getClasses(GenerateMIMAIgnore.scala:165)
at org.apache.spark.tools.GenerateMIMAIgnore$.privateWithin(GenerateMIMAIgnore.scala:64)
at org.apache.spark.tools.GenerateMIMAIgnore$.main(GenerateMIMAIgnore.scala:131)
at org.apache.spark.tools.GenerateMIMAIgnore.main(GenerateMIMAIgnore.scala)
```
### Why are the changes needed?
To ensure that MiMa checks cover new APIs added in Spark 4.0.0.
### Does this PR introduce _any_ user-facing change?
No
### How was this patch tested?
- Pass GitHub Actions
- Local verification of `dev/mima` can be executed successfully.
### Was this patch authored or co-authored using generative AI tooling?
No
Closesapache#50999 from LuciferYang/SPARK-52280.
Authored-by: yangjie01 <[email protected]>
Signed-off-by: yangjie01 <[email protected]>
0 commit comments