-
Notifications
You must be signed in to change notification settings - Fork 54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CRDT: "Direct Replication" / at-Consistency writes #27
Comments
Merged
ktoso
pushed a commit
that referenced
this issue
Sep 6, 2019
Motivation: For direct replication (#27) we need to send CRDTs to remote replicators, therefore they need to be serializable. Modifications: - Define protobufs for CRDTs and conform to `InternalProtobufRepresentable`. - Define protobufs for `CRDT.Replicator.RemoteCommand`. - Special handling in `Serialization` for CRDT serializers. Result: Be able to send `CRDT.Replicator.RemoteCommand` message to remote replicators.
This was referenced Sep 15, 2019
Merged
ktoso
pushed a commit
that referenced
this issue
Sep 16, 2019
* CRDT replication serialization Motivation: `CRDT.Replicator.RemoteCommand` messages need to be serialized for replication. Groundwork has already been done in previous PRs; this PR wraps it up. Modifications: - Serialization for all `CRDT.Replicator.RemoteCommand` messages. - Per [protobuf style guide](https://developers.google.com/protocol-buffers/docs/style), the zero value enum should be "unspecified". Results: `CRDT.Replicator.RemoteCommand` messages ready for replication. Part of #27 * Unformat .pb.swift files * Remove prefix for 'unspecified'
yim-lee
added a commit
that referenced
this issue
Sep 23, 2019
Motivation: Direct replication of local CRDT changes to remote nodes as `LocalCommand`s get processed. Changes: - `CRDT.Replicator.Shell` subscribes to cluster membership events in order to keep track of remote replicators. - Logic to determine remote confirmations/acks needed for a given `OperationConsistency`. - Construct and send `RemoteCommand` for `LocalCommand` `.write`, `.read`, and `.delete` as part of direct replication. In case of `read`, this is to read CRDT from remote nodes and update local copy. - Add tracelog to all switch cases (per [feedback](#118 (comment))) - Rename `.failed` enum case to `.failure` to be consistent with NIO and `Result`. Result: Resolves #27.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This is about implementing the direct replication for CRDTs when they do
write(consistency: .all)
or similar.We should:
This is enough to have CRDTs "work" even without gossip, if we always were to write to all nodes, and no cluster membership changes.
We will follow up with gossip in separate ticket.
The text was updated successfully, but these errors were encountered: