Machi: a distributed, decentralized blob/large file store using chain replication and "Humming Consensus".
Find a file
Scott Lystig Fritchie eabebac6f2 Fix PULSE model difficulty of how to handle races between write & trim.
This trim race is (as far as I can tell) fine -- I see no correctness
problem with CORFU, on the client side or the server side.  However,
this race with a trim causes a model problem that I believe can be
solved this way:

1. We must keep track of the fact that the page write is happening:
someone can notice the write via read-repair or even a regular read by
the tail.  We do this in basically the way that all other writes
are handled in the ValuesR relation.

2. Add new code to client-side writer: if there's a trim race, *and*
if we're using PULSE, then return a special error code that says that
the write was ok *and* that we raced with trim.

2b. If we aren't using pulse, just return {ok, LPN}.

3. For the transition check property, treat the new return code as if
it is a w_tt.  Actually, we use a special marker atom, w_special_trimmed
for that purpose, but it is later treated the same way that w_tt is by the
filter_transition_trimfill_suffixes() filter.
2015-03-02 18:05:02 +09:00
doc Initial documentation import 2015-03-02 17:34:14 +09:00
prototype/corfurl Fix PULSE model difficulty of how to handle races between write & trim. 2015-03-02 18:05:02 +09:00
.gitignore Initial documentation import 2015-03-02 17:34:14 +09:00
LICENSE Add APL v2 LICENSE file 2015-03-02 17:34:14 +09:00