* Use snapshot-after in config to periodical snapshot in PersistentFSM (#21563)
* akka.persistence.fsm.snapshot-after is either off or a numerical value
* Use Akka Extension for snapshot-after in PersistentFSM
When starting many persistent actors at the same time the journal
its data store is protected from being overloaded by limiting number
of recoveries that can be in progress at the same time.
(cherry picked from commit afc9df17a7faf2a239598788ff48f3bf2cd7b605)
* re-implement javadsl testkit
* fix mima problem
* rebase master
* move ImplicitSender/DefaultTimeout to scaladsl
* undo the change of moving scala api
* fix return type and add doc
* resolve conflicts and add more comments
* Receive class that wraps PartialFunction, to avoid
scary scala types
* move AbstractActorContext to AbstractActor.ActorContext
* converting docs, many, many UntypedActor
* removing UntypedActor docs
* add unit test for ReceiveBuilder
* MiMa filters
* consistent use of getContext(), self(), sender()
* rename cross references
* migration guide
* skip samples for now
* improve match type safetyi, add matchUnchecked
* the `? extends P` caused code like this to compile:
`match(String.class, (Integer i) -> {})`
* added matchUnchecked, since it can still be useful (um, convenient)
to be able to do:
`matchUnchecked(List.class, (List<String> list) -> {})`
* eleminate some scala.Option
* preRestart
* findChild
* ActorIdentity.getActorRef
* The reason is to have a consistent approach for Sequence and
TimeBasedUUID, which are both intended as unique event identifiers.
* This means that you can use the offset that is returned in `EventEnvelope`
as the `offset` parameter in a subsequent query.
When multiple event-adapters are configured they are combined into a single instance of `CombinedReadEventAdapter`.
However `CombinedReadEventAdpater` is not just a `ReadEventAdapter` but a full `EventAdapter`
which throws an `IllegalStateException("CombinedReadEventAdapter must not be used when writing (creating manifests) events!")`
when its `toJournal` method is called.
The `CombinedReadEventAdapter` is not wrapped into `NoopWriteEventAdapter` (because it's not a `ReadEventAdapter`)
and therefore it doesn't avoid the `toJournal` calls.
This is especially problematic when multiple `ReadEventAdapter` are combined together as illustrated in the new testcase.
* to be able to introduce new messages and still support rolling upgrades,
i.e. a cluster of mixed versions
* note that it's only catching NotSerializableException, which we already
use for unknown serializer ids and class manifests
* note that it is not catching for system messages, since that could result
in infinite resending
* speedup ActorCreationPerfSpec
* reduce iterations in ConsistencySpec
* tag SupervisorHierarchySpec as LongRunningTest
* various small speedups and tagging in actor-tests
* speedup expectNoMsg in stream-tests
* tag FramingSpec, and reduce iterations
* speedup QueueSourceSpec
* tag some stream-tests
* reduce iterations in persistence.PerformanceSpec
* reduce iterations in some cluster perf tests
* tag RemoteWatcherSpec
* tag InterpreterStressSpec
* remove LongRunning from ClusterConsistentHashingRouterSpec
* sys property to disable multi-jvm tests in test
* actually disable multi-node tests in validatePullRequest
* doc sbt flags in CONTRIBUTING
* treat snapshot load failure in same way as other recovery failures
* if load of snapshot fails the persistent actor will be stopped, since
we can't assume that a consistent state would be recovered just by
replaying all events, since events may have been deleted
* additional recovery docs
* improve log message
* optimize recovering from snapshot in LocalSnapshotStore #20821
* replaced FilenamePattern regex with String operations when scanning snapshot filenames
* further optimization of the string operations
* fixed the logic in order to pass the SnapshotRecoveryLocalStoreSpec test