* !typ Change the ActorContext#ask in javadsl to accept a Duration instead of Timeout.
* !typ Change the ActorContext#setReceiveTimeout's parameter name from d to receiveTimeout.
* Replace TimerMsg hierarchy with a simple mix-in
* Fix a couple of typos
* Remove the need for a cast but just passing a log
* Remove the need for casts by making TimerInterceptor specify it handles Ts
* Prefer a sealed class to a sealed case class
* Tighten MatchError handling in fishForMessage
Avoid a whole bunch of other code being accidentally handled.
Also it allows for the inner 'loop' method to be @tailrec (next commit).
* Guarantee match exhaustion in fishForMessage
... by introducing FishingOutcome.ContinueOutcome to the type hierarchy.
* Simplify some timeout calculation in fishForMessage
'timeout' is always finite, as it's a `FiniteDuration`, and, even if it
weren't, the calculation is safe for non-finite durations.
* Make fishForMessage's inner loop @tailrec!
Apparently @tailrec and try/catch (with a re-throw in the catch) don't
mix well.
* Avoid double handing of timeouts in fishForMessage
If 'newTimeout' is sub-zero, just loop again which will trigger the
other throw.
* Make receiveOne return Option[M] rather than nullable M
Avoid future users from forgetting to consider the null case, which
happened in fishForMessage_internal.
* Switch to pattern matching Options
* Cast properly
Thanks, type inferencer, for inferring Nothing there! o_O
* Make fish's PartialFunction convenience explicit
* Update the scaladsl fishForMessage Scaladocs
* Restore MatchError catching logic & docs
TIL partial functions aren't of class PartialFunction anymore, they're
lambda classes.
* Tweak assertFail so it can be used more
* Avoid name shadowing
... on request. (I <3 name shadowing)
* Fix formatting
* Update issue templates
To perhaps make it clearer that https://discuss.akka.io is the place for questions?
* Remove top-level template in favour of multiple templates
* Remove unintentional hyphens, reword feature request template
Having it be AnyRef just makes it harder to use with a generic type,
because now instead of any type `T` it has to be a type `T <: AnyRef`.
There's no benefit in having it as AnyRef over Any.
This commit avoids memory being retained for groupBy. Prior to the commit, closedSubstreams could grow unbounded. This commit includes the size of closedSubstreams when considering to take on a new substream, while retaining the semantics described by its Flow API.
* Testing of singleton leaving
* gossip optimization, exiting change to two oldest per role
* hardening ClusterSingletonManagerIsStuck restart, increase ClusterSingletonManagerIsStuck