scala3: remove runtime trait ordering check (#30904)
This commit is contained in:
parent
a8c67fc2e6
commit
9b174a31a6
5 changed files with 50 additions and 11 deletions
2
.github/workflows/scala3-build.yml
vendored
2
.github/workflows/scala3-build.yml
vendored
|
|
@ -21,7 +21,7 @@ jobs:
|
||||||
- akka-testkit/test akka-actor-tests/test
|
- akka-testkit/test akka-actor-tests/test
|
||||||
- akka-actor-testkit-typed/test akka-actor-typed-tests/test
|
- akka-actor-testkit-typed/test akka-actor-typed-tests/test
|
||||||
- akka-bench-jmh/test
|
- akka-bench-jmh/test
|
||||||
- akka-cluster/test akka-cluster-tools/test akka-cluster-typed/test akka-distributed-data/test akka-cluster-metrics/test akka-cluster-sharding/Test/compile akka-cluster-sharding-typed/test
|
- akka-cluster/test akka-cluster-tools/test akka-cluster-typed/test akka-distributed-data/test akka-cluster-metrics/test akka-cluster-sharding/test akka-cluster-sharding-typed/test
|
||||||
- akka-discovery/test akka-coordination/test
|
- akka-discovery/test akka-coordination/test
|
||||||
- akka-persistence/test akka-persistence-shared/test akka-persistence-query/test akka-persistence-typed/test akka-persistence-testkit/test
|
- akka-persistence/test akka-persistence-shared/test akka-persistence-query/test akka-persistence-typed/test akka-persistence-testkit/test
|
||||||
- akka-pki/test akka-slf4j/test
|
- akka-pki/test akka-slf4j/test
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2021 Lightbend Inc. <https://www.lightbend.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package akka.persistence
|
||||||
|
|
||||||
|
import akka.annotation.InternalApi
|
||||||
|
|
||||||
|
/**
|
||||||
|
* INTERNAL API
|
||||||
|
*/
|
||||||
|
@InternalApi
|
||||||
|
private[persistence] object TraitOrder {
|
||||||
|
val canBeChecked = true
|
||||||
|
|
||||||
|
def checkBefore(clazz: Class[_], one: Class[_], other: Class[_]): Unit = {
|
||||||
|
val interfaces = clazz.getInterfaces
|
||||||
|
val i = interfaces.indexOf(other)
|
||||||
|
val j = interfaces.indexOf(one)
|
||||||
|
if (i != -1 && j != -1 && i < j)
|
||||||
|
throw new IllegalStateException(
|
||||||
|
s"For ${clazz.getName}, use ${one.getName} with ${other.getName}, instead of ${other.getName} with ${one.getName}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2021 Lightbend Inc. <https://www.lightbend.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package akka.persistence
|
||||||
|
|
||||||
|
import akka.annotation.InternalApi
|
||||||
|
|
||||||
|
/**
|
||||||
|
* INTERNAL API
|
||||||
|
*/
|
||||||
|
@InternalApi
|
||||||
|
private[persistence] object TraitOrder {
|
||||||
|
val canBeChecked = false
|
||||||
|
|
||||||
|
// No-op on Scala 3
|
||||||
|
def checkBefore(clazz: Class[_], one: Class[_], other: Class[_]): Unit =
|
||||||
|
()
|
||||||
|
}
|
||||||
|
|
@ -58,13 +58,7 @@ private[persistence] trait Eventsourced
|
||||||
import JournalProtocol._
|
import JournalProtocol._
|
||||||
import SnapshotProtocol.{ LoadSnapshotFailed, LoadSnapshotResult }
|
import SnapshotProtocol.{ LoadSnapshotFailed, LoadSnapshotResult }
|
||||||
|
|
||||||
{
|
TraitOrder.checkBefore(getClass, classOf[akka.actor.Timers], classOf[PersistentActor])
|
||||||
val interfaces = getClass.getInterfaces
|
|
||||||
val i = interfaces.indexOf(classOf[PersistentActor])
|
|
||||||
val j = interfaces.indexOf(classOf[akka.actor.Timers])
|
|
||||||
if (i != -1 && j != -1 && i < j)
|
|
||||||
throw new IllegalStateException("use Timers with PersistentActor, instead of PersistentActor with Timers")
|
|
||||||
}
|
|
||||||
|
|
||||||
private val extension = Persistence(context.system)
|
private val extension = Persistence(context.system)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -101,10 +101,12 @@ class TimerPersistentActorSpec extends PersistenceSpec(ConfigFactory.parseString
|
||||||
}
|
}
|
||||||
|
|
||||||
"reject wrong order of traits, PersistentActor with Timer" in {
|
"reject wrong order of traits, PersistentActor with Timer" in {
|
||||||
|
if (TraitOrder.canBeChecked) {
|
||||||
val pa = system.actorOf(Props[WrongOrder]())
|
val pa = system.actorOf(Props[WrongOrder]())
|
||||||
watch(pa)
|
watch(pa)
|
||||||
expectTerminated(pa)
|
expectTerminated(pa)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
"handle AutoReceivedMessage's automatically" in {
|
"handle AutoReceivedMessage's automatically" in {
|
||||||
val pa = system.actorOf(testProps("p3"))
|
val pa = system.actorOf(testProps("p3"))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue