Comments (10)
Thanks for reporting. That is interesting, since 2.4-M1 is supposed to be compatible and I don't think I use any akka internals here.
Do you see any exceptions in the log?
I will investigate.
from akka-data-replication.
after I clone your code,update the dependence to akka 2.4-M1,do clean and test,all test passed.
so maybe I just need a recompile.
from akka-data-replication.
maybe cause is the change of making ActorPath to AbstractPath for the static forward.
[JVM-2] java.lang.IncompatibleClassChangeError: Found class akka.actor.ActorPath, but interface was expected
[JVM-2] at akka.remote.RemoteActorRefProvider.init(RemoteActorRefProvider.scala:167)
[JVM-2] at akka.cluster.ClusterActorRefProvider.init(ClusterActorRefProvider.scala:30)
[JVM-2] at akka.actor.ActorSystemImpl.liftedTree2$1(ActorSystem.scala:663)
[JVM-2] at akka.actor.ActorSystemImpl._start$lzycompute(ActorSystem.scala:660)
[JVM-2] at akka.actor.ActorSystemImpl._start(ActorSystem.scala:660)
[JVM-2] at akka.actor.ActorSystemImpl.start(ActorSystem.scala:676)
[JVM-2] at akka.actor.ActorSystem$.apply(ActorSystem.scala:143)
[JVM-2] at akka.actor.ActorSystem$.apply(ActorSystem.scala:120)
[JVM-2] at akka.remote.testkit.MultiNodeSpec.<init>(MultiNodeSpec.scala:252)
[JVM-2] at akka.contrib.datareplication.ReplicatorChaosSpec.<init>(ReplicatorChaosSpec.scala:40)
after I recompile it works.
from akka-data-replication.
Excellent, then we have an issue with the binary compatibility. Thanks again.
cc @rkuhn
from akka-data-replication.
I copy your code to my project,and recompile it,drop the dependency of the release,it works.
And there is no such an exception rise in when run it,maybe we should log something here:
https://github.com/akka/akka/blob/master/akka-actor/src/main/scala/akka/actor/ActorSystem.scala#L671
from akka-data-replication.
yeah, recompilation solves it, but the goal with binary compatibility is that a library like this should work without recompilation.
In this case ActorPath was changed from a trait to an abstract class, and we thought that would be alright, but obviously it was not.
from akka-data-replication.
Okay, we’ll need to revert that change, then, and add the static forwarders elsewhere, e.g. in ActorPaths.
from akka-data-replication.
yes,ActorPaths is pretty fine.
from akka-data-replication.
I confirm that the issue is real. I get this exception:
java.lang.IncompatibleClassChangeError: Found class akka.actor.ActorPath, but interface was expected
at akka.contrib.datareplication.Replicator.isLocalSender(Replicator.scala:811)
at akka.contrib.datareplication.Replicator$$anonfun$1.applyOrElse(Replicator.scala:759)
at akka.actor.Actor$class.aroundReceive(Actor.scala:475)
at akka.contrib.datareplication.Replicator.aroundReceive(Replicator.scala:687)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
at akka.actor.ActorCell.invoke(ActorCell.scala:487)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:256)
at akka.dispatch.Mailbox.run(Mailbox.scala:223)
at akka.dispatch.Mailbox.exec(Mailbox.scala:233)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
The offending line in the Replicator:
def isLocalSender(): Boolean = !sender().path.address.hasGlobalScope
from akka-data-replication.
Closing this here, since it is tracked in akka/akka#17606
from akka-data-replication.
Related Issues (20)
- Rename private method isOtherOutdated to isOtherDifferent HOT 3
- Early preview status HOT 7
- Retrieve current state when starting subscription
- Switch to sbt/sbt-protobuf plugin HOT 1
- ORSet's merge use VectorClock HOT 2
- Quorum should work for 2 nodes (and all even numbers) HOT 3
- Add another convenience constructor for Update HOT 1
- sbt cannot download from dl.bintray.com/patriknw/maven HOT 5
- Remove defaults for ReadConsistency and WriteConsistency HOT 1
- Clarify that UpdateFailure doesn't mean that the update failed
- Point out the risk of WriteOne HOT 1
- Abort Update if specified readConsistency fails
- ModifyException should carry the original exception
- Guidelines HOT 3
- State partitioning HOT 3
- Strange merge after ORMap[ORSet] put
- Add ORMultiMap HOT 1
- Rename the replicated data types HOT 9
- Message to flush changes immediately HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from akka-data-replication.