> merged akka-bench-jmh-dev with akka-bench-jmh
> renamed akka-stream-tck to more correctly named akka-stream-tests-tck
> merged java8 tests with normal tests in http
* Before the cell is started the RepointableActorRef queue the messages
(both system and non-system messages) into a queue. System messages
are inserted right before the last non-system message by iterating
the queue, i.e. becomes slow when there are many system messages already
enqueued.
* This is a problem for pools with many routees.
* The fix is to keep system messages in a separate queue
JMH benchmark before:
[info] Benchmark (size) Mode Cnt Score Error Units
[info] RouterPoolCreationBenchmark.testCreation 1000 ss 300 13204.048 ± 3081.576 us/op
[info] RouterPoolCreationBenchmark.testCreation 2000 ss 300 41939.524 ± 6178.087 us/op
[info] RouterPoolCreationBenchmark.testCreation 3000 ss 300 70752.881 ± 4344.992 us/op
[info] RouterPoolCreationBenchmark.testCreation 4000 ss 300 120620.885 ± 3296.342 us/op
JMH benchmark after:
[info] Benchmark (size) Mode Cnt Score Error Units
[info] RouterPoolCreationBenchmark.testCreation 1000 ss 300 7738.721 ± 1806.297 us/op
[info] RouterPoolCreationBenchmark.testCreation 2000 ss 300 15497.588 ± 4532.852 us/op
[info] RouterPoolCreationBenchmark.testCreation 3000 ss 300 28704.005 ± 6322.458 us/op
[info] RouterPoolCreationBenchmark.testCreation 4000 ss 300 37783.516 ± 6778.437 us/op
fully drain sysmsgQueue when swap cell
Future.successful(Nil) is an alternative way to signal all good
in the happy case, for reduced allocations.
fix test failure
benchJmh leveldb dependency
revert leveldb change
* changing Plugin API for asyncWriteMessages and writeMessages
* passing explicit AtomicWrite that represents the events of
persistAll, or a single event from persist
* journal may reject events before storing them, and that
will result in onPersistRejected (logging) and continue in the
persistent actor
* clarified the semantics with regards to batches and atomic writes,
and failures and rejections in the api docs of asyncWriteMessages
and writeMessages
* adjust the Java plugin API, asyncReplayMessages, doLoadAsync
* addunidoc task via an AutoPlugin that depends on PrValidation and Unidoc autoplugins
* separate cli option logic to a case class
* remove autoplugin for root project
* remove channels
* remove View
* remove Processor
* collapse the complicated internal state management
that was spread out between Processor, Eventsourced and Recovery
* remove Recovery trait, this caused some duplication between Eventsourced
and PersistentView, but but the enhanced PersistentView will not be based
on recovery infrastructure, and therefore PersistentView code will be replaced anyway
* remove PersistentBatch
* remove LoopMessage
* remove deleteMessages of individual messages
* remove Persistent, PersistentRepr and PersistentImpl are kept
* remove processorId
* update doc sample code
* note in migration guide about persistenceId
* rename Resequencable to PersistentEnvelope
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
* lower redelivery interval does not change semantics here (no one
answers anyway), and lessens the changes to be "unlucky" with gc pauses
* was unable to reproduce error with snapshotting in 80 builds on
jenkins. Brainstormed possible errors but not found yet..
Original here: https://github.com/krasserm/akka-persistence-testkit
New features:
* merged martin's tests
* usable from java (junit 4)
* simple bench test, which helps checking if ordering is perserved under
bigger workloads and simple perf checking
* does NOT include tests for already deprecated features (deleteMessages)
* docs
Resolves#13815
Conflicts:
project/AkkaBuild.scala
* Deferred events are not persisted, thus will not participate in replays
etc. If users want events to be persisted, they can simply use
`persistAsync` instead.
* This, 3rd, rewrite extends the Persistent hierarchy by a top level
trait "Resequenceable", which is used to mark every event to be sent
in sequence back to the PersistentActor. These are split into
NonPersistentRepr or PersistentRepr, and acted upon accordingly.
* defer is guaranteed to be called, even after persistence failures
* Includes docs updates for java/scala/java8
Resolves#15229
Depends on #15227
Conflicts:
akka-docs/rst/scala/code/docs/persistence/PersistenceDocSpec.scala
akka-persistence/src/main/scala/akka/persistence/JournalProtocol.scala
akka-persistence/src/main/scala/akka/persistence/Processor.scala
akka-persistence/src/test/scala/akka/persistence/PersistentActorSpec.scala
project/AkkaBuild.scala
Breaks binary compatibility because adding new methods to Eventsourced
trait. Since akka-persistence is experimental this is ok, yet
source-level compatibility has been perserved thankfuly :-)
Deprecates:
* Rename of EventsourcedProcessor -> PersistentActor
* Processor -> suggest using PersistentActor
* Migration guide for akka-persistence is separate, as wel'll deprecate in minor versions (its experimental)
* Persistent as well as ConfirmablePersistent - since Processor, their
main user will be removed soon.
Other changes:
* persistAsync works as expected when mixed with persist
* A counter must be kept for pending stashing invocations
* Uses only 1 shared list buffer for persit / persistAsync
* Includes small benchmark
* Docs also include info about not using Persistent() wrapper
* uses java LinkedList, for best performance of append / head on
persistInvocations; the get(0) is safe, because these msgs only
come in response to persistInvocations
* Renamed internal *MessagesSuccess/Failure messages because we kept
small mistakes seeing the class "with s" and "without s" as the same
* Updated everything that refered to EventsourcedProcessor to
PersistentActor, including samples
Refs #15227
Conflicts:
akka-docs/rst/project/migration-guides.rst
akka-persistence/src/main/scala/akka/persistence/JournalProtocol.scala
akka-persistence/src/main/scala/akka/persistence/Persistent.scala
akka-persistence/src/test/scala/akka/persistence/PersistentActorSpec.scala
project/AkkaBuild.scala