Project

General

Profile

Actions

Bug #19375

open

Let user control precedence in eventually consistent master-master setup

Added by Gabriel Wicke about 7 years ago. Updated about 7 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

Conflicting updates in an asynchronously replicated master-master setup are currently resolved using the internal mtime timestamp. There is no way for the user to control this timestamp. As a consequence, it is not possible to make such updates idempotent.

Many Dynamo style systems like Cassandra let the user optionally pass in the timestamp used for duplicate resolution. While sufficient for many use cases, this is not sufficient in situations where the precedence cannot be encoded in a single fixed-resolution timestamp. A concrete use case we are currently considering is idempotent updates for an item reflecting the last render (timestamp) of the last revision (64-bit revision id) of an article. In this use case, the revision should take precedence over the timestamp. We can't encode both 64 bit quantities in a single 64 bit mtime.

If the user could instead provide an arbitrary-length precedence key in a header, and this was compared using lexicographic ordering, this would establish a simple yet powerful means of encoding arbitrary monotonic precedence requirements.

Actions #1

Updated by Casey Bodley about 7 years ago

if you're willing to take this project on, i'm happy to help with review and testing

Actions

Also available in: Atom PDF