GithubHelp home page GithubHelp logo

nextgentel / akka-tools Goto Github PK

View Code? Open in Web Editor NEW
61.0 12.0 12.0 1.76 MB

Open source tools to simplify Akka event sourcing, journaling/persistence, serialization, clustering and sharding.

License: MIT License

Scala 100.00%
akka akka-persistence jdbc-journal akka-cluster akka-cluster-sharding scala event-sourcing

akka-tools's People

Contributors

mbknor avatar ovevang avatar zapodot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

akka-tools's Issues

prersistenceId resolving/generating is different when using akka 2.4 compared to akka 2.3

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

Problem restoring a view state when there are invalid events

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.

Exception not including/resolving persistenceId

The following code in

log.error(e, s"JdbcEventsByPersistenceIdActor stopped for persistenceId=$persistenceId")

} 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

Match error when loading aggregate with id '*'

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

Release 0.9.0

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

jdbc-Serializing does not work with SerializerWithStringManifest

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]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.