* include state in EventSourcedBehavior.receiveSignal, #26574
* because state type can't be inferred in RecoveryCompleted
* and probably useful to always have access to the state for the signals
* PartialFunction with (state,signal) tuple
* improve how to handle exceptions from signals
This change ignore the terminated passed from untyped and map it into Done,
with some minor changes for testing termination.
termiate() returns Unit to not bias it towards the Scala API, completion
can be observed with whenTerminated or getWhenTerminated
Instead of delivering the custom message, store it locally and then
deliver it when the Terminated instance is received.
This ensures that terminatedQueued is properly cleaned when watchWith is
used.
* lease api
* Cluster singleton manager with lease
* Refactor OldestData to use option for actor reference
* Sharding with lease
* Docs for singleton and sharding lease + config for sharding lease
* Have ddata shard wait until lease is acquired before getting state
* Table switch for interpreter ~20% faster
* Avoid instanceof on message in interpreter (but keep single method)
~10% faster
* Use the behavior tags all over ~4% improvement
* Make next a single tableswitch
* Behavior.wrap isn't actually used anymore
* Sidestep the untyped behavior stack
* The scenario was (probably) that a node was restarted with
same host:port and then didn't join the same cluster. The DData
Replicator in the original cluster would continue sending messages
to the new incarnation resulting in false removals.
* The fix is that DData Replicator includes the system uid of the sending
or target system in messages and if recipient gets a message that is from/to
unknown it will discard it and thereby not spreading information across
different clusters.
* Reproduced in ClusterReceptionistSpec
* Much hardening of other things in ClusterReceptionistSpec
* There are also some improvements to ClusterReceptionist to not leak
Listing with refs of removed nodes.
* use ClusterShuttingDown
* The reason for using sender system uid instead of target uid in messages
like Read and Write is that then the optimization for sending same message
to many destinations can remain.
* Adds internal access to materializer before initialization (#25324)
* Implements new actorRef source based on graph stage (#25324)
* Removes obsolete actorRef source (#25324)
* Improves backwards compatibility with old implementation (#25324)
* Removes dedicated new subclass for materializer access again (#25324)
* Improves implementation (#25324)
* Finalizes implementation (#25324)
* Small improvements to API and documentation (#25324)
* Completion strategy as a replacement for poison pill (#25324)
* Adding more tests and updating the documentation (#25324)
* Enable strict scalac options for akka-protobuf
Unfortunately it still produces a Java warning, but I see no safe way around
that (so we can't just add `-Werror` to javacOptions)
* Remove 'dead' code, bringing the class back in line with upstream