final class Reconciliation extends AnyRef
For reconciling with tag_views table with the messages table. Can be used to fix data issues causes by split brains or persistence ids running in multiple locations.
Should not be run at the same time as an application.
To support running in the same system as a journal the tag writers actor would need to be shared and all the interleavings of the actor running at the same be considered.
Each instance starts a tag writers actor that lives until Reconciliation#close is called, so an instance should be closed once the reconciliation operations it was created for have completed.
API likely to change when a java/scaladsl is added.
- Annotations
- @ApiMayChange()
- Source
- Reconciliation.scala
- Alphabetic
- By Inheritance
- Reconciliation
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new Reconciliation(systemProvider: ClassicActorSystemProvider)
- new Reconciliation(systemProvider: ClassicActorSystemProvider, settings: ReconciliationSettings)
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def allTags(): Source[String, NotUsed]
Returns all the tags in the journal.
Returns all the tags in the journal. This is not an efficient query for Cassandra so it is better to calculate tags for calls to deleteTagViewForPersistenceId another way.
Prefer to do batches of persistence ids at a time getting the tags just for that persistence id.
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
- def close(): Unit
Stops the tag writers actor that this instance started.
Stops the tag writers actor that this instance started. Without this the actor stays alive for the lifetime of the
ActorSystem, so call it once the reconciliation operations have completed.Any operation still in progress is aborted, so only close after the futures returned by the other methods have completed. This instance must not be used again after it has been closed.
Calling this more than once has no further effect.
- def deleteTagViewForPersistenceIds(persistenceId: Set[String], tag: String): Future[Done]
Scans the given tag and deletes all events for the provided persistence ids.
Scans the given tag and deletes all events for the provided persistence ids. All events for a persistence id have to be deleted as not to leave gaps in the tag pid sequence numbers.
As this has to scan the tag views table for the given tag it is more efficient to
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- def rebuildAllPersistenceIds(): Future[Done]
- def rebuildTagViewForPersistenceIds(persistenceId: String): Future[Done]
Assumes that the tag views table contains no elements for the given persistence ids Either because tag_views and tag_progress have truncated for this given persistence id or tag writing has never been enabled
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def tagsForPersistenceId(persistenceId: String): Future[Set[String]]
Select all the tags for the given persistence id.
Select all the tags for the given persistence id. This may not return tags that have just been used for the first time.
- def toString(): String
- Definition Classes
- AnyRef → Any
- def truncateTagView(): Future[Done]
Truncate all tables and all metadata so that it can be rebuilt
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])