nextgentel / akka-tools Goto Github PK
View Code? Open in Web Editor NEWOpen source tools to simplify Akka event sourcing, journaling/persistence, serialization, clustering and sharding.
License: MIT License
Open source tools to simplify Akka event sourcing, journaling/persistence, serialization, clustering and sharding.
License: MIT License
When using akka 2.3, akka-tools was resolving persistenceId based on actorPath which was enforced by sharding-component. In Akka 2.4 this is not possible since the sharding-bucket is included in the path.
We therefor have to rewrite how persitenceId's are resolved/created.
It is important to make it configurable so that it can be used with the persistenceIds used with akka 2.3
We are hitting this bug: aaberg/sql2o#202
It would be much better to try out new fixes and features if snapshots where auto-deployed to sonatype
Throwing an exception during a state transition causes the restoration to fail, again resulting in a restart of the actor. This causes a loop, currently ending when the actor caching times out sending a poison pill.
Adding appropriate execption handling when applying events should resolve the issue.
The following code in
} catch {
case e: Exception โ
log.error(e, s"JdbcEventsByPersistenceIdActor stopped for persistenceId=$persistenceId")
onErrorThenStop(e)
}
Does not resolve $persistenceId.
It is logged like this:
2017-10-01 11:45:06,436 lvl=ERROR, JdbcEventsByPersistenceIdActor stopped for persistenceId=$persistenceId
Working on Akka 2.4.x support in https://github.com/NextGenTel/akka-tools/tree/akka_2.4
If you try to load an aggregate with name '*', all events of that aggregate type is loaded (* being treated as wildcard in select). Thees events are wrapped in JournalEntry which gives a match error in GeneralAggregateBase.scala:128. This could/should be checked for in EnhancedPersistenceActor:161 before casting event to E.
Happends in akka-tools version 1.0.12
As the current state of affairs is pretty good, I think we can create a 0.9.0 release now and keep up the development on new features
Hello,
It would be great if a sample project was there with more detailed instructions on how to set up the Seed Node resolution and Split Brain detection. Many thanks for providing such valuable tools
Cheers
Cal
Logging this as warning generates too much noise in the log.
This is seen when using sharding with remeber-entities like this:
java.lang.IllegalArgumentException: Unimplemented deserialization of message with manifest [akka.cluster.sharding.Shard$State] in [akka.cluster.sharding.protobuf.ClusterShardingMessageSerializer]
at akka.cluster.sharding.protobuf.ClusterShardingMessageSerializer.fromBinary(ClusterShardingMessageSerializer.scala:164) ~[akka-cluster-sharding_2.11-2.4.1.jar:na]
at akka.serialization.SerializerWithStringManifest.fromBinary(Serializer.scala:131) ~[akka-actor_2.11-2.4.1.jar:na]
at akka.serialization.Serializer$class.fromBinary(Serializer.scala:65) ~[akka-actor_2.11-2.4.1.jar:na]
at akka.serialization.SerializerWithStringManifest.fromBinary(Serializer.scala:99) ~[akka-actor_2.11-2.4.1.jar:na]
at no.nextgentel.oss.akkatools.persistence.jdbcjournal.JdbcSnapshotStore.loadAsync(JdbcJournal.scala:156) ~[akka-tools-jdbc-journal_2.11-1.0.4.1.jar:1.0.4.1]
at akka.persistence.snapshot.SnapshotStore$$anonfun$1$$anonfun$applyOrElse$5.apply(SnapshotStore.scala:37) ~[akka-persistence_2.11-2.4.0.jar:na]
at akka.persistence.snapshot.SnapshotStore$$anonfun$1$$anonfun$applyOrElse$5.apply(SnapshotStore.scala:37) ~[akka-persistence_2.11-2.4.0.jar:na]
at akka.pattern.CircuitBreaker$State$class.materialize$1(CircuitBreaker.scala:298) ~[akka-actor_2.11-2.4.1.jar:na]
at akka.pattern.CircuitBreaker$State$class.callThrough(CircuitBreaker.scala:315) ~[akka-actor_2.11-2.4.1.jar:na]
at akka.pattern.CircuitBreaker$Closed$.callThrough(CircuitBreaker.scala:363) ~[akka-actor_2.11-2.4.1.jar:na]
at akka.pattern.CircuitBreaker$Closed$.invoke(CircuitBreaker.scala:371) ~[akka-actor_2.11-2.4.1.jar:na]
at akka.pattern.CircuitBreaker.withCircuitBreaker(CircuitBreaker.scala:115) ~[akka-actor_2.11-2.4.1.jar:na]
at akka.persistence.snapshot.SnapshotStore$$anonfun$1.applyOrElse(SnapshotStore.scala:37) ~[akka-persistence_2.11-2.4.0.jar:na]
at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:170) ~[scala-library-2.11.7.jar:na]
at akka.actor.Actor$class.aroundReceive(Actor.scala:480) ~[akka-actor_2.11-2.4.1.jar:na]
at no.nextgentel.oss.akkatools.persistence.jdbcjournal.JdbcSnapshotStore.aroundReceive(JdbcJournal.scala:134) ~[akka-tools-jdbc-journal_2.11-1.0.4.1.jar:1.0.4.1]
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526) [akka-actor_2.11-2.4.1.jar:na]
at akka.actor.ActorCell.invoke(ActorCell.scala:495) [akka-actor_2.11-2.4.1.jar:na]
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257) [akka-actor_2.11-2.4.1.jar:na]
at akka.dispatch.Mailbox.run(Mailbox.scala:224) [akka-actor_2.11-2.4.1.jar:na]
at akka.dispatch.Mailbox.exec(Mailbox.scala:234) [akka-actor_2.11-2.4.1.jar:na]
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [scala-library-2.11.7.jar:na]
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [scala-library-2.11.7.jar:na]
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [scala-library-2.11.7.jar:na]
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [scala-library-2.11.7.jar:na]
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.