Questions tagged [crdt]

Commutative Replicated Data Type

Commutative Replicated Data Type

A CRDT is a data type designed so that operations on it commute - give the same result independent of the order in which they are applied.

See: A comprehensive study of Convergent and Commutative Replicated Data Types

46 questions
0
votes
0 answers

Issue with Integrating Yjs and Monaco-Editor in Angular - Error with Webpack CSS Dependencies

I'm working on an Angular project where I'm trying to implement a collaborative text editor. The libraries I'm using are monaco-editor and Yjs. I managed to import monaco-editor into Angular by following the documentation of a certain wrapper, but…
0
votes
0 answers

How to prevent selected fields from being updated in Y.js?

Imagine object like this const project = { editors:{'me@stack.com':'owner', 'they@stack.com':'manager' }, title:'myStackProject', article:'I love to ask questions' } In my case managers can't edit title and rights but they can edit article.…
Jane Jacek
  • 213
  • 1
  • 4
  • 9
0
votes
1 answer

How to change this merge() method for a Multi-Value Register CRDT implementation?

I have the following problem: In this simple implementation of a MVR-CRDT the merge() method should add all values that are not null to the merged replica. For that to happen i used a for loop which iterates through both ArrayLists. At every index…
rinbeq
  • 3
  • 3
0
votes
0 answers

How to solve the redis dual-master dual-write problem

Now I need to synchronize data between the redis of both nodes, and both nodes provide write capability.The same key may be written to different nodes at the same time. Data consistency problems that may occur during data synchronization. I tried to…
0
votes
0 answers

Error using Automerge (frontend library with .wasm imports) with esbuild: `Uncaught TypeError: (void 0) is not a function`

Problem When I try to run the following code I get an error that I haven't been able to fix. // assets/js/app.js 41 ... 42 import * as automerge from "@automerge/automerge" 43 const doc = automerge.init() 44 ... The error in the browser (Chrome)…
0
votes
0 answers

How to combine q-input/ q-edit with Yjs to manage cursor position when co-editing

I figured out how sync text value between clients using Yjs but I still can't handle cursor pos after text update. I use quasar framework so I can't apply one of this recomended text-editors by Yjs documentation. I do not need and special binding…
0
votes
1 answer

Which part of the CAP Theorem does CRDT Sacrifice?

CRDT or Conflict-Free Replicated Data Type follows a strong eventual consistency guarantee, essentially meaning consistency is guaranteed to be achieved at some point in time in the future. My question is, is the Consistency part of the CAP theorem…
Dipak
  • 157
  • 3
  • 8
0
votes
1 answer

replicating trees between ACID RDB using CRDT

I'm interested in replicating "hierachies" of data say similar to addresses. Area District Sector Unit but you may have different pieces of data associated to each layer, so you may know the area of Sectors, but not of units, and you may know the…
MrD at KookerellaLtd
  • 2,412
  • 1
  • 15
  • 17
0
votes
1 answer

How to handle concurrent adds on the same key in Last Write Wins map?

I am implementing an LWW map and in my design, all added key-value pairs have timestamps as is expected from LWW. That works for me until the same key is added in two replicas with different values at the same time. I can't understand how to make…
0
votes
1 answer

How does Raft compare with CRDT for collaborative editing?

I am trying to understand how good Raft can be for collaborative editing when the state is just a JSON blob that can have arrays in it. My intuition is that Raft is built for safety while CRDT is built for speed (sacrificing availability). Curious…
0
votes
1 answer

How to initialize value of CodeMirror binding to yjs?

My main problem is initializing the text/value of a code editor(CodeMirror) on my website without it affecting the way I save/send POST requests to my backend. The following is the pug code I use for the POST request: p form(id='form'…
Notemaster
  • 465
  • 1
  • 3
  • 15
0
votes
0 answers

C++ 'unknown type name' and 'use of undeclared identifier' errors

I am writing a small program, for a school project, that emulate a shared editor (like Google Docs) I've written all the classes that I need but when I try to build the program I get this errors: error: unknown type name 'NetworkServer' …
Andrea Foderaro
  • 45
  • 1
  • 1
  • 12
0
votes
1 answer

Why the G-Counter cannot do decreasing operation?

I have read some articles about CRDT. And knew the G-Counter is an implementation of CvRDT. It can only do increasing operations. However, each node in the algorithm has its own slot. If it is transformed to CmRDT and every node broadcasts its…
IvanaGyro
  • 598
  • 7
  • 25
0
votes
1 answer

Why does the gossip protocol in akka need to deliver it's state twice for the state change to be registered?

I am having trouble of understanding the cluster algorithm used in Akka. In the description in the akka Gossip Protocol it says that: The recipient of the gossip state or the gossip status can use the gossip version (vector clock) to determine…
0
votes
1 answer

Riak ruby client trying to delete CRDT map

using ruby client (2.3.0) with Riak 2.0. I've created a CRDT bucket type of 'Maps', which store (surprise) maps. Everything works including search, etc. but for the life of me I can't work out how to delete a map when I no longer need it. I've tried…
bobomoreno
  • 2,848
  • 5
  • 23
  • 42