# <!-- METAHEADER
# –––––––––––––––––––––––––––––––––––––––––––––––––– -->
"*": "https://raw.githubusercontent.com/wefindx/schema/master/intent/oo-item.yaml"
# <!-- HEADER
# –––––––––––––––––––––––––––––––––––––––––––––––––– -->
"base:title": "0oo - Eventual consistency strategies"
"og:title": "Eventual consistency strategies"
"og:description": "I have some thoughts and ideas on how to resolve partitions after resynchronization with lost peers. Essentially we want to merge data that is on every replica together CRDTs help a bit but do not provide an out of the box solution to conflicting updates. We don&#x27;t want one person&#x27;s changes to be lost. I propose that GUIs of editor interfaces present conflicts with a record simultaneously for resolution. Which value gets used is in dispute as the data is conflicting. You kind of need to skip conflicting records! As you don&#x27;t know which value is correct. You could have …"
"og:image": "https://avatars0.githubusercontent.com/u/28134655"
"og:url": "/intent/172001/"
"base:css": "/static/css/bootstrap.min.9c25540d6272.css"
"base:extra-css": "/static/css/base.57997aeac1df.css"
"base:favicon": "/static/favicon.acaa334f0136.ico"
"base:body_class": ""
"layout:logo": "/static/0oo.8d2a8bbef612.svg"
"layout:index": "/"
"layout:menu": "/menu/"
"layout:categories": "/intents/"
"layout:ideas": "/methods/"
"layout:projects": "/projects/"
"layout:users": "/users/"
"layout:about": "/about/"
"layout:help": "/help/"
"layout:bug_report": "https://github.com/wefindx/0oo"
"layout:login": "/accounts/login/"
"layout:light-off": "/darken/?darken=true"
"layout:set-multilingual": "/mulang/?mulang=true"
"layout:lang": "Language"
"layout:set-language-post-action": "/i18n/setlang/"
"layout:csrf-token": "JOmqZLb1NOqJI4AMeCZeCZ3LAyUK6Jaobq31QTSOh8r6dl1sZypP9sfWCUlsscP4"
"layout:input-next": "/intent/172001/"
"layout:languages": [{"code": "ja", "is-active": "false", "name": "日本語"}, {"code": "lt", "is-active": "false", "name": "Lietuviškai"}, {"code": "zh-hans", "is-active": "false", "name": "简体中文"}, {"code": "en", "is-active": "true", "name": "English"}, {"code": "ru", "is-active": "false", "name": "Русский"}, {"code": "oo", "is-active": "false", "name": "O;o,"}]
# <!-- TOPIC
# –––––––––––––––––––––––––––––––––––––––––––––––––– -->
"item:parent:intents": [{"title": "Distributed data storage", "url": "/intent/74001/"}]
"item:title": "Eventual consistency strategies"
"item:votes": 0
"item:add-vote": "#addnote"
"item:intent": "/intent/172001/?l=en"
"item:base-administration": false
"item:body": |
    I have some thoughts and ideas on how to resolve partitions after resynchronization with lost peers.
    
    Essentially we want to merge data that is on every replica together 
    
    CRDTs help a bit but do not provide an out of the box solution to conflicting updates. We don't want one person's changes to be lost.
    
    I propose that GUIs of editor interfaces present conflicts with a record simultaneously for resolution.
    
    Which value gets used is in dispute as the data is conflicting.
    
    You kind of need to skip conflicting records! As you don't know which value is correct.
    
    You could have a SLA where you pick the latest update, the majority update or the update that was seen the least and so on.
"item:permalink": "/intent/172001/?l=en"
"item:source-date": ""
"item:owner": "chronological"
"item:ownerlink": "/user/198/chronological"
"item:created": "2022-07-21T17:41:39.862137"
"item:intent:child:add": "/admin/hlog/intent/add/?parent=172001"
# <!-- LINKS
# –––––––––––––––––––––––––––––––––––––––––––––––––– -->
"item:method:items":
"item:method:add": "/admin/hlog/method/add/?parent=172001"
"item:comment:add": "/intents/addnote?parent=172001"
"item:comment:add:csrf_token": "JOmqZLb1NOqJI4AMeCZeCZ3LAyUK6Jaobq31QTSOh8r6dl1sZypP9sfWCUlsscP4"
"item:comment:form": |
    <li> <textarea name="text" cols="40" rows="10" id="addnote" class="comment-textarea" required>
    </textarea></li>
    <li><label for="id_vote">Vote:</label> <select name="vote" id="id_vote">
      <option value="-1">[−]</option>
      <option value="0" selected>-</option>
      <option value="1">[+]</option>
    </select></li>
    <li><label for="id_crawl">Silently:</label> <input type="checkbox" name="crawl" onchange="handleSilently(this)" id="id_crawl"></li>
    <li><label for="id_has_questions">Questions:</label> <input type="checkbox" name="has_questions" id="id_has_questions"> <span class="helptext">Mark if the comment raises new questions.</span></li>
    <li><label for="id_has_ideas">Ideas:</label> <input type="checkbox" name="has_ideas" id="id_has_ideas"> <span class="helptext">Mark if the comment contributes potential solutions.</span></li>
    <li><label for="id_has_facts">Facts:</label> <input type="checkbox" name="has_facts" id="id_has_facts"> <span class="helptext">Mark if the comment contributes facts for reasoning.</span></li>
    <a href="/accounts/login/">Please, <u>log in</u>.</a>
# <!-- COMMENTS
# –––––––––––––––––––––––––––––––––––––––––––––––––– -->
"item:comment:items":
"base:js": "/static/js/base.c7357c06cc89.js"
