Commit graph

142 commits

Author SHA1 Message Date
Patrik Nordwall
cc636929a5 =per #16737 avoid NPE when snapshot dir is removed
* also best effort to recreate the directory if it is removed
2015-04-01 14:50:28 +02:00
Patrik Nordwall
7aa9fe25f2 Merge pull request #17024 from carrot-garden/persistence-leveldb-dependency
!per #15884 Make LevelDB an optional dependency
2015-03-25 09:07:55 +01:00
Andrei Pozolotin
5c5e07ec4e !per #15884 Make LevelDB an optional dependency 2015-03-24 13:58:09 -05:00
Julian Tescher
00f6a58e7c Changes all occurances of Typesafe copyright to extend to 2015 2015-03-10 14:12:19 -07:00
Patrik Nordwall
30df518421 =tes Use ConversionCheckedTripleEquals 2015-03-10 08:17:03 +01:00
Andrei Pozolotin
6332f888ce +all #16632 Make serialization identifiers configurable in reference.conf 2015-03-05 11:55:05 -06:00
Andrei Pozolotin
18dfd39686 +per #15587 Make it possible to use multiple persistence plugins 2015-02-19 21:25:52 -06:00
Roland Kuhn
5e1fd1db6c Merge pull request #16763 from akka/wip-cleanup-actor-∂π
fix all non-deprecation warnings
2015-02-06 20:54:12 +01:00
Roland Kuhn
a029a90502 fix warnings in contrib, docs, osgi, persistence and slf4j 2015-02-06 18:45:58 +01:00
Patrik Nordwall
9b5a446a4a =per #15942 Support resume after recovery failure
* also improved fault handling in various places (bugs found)

* and manually triggered Update must be distinguished from scheduled
  auto updates, otherwise manual Update will schedule extra auto updates
2015-02-06 10:29:07 +01:00
Patrik Nordwall
72d54626f3 =per #15943 Avoid initite restart loop when recovery fails
* also include the failing message and sequenceNr in the RecoveryFailure
  message
* remove the "putting back" the message first in the mailbox
2015-02-06 10:29:07 +01:00
Patrik Nordwall
da7991a3d5 =per #16187 PersistenceFailure after persistAsync failure
* this was fixed by the refactoring in 15423
2015-02-06 10:29:07 +01:00
Andrei Pozolotin
98ac9f7020 + akka-persistence: add internal message protocol traits
2 more snapshot messages used for internal plugin acknowledgement in
https://github.com/akka/akka/blob/master/akka-persistence/src/main/scala/akka/persistence/snapshot/SnapshotStore.scala
* see #16612 
* see #16633
2015-01-27 10:04:11 -06:00
Roland Kuhn
93ef92bcfb =per #16659 fix deserialization of SnapshotHeader
This needs to be done differently for Scala 2.10 and 2.11 since
scala.Option’s serialVersionUID changed between these series.
2015-01-16 14:34:59 +01:00
Andrei Pozolotin
4208aacd2c + akka-persistence: add internal message protocol traits
* resolve #16612
2015-01-13 12:40:40 -06:00
Patrik Nordwall
c566d5a106 per #15423 Remove deprecated features from akka-persistence
* 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
2014-12-12 16:18:47 +01:00
adamw
57f67bc58c +per #16348 Limit the number of messages redelivered at each interval
Helps to prevent flooding destinations which are unavailable for a long time with messages once they become available.
2014-11-30 13:30:57 +01:00
Patrik Nordwall
c3f16ad740 =per #16009 Serialize SnapshotHeader without Java serialization
* it is backwards compatible, i.e. it can read old snapshots

(cherry picked from commit 690905eac9619da91d7b1fcbc633d1fa2e411ee7)

Conflicts:
	akka-persistence/src/test/scala/akka/persistence/serialization/SerializerSpec.scala
2014-11-03 18:10:00 +01:00
Patrik Nordwall
24f21292bc Merge pull request #16117 from jgordijn/16104-AtLeastOnceDelivery_and_crash_actor-jgordijn
=per #16104 fix no longer send messages when actor crashed on recovery
2014-10-31 10:00:51 +01:00
Patrik Nordwall
4120757224 Merge pull request #16126 from mwegrz/mwegrz-allow-persistentactor-to-be-used-as-a-stackable-modification
=per #15937 Allow PersistentActor to be used as a stackable modification
2014-10-31 09:53:34 +01:00
dawidmalina
551f611809 =per fixed small typo in parameter name
Small typo. Was replayPersistent instead replyPersistent and withReplyPersistent did not work
2014-10-30 13:47:00 +01:00
Michał Węgrzyn
4f52158b0a =per #15937 Allow PersistentActor to be used as a stackable modification
* PersistentActor correctly calls `super.around*` and allows to be mixed into e.g. ActorSubscriber
 * Tests have been added on PersistentActor and Processor to verify the stackable behavior of `around*` and `pre*` methods
 * Delegation in Processor has been simplified
2014-10-27 21:58:47 +01:00
Jeroen Gordijn
9196dc9a60 =per #16104 fix no longer send messages when actor crashed on recovery 2014-10-22 20:59:10 +02:00
Roland Kuhn
ec55ab2d22 =per #15730 fix context.become in PersistentView
(cherry picked from commit 561bd00cf69b0070693db397fe0dbda824792335)
2014-08-29 13:02:06 +02:00
Viktor Klang
cd8e97c060 +act - 15757 - Reworks implementation of ActorSystem shutdown
* deprecates awaitTermination, shutdown and isTerminated
  * introduces a terminate-method that returns a Future[Unit]
  * introduces a whenTerminated-method that returns a Future[Unit]
  * simplifies the implementation by removing blocking constructs
  * adds tests for terminate() and whenTerminated
2014-08-25 15:49:28 +02:00
Konrad Malawski
2a8d1c4727 Merge pull request #15713 from ktoso/port-fix-local-snapshotstore-recovery-ktoso
=per #15671 fix local snapshot store picking up wrong file (Validation)
2014-08-21 15:47:01 +02:00
Brendan Lawlor
f336b24830 =per #15671 fix local snapshot store picking up wrong file.
Added spec test to cover fix for bug 15671

Replaced deprecated NamedProcessor with NamedPersistentActor. Cleaned up unused message handling. Typos and misspellings.
2014-08-21 13:56:19 +02:00
Konrad 'ktoso' Malawski
fdb0d9ee3b =per #15590 Increase efforts to in-order on start of ALOD
AtLeastOnceDelivery can delivery out-of-order, and that's OK.
Although, in the case of message replay followed by taking user land
commands which may trigger `deliver` calls, it is nicer to at least once
try to send the replayed but not confirmed deliveries *first*, before
sending the completely new deliveries.

This change acomplishes this by triggering redelivery explicitly when
recovery has finished, and setting the timestamps on these messages a
bit in the past, so they hit their redelivery deadline right away during
this recovery induced redelivery.

Resolves #15590
2014-08-12 11:28:25 +02:00
Konrad 'ktoso' Malawski
ba3543b046 =per #15575 lessen timing issue in AtLeastOnce spec
* 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..
2014-07-23 15:48:46 +02:00
Patrik Nordwall
57dece5165 =per #15472 Flush instead of unstash when PersistentActor restarts
* When using the Processor batching buffer for persistAsync and defer
  the events were unstashed by Processor.aroundPreRestart and
  thereby were received as commands after restart
* Instead we must flush this buffer when using PersistentActor

(cherry picked from commit 627ce2fc85739e221524ec48725362ef7c0566ea)
2014-06-30 13:19:15 +02:00
Patrik Nordwall
9a4425ed19 =per Fix minor doc issues
(cherry picked from commit 45c07e1f2f131e70a03b82803f11fd390572ccba)
2014-06-28 17:33:08 +02:00
Patrik Nordwall
8eec3f92d3 =per #15457 Correlate persistAsync handlers with journal messages
We have assumed that the handlers can be popped when replies come back from journal, but if messages to journal are in flight when the actor is restarted the handlers does not match up with journal replies.

This solution ignores journal replies that were emitted by an old PersistentActor instance
by passing an uid with the journal messages. This means that the handler will not be
invoked for such messages.

(cherry picked from commit 7ebaaab669c9e467a1ffb4d9ed8b6500e1801a7c)

Conflicts:
	akka-persistence/src/main/scala/akka/persistence/JournalProtocol.scala
	akka-persistence/src/main/scala/akka/persistence/Processor.scala
	akka-persistence/src/main/scala/akka/persistence/journal/AsyncWriteJournal.scala
2014-06-28 17:21:55 +02:00
Patrik Nordwall
33c7f6bb4f !per Change for journal plugin compatibility
* A few more adjustments, found when verifying source compatibility of a few
  journal plugins
* Note that PersistentId will be removed with deleteMessage and we should
  not break plugins because of that
* Add missing section of at-least-once delivery in migration guide

(cherry picked from commit 6727eac6d07280d277968e2e25db44e02be3b102)

Conflicts:
	akka-persistence/src/main/scala/akka/persistence/JournalProtocol.scala
	akka-persistence/src/main/scala/akka/persistence/Persistent.scala
	akka-persistence/src/main/scala/akka/persistence/Snapshot.scala
	akka-persistence/src/main/scala/akka/persistence/journal/AsyncWriteProxy.scala
2014-06-28 17:11:06 +02:00
Patrik Nordwall
f6aa491ef0 !per Additional deprecations and cleanup
(cherry picked from commit 98619647e372121fb3c2072a0eab20de4148f7d9)

Conflicts:
	akka-persistence/src/main/scala/akka/persistence/JournalProtocol.scala
	akka-persistence/src/main/scala/akka/persistence/snapshot/SnapshotStore.scala
2014-06-28 16:07:08 +02:00
Patrik Nordwall
33027999da !per #15427 Deprecate deleteMessage and writeConfirmations in journal plugin api
(cherry picked from commit 4c271b6b092989ebde26fcd135e6ad56f797a763)
2014-06-28 15:59:58 +02:00
Patrik Nordwall
07e67b90ea !per #15428 Deprecate deleteMessage
(cherry picked from commit 4973d0b37d635a0a2c9a94c2898da988e4f14fc7)
2014-06-28 15:59:33 +02:00
Patrik Nordwall
b667e6c37a =per #15459 Use full batching for persistAsync and defer
(cherry picked from commit 20ac844b4f3999d0261f1a08957c2c2a8367c672)

Conflicts:
	akka-bench-jmh/src/main/scala/akka/persistence/PersistenceActorDeferBenchmark.scala
2014-06-27 12:18:56 +02:00
Patrik Nordwall
32ca608c97 +per #15327 Add AtLeastOnceDelivery trait
* also remove final of around methods, and let deliver send when not recoveryRunning

(cherry picked from commit 312b0d107a179accaf135f64ed9c3b78f3e351d1)
2014-06-26 22:58:46 +02:00
Konrad 'ktoso' Malawski
b1d1d87111 !per #15436 make persistenceId abstract in NEW classes
(cherry picked from commit de3249f7f4b859c3caa232e579d9a3bae7406803)

Conflicts:
	akka-samples/akka-sample-persistence-scala/src/main/scala/sample/persistence/PersistentActorExample.scala
2014-06-26 16:29:30 +02:00
Konrad 'ktoso' Malawski
3fd240384c +per #15424 Added PersistentView, deprecated View
A PersistentView works the same way as View did previously, except:

* it requires an `peristenceId` (no default is provided)
* messages given to `receive` are NOT wrapped in Persistent()

akka-streams not touched, will update them afterwards on different branch

Also solves #15436 by making persistentId in PersistentView abstract.

(cherry picked from commit dcafaf788236fe6d018388dd55d5bf9650ded696)

Conflicts:
	akka-docs/rst/java/lambda-persistence.rst
	akka-docs/rst/java/persistence.rst
	akka-docs/rst/scala/persistence.rst
	akka-persistence/src/main/scala/akka/persistence/Persistent.scala
	akka-persistence/src/main/scala/akka/persistence/View.scala
2014-06-26 10:10:09 +02:00
Patrik Nordwall
d6ffdf521c =per #15429 Rewrite persistence documentation and samples for 2.3.4 changes
(cherry picked from commit 02351e32f110a8c4a249f0f3f84bae5898d1a836)

Conflicts:
	akka-samples/akka-sample-persistence-java-lambda/tutorial/index.html
	akka-samples/akka-sample-persistence-java/tutorial/index.html
	akka-samples/akka-sample-persistence-scala/build.sbt
	akka-samples/akka-sample-persistence-scala/src/main/scala/sample/persistence/ConversationRecoveryExample.scala
	akka-samples/akka-sample-persistence-scala/src/main/scala/sample/persistence/PersistentActorExample.scala
	akka-samples/akka-sample-persistence-scala/src/main/scala/sample/persistence/ProcessorChannelExample.scala
	akka-samples/akka-sample-persistence-scala/src/main/scala/sample/persistence/ProcessorChannelRemoteExample.scala
	akka-samples/akka-sample-persistence-scala/src/main/scala/sample/persistence/SnapshotExample.scala
	akka-samples/akka-sample-persistence-scala/src/main/scala/sample/persistence/StreamExample.scala
	akka-samples/akka-sample-persistence-scala/tutorial/index.html
2014-06-25 15:37:35 +02:00
Konrad 'ktoso' Malawski
242473bae8 =per #15230 deprecate Channel and PersistentChannel
Conflicts:
	akka-persistence/src/main/scala/akka/persistence/Channel.scala
	akka-persistence/src/main/scala/akka/persistence/PersistentChannel.scala
	akka-persistence/src/test/scala/akka/persistence/serialization/SerializerSpec.scala
2014-06-24 20:37:01 +02:00
Konrad 'ktoso' Malawski
4bb321a83a !per #15230 rename processorId => persistentId
* This is NOT binary compatible, we're in an *experimental* module.
* disabled binary compat checks for package akka.persistence
* Source compatibility is retained, but users should migrate do the new
  method name ASAP.
* Plugin APIs were migrated in a way that allows the old plugins to
  compile agains 2.3.4 without having to change anything. Hopefuly this
  will help authors migrate to 2.3.4 sooner. This is only source level compatible, not binary compatible.
* added deprecation warnings on all processorId methods and provided bridges where possible
* for users, the migration should be painless, they can still override
  the old method, and it'll work. But we encourage them to move to
  persistenceId; All delegation code will have to be removed afterwards ofc.

Conflicts:
	akka-persistence/src/main/scala/akka/persistence/Channel.scala
	akka-persistence/src/main/scala/akka/persistence/JournalProtocol.scala
	akka-persistence/src/main/scala/akka/persistence/Persistent.scala
	akka-persistence/src/main/scala/akka/persistence/PersistentChannel.scala
	akka-persistence/src/main/scala/akka/persistence/Processor.scala
	akka-persistence/src/main/scala/akka/persistence/Snapshot.scala
	akka-persistence/src/main/scala/akka/persistence/journal/AsyncWriteProxy.scala
	akka-persistence/src/main/scala/akka/persistence/journal/inmem/InmemJournal.scala
	akka-persistence/src/main/scala/akka/persistence/journal/leveldb/LeveldbKey.scala
	akka-persistence/src/main/scala/akka/persistence/snapshot/SnapshotStore.scala
	akka-persistence/src/test/scala/akka/persistence/serialization/SerializerSpec.scala
	project/AkkaBuild.scala
2014-06-24 17:05:18 +02:00
Marcin Kubala
f4793a399f =act,clu,con,doc,per,rem,sam #15114 append missing parens at Actor.sender() invocations 2014-06-20 23:05:51 +02:00
Konrad 'ktoso' Malawski
a71790bb18 +per #15229 defer for PersistentActor
* 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
2014-06-10 17:09:24 +02:00
Björn Antonsson
9bcaeff87d +per #13944 Send RecoveryComplete message at end of recovery
Fixes #13944

Conflicts:
	akka-docs/rst/scala/code/docs/persistence/PersistenceDocSpec.scala
	akka-persistence/src/main/scala/akka/persistence/Processor.scala
	project/AkkaBuild.scala
2014-06-10 13:22:10 +02:00
Konrad 'ktoso' Malawski
d51b79c95a !per persistAsync
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
2014-06-10 11:09:12 +02:00
Björn Antonsson
5f3d6029b1 Merge pull request #15376 from akka/wip-13898-failed-SharedLeveldbJournalSpec-master-ban
=per #13898 Make LocalSnapshotStore directory creation more robust (Validation)
2014-06-09 14:06:03 +02:00
Björn Antonsson
6c4f61b405 =per #13898 Make LocalSnapshotStore directory creation more robust 2014-06-09 11:49:26 +02:00
Björn Antonsson
e5a17576cd =per #13962 Close LevelDB snapshots to avoid resource leakage 2014-06-09 11:45:05 +02:00