* Add reset effect to the state dsl.
* The effect calls deleteObject in the durable state store.
* The effect updates state to the empty state.
* Implement DeletedDurableState for persistence query.
* Update PersistenceTestKitDurableStateStore so that deleteObject sets the Record payload to None, ie delete the payload.
* update documentation for delete effect
* increment the revision by one when deleting state
* Overload deleteObject with revision and deprecate deleteObject.
* add bin-comp exclude
(cherry picked from commit 34a621a7cd)
* Add reset effect to the state dsl.
* The effect calls deleteObject in the durable state store.
* The effect updates state to the empty state.
* Implement DeletedDurableState for persistence query.
* Update PersistenceTestKitDurableStateStore so that deleteObject sets the Record payload to None, ie delete the payload.
* update documentation for delete effect
* increment the revision by one when deleting state
* Overload deleteObject with revision and deprecate deleteObject.
* add bin-comp exclude
* akka-protobuf-v3 is anyway a dependency from akka-stream
* akka-remote can remain provided by adding lazy on the WrappedPayloadSupport
* tested with a sample with only akka-persistence and akka-persistence-query
* and addition of TimestampOffset
* ApiMayChange
* small mention in docs
eventsBySlices is intended to be a better way to retrieve all events for an entity type
than eventsByTag.
The usage of `eventsByTag` for Projections has the major drawback that the number of tags
must be decided up-front and can't easily be changed afterwards. Starting with too many
tags means much overhead since many projection instances would be running on each node
in a small Akka Cluster. Each projection instance polling the database periodically.
Starting with too few tags means that it can't be scaled later to more Akka nodes.
Instead of tags we can store a slice number by hashing the persistence id.
Like `math.abs(persistenceId.hashCode % numberOfSlices)`.
Then the Projection query can be a range query of the slices. For example if using 128
slices and running 4 Projection instances the slice ranges would be 0-31, 32-63, 64-95,
96-128. That can easily be split to more Projection instances when needed and still
reuse the offsets for the previous range distributions.
* allow 'currentPersistenceIds' for eventsourced journals
This allows `currentPersistenceIds(afterId, limit)`
to be mixed in with ReadJournal as well as with
DurableStateStore.
Instead of duplicating `CurrentDurableStatePersistenceIdsQuery` I
renamed it to `PagedPersistenceIdsQuery` and removed the restriction
that it must be a `DurableStateStore`. The downside is that it is less
obvious where it should/can be mixed in, that is now only communicated
through the java/scaladoc and the testkit example.
* Split Journal and DurableState traits
* Build akka-persistence-query on scala3
* Build and test on scala3 on GHA
* scalafmt
* Also akka-persistence-shared
* Add mima exclusions
* Add type to implicit, not to probe
* implementation is based on a copy of the EventSourcedBehavior and then
refactoring all things that are not needed or different such as:
* remove replicated event sourcing
* remove ReplayingEvents recovery phase
* remove retention and snapshotting
* remove SnapshotSelectionCriteria and snapshots
* remove PersistAll
* remove event handler, event types
* rename EventSourced
* single static tag
* DurableStateAdapter
* DurableStateSignal
* DurableStateStore plugin api with similar extension mechanism as query plugins
* DurableStateStore, DurableStateUpdateStore
* DurableStateStoreQuery
* note that the DurableStateStore can be pretty useful for other things also
* Deprecate LevelDB
In preparation of moving into the testing infra (or deleting it completely) at some distant future point in time
* Remove leveldb tests where there also is an inmem one
* More details in deprecation text, recommend inmem + journal proxy for testing etc.
* Add scalafix plugin for jdk 9.
* Add command alias sortImports.
* Excludes some sources from SortImports.
* Update SortImports to 0.4.0
* Sort imports with `sortImports` command.
* added to EventEnvolope and therefore include case class stuff
for binary compatibility
* also added in PersistentRepr, which for example is the serialized format in
LeveldbJournal
* some cluster logging improvements
* most logger names are actually good, when using ActorLogging since
config can be setup on the package (prefix)
* override logSource when StageLogging is used
* replace system.log with more specific logger
* akka.actor.allow-java-serialization = off
* Moved primitive (Long, Int, String, ByteString) serializers
from akka-remote to akka-actor since they had no dependency
and are useful also in local systems, e.g. persistence.
* e.g. needed for persistence-tck
* less allow-java-serialization=on in tests
* CborSerializable in Jackson/test module for ease of use
* JavaSerializable for Java serialization in tests, already in akka-testkit,
but misconfigured
* Made tests pass
* allow-java-serialization=on in akka-persistence
* allow-java-serialization=on in classic remoting tests
* JavaSerializable and CborSerializable in other remoting tests
* Added serialization for
* Boolean
* java.util.concurrent.TimeoutException, AskTimeoutException
* support for testing serialization with the inmem journal
* utility to verifySerialization, in SerializationTestKit
* remove AccountExampleWithCommandHandlersInState becuase not possible to serialize State when it's not static
* Effect() is factory in EventSourcedBehavior class
* test the account examples
* SharedLeveldbJournal.configToEnableJavaSerializationForTest
* support for exceptions from remote deployed child actors
* fallback to akka.remote.serialization.ThrowableNotSerializableException
if exception is not serializable when wrapped in system messages from
remote deployed child actors and Status.Failure messages
* it's implemented in `WrappedPayloadSupport.payloadBuilder`
* update reference documentation
* serialize-messages=off in most places, separate ticket for
improving or removing that feature
* migration guide, including description of rolling update
* fix 2.13 compiler error
* minor review feedback