* 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
118 lines
2.4 KiB
Protocol Buffer
118 lines
2.4 KiB
Protocol Buffer
/**
|
|
* Copyright (C) 2014-2017 Lightbend Inc. <http://www.lightbend.com>
|
|
*/
|
|
package akka.cluster.ddata;
|
|
|
|
option java_package = "akka.cluster.ddata.protobuf.msg";
|
|
option optimize_for = SPEED;
|
|
import "ReplicatorMessages.proto";
|
|
|
|
message GSet {
|
|
repeated string stringElements = 1;
|
|
repeated sint32 intElements = 2 [packed=true];
|
|
repeated sint64 longElements = 3 [packed=true];
|
|
repeated OtherMessage otherElements = 4;
|
|
}
|
|
|
|
message ORSet {
|
|
required VersionVector vvector = 1;
|
|
repeated VersionVector dots = 2;
|
|
repeated string stringElements = 3;
|
|
repeated sint32 intElements = 4 [packed=true];
|
|
repeated sint64 longElements = 5 [packed=true];
|
|
repeated OtherMessage otherElements = 6;
|
|
}
|
|
|
|
message ORSetDeltaGroup {
|
|
message Entry {
|
|
required ORSetDeltaOp operation = 1;
|
|
required ORSet underlying = 2;
|
|
}
|
|
|
|
repeated Entry entries = 1;
|
|
}
|
|
|
|
enum ORSetDeltaOp {
|
|
Add = 0;
|
|
Remove = 1;
|
|
Full = 2;
|
|
}
|
|
|
|
message Flag {
|
|
required bool enabled = 1;
|
|
}
|
|
|
|
message LWWRegister {
|
|
required sint64 timestamp = 1;
|
|
required UniqueAddress node = 2;
|
|
required OtherMessage state = 3;
|
|
}
|
|
|
|
message GCounter {
|
|
message Entry {
|
|
required UniqueAddress node = 1;
|
|
required bytes value = 2;
|
|
}
|
|
|
|
repeated Entry entries = 1;
|
|
}
|
|
|
|
message PNCounter {
|
|
required GCounter increments = 1;
|
|
required GCounter decrements = 2;
|
|
}
|
|
|
|
message ORMap {
|
|
message Entry {
|
|
optional string stringKey = 1;
|
|
required OtherMessage value = 2;
|
|
optional sint32 intKey = 3;
|
|
optional sint64 longKey = 4;
|
|
optional OtherMessage otherKey = 5;
|
|
}
|
|
|
|
required ORSet keys = 1;
|
|
repeated Entry entries = 2;
|
|
}
|
|
|
|
message LWWMap {
|
|
message Entry {
|
|
optional string stringKey = 1;
|
|
required LWWRegister value = 2;
|
|
optional sint32 intKey = 3;
|
|
optional sint64 longKey = 4;
|
|
optional OtherMessage otherKey = 5;
|
|
}
|
|
|
|
required ORSet keys = 1;
|
|
repeated Entry entries = 2;
|
|
}
|
|
|
|
message PNCounterMap {
|
|
message Entry {
|
|
optional string stringKey = 1;
|
|
required PNCounter value = 2;
|
|
optional sint32 intKey = 3;
|
|
optional sint64 longKey = 4;
|
|
optional OtherMessage otherKey = 5;
|
|
}
|
|
|
|
required ORSet keys = 1;
|
|
repeated Entry entries = 2;
|
|
}
|
|
|
|
message ORMultiMap {
|
|
message Entry {
|
|
optional string stringKey = 1;
|
|
required ORSet value = 2;
|
|
optional sint32 intKey = 3;
|
|
optional sint64 longKey = 4;
|
|
optional OtherMessage otherKey = 5;
|
|
}
|
|
|
|
required ORSet keys = 1;
|
|
repeated Entry entries = 2;
|
|
}
|
|
|
|
|
|
|