(cherry picked from commit 89af8bdb90)
* remove final identifier in serializers
i* revert/deprecate ProtobufSerializer.ARRAY_OF_BYTE_ARRAY
* adding back compatible empty constructor in serializers
* make FSM.State compatible
* add back ActorPath.ElementRegex
* revert SocketOption changes and add SocketOptionV2
see a6d3704ef6
* problem filter for ActorSystem and ActorPath
* problem filter for ByteString
* problem filter for deprecated Timeout methods
* BalancingPool companion
* ask
* problem filter for ActorDSL
* event bus
* exclude hasSubscriptions
* exclude some problems in testkit
* boundAddress and addressFromSocketAddress
* Pool nrOfInstances
* PromiseActorRef
* check with 2.3.9
* migration guide note
* explicit exclude of final class problems
* The problem is that when an extension partly fails the next
attempt will typically generate another failure, such as
"actor name [snapshot-store] is not unique"
* We have seen this problem for both persistence and cluster
extensions
* Extensions are now only given one chance to initialize and
thereafter fail fast with same exception as the the first failure
To implement the feature VirtualPathContainer.! was overridden to handle
ActorSelectionMessages. In ActorSelectionMessages only SelectChildName
elements are supported to disallow counterintuitive behaviors (like
completing all outstanding ask operations).
This greatly simplifies the Receptionist by providing the ability to
express a polymorphic map that calculates the type of each value from
the type of its key. Another possible use of this map is to express the
Extensions map in a type-safe fashion (no casts needed).
Guardians are now consistent with other actors in that they
do not handle messages they can't act upon. Instead of handling
messages and forwarding them to Dead Letters, guardians now
simply ignore these messages.
This is the first step towards more type-safety in Actor interactions,
comprising:
* generic ActorRef[T] that only accepts T messages
* generic ActorSystem[T] extends ActorRef[T] (sending to the guardian,
whose Props[T] are provided for ActorSystem construction)
* removed the Actor trait: everything in there has been made into
messages and signals
* new Behavior[T] abstraction that consumes messages (of type T) or
Signals (lifecycle hooks, Terminated, ReceiveTimeout, Failed),
producing the next Behavior[T] as the result each time
* the ask pattern is provided and yields properly typed Futures
* variants of ActorContext are provided for synchronous testing of
Behaviors
All of this is implemented without touching code outside akka-typed
(apart from making guardianProps configurable), creating wrapper objects
around ActorRef, ActorContext, ActorSystem, Props and providing an Actor
implementation that just runs a Behavior.
CircuitBreaker used to wait idenfinitly for a call and only compare
duration after the facts.
It will now increment its failure count early and throw a TimeoutException or return a Failure[TimeoutException].
by having Mailbox extend ForkJoinTask and using the fact that ForkJoinTask.exec when returning
false does not set completion on the task, so it is free to be resubmitted to the ForkJoinPool
without reinitialization.
Also adds the ability to use fork() when the currentThread is a worker thread of the pool that we want to execute on.
Adds a JMH benchmark for both the ping-pong performance and pipelined throughput.
Conflicts:
project/AkkaBuild.scala