causal delivery of deltas, #22188
* keep track of delta interval versions and skip deltas that are not consequtive, i.e. when some delta message was lost * send the delta versions in the full state gossip to sync up the expected versions after dropped deltas * implementation of deltas for ORSet * refactoring of the delta types to allow for different type for the delta and the full state * extensive tests * mima filter * performance optimizations * simple pruning of deltas * Java API * update documentation * KeyId type alias * Use InternalApi annotation
This commit is contained in:
parent
94afbee179
commit
b700b840d1
41 changed files with 5010 additions and 1950 deletions
|
|
@ -6,11 +6,12 @@ package akka.cluster.ddata
|
|||
import akka.actor.Address
|
||||
import akka.cluster.Member
|
||||
import akka.cluster.UniqueAddress
|
||||
import akka.annotation.InternalApi
|
||||
|
||||
/**
|
||||
* INTERNAL API
|
||||
*/
|
||||
private[akka] object PruningState {
|
||||
@InternalApi private[akka] object PruningState {
|
||||
final case class PruningInitialized(owner: UniqueAddress, seen: Set[Address]) extends PruningState {
|
||||
override def addSeen(node: Address): PruningState = {
|
||||
if (seen(node) || owner.address == node) this
|
||||
|
|
@ -25,7 +26,7 @@ private[akka] object PruningState {
|
|||
/**
|
||||
* INTERNAL API
|
||||
*/
|
||||
private[akka] sealed trait PruningState {
|
||||
@InternalApi private[akka] sealed trait PruningState {
|
||||
import PruningState._
|
||||
|
||||
def merge(that: PruningState): PruningState =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue