Scott Lystig Fritchie
7b9c94553c
Add skeleton support for single-page checkpointing
2015-03-02 20:03:45 +09:00
Scott Lystig Fritchie
1c1e1368dd
Added src/tango_dt_queue.erl plus test
2015-03-02 20:03:45 +09:00
Scott Lystig Fritchie
6caeaeb6b5
Ha! Damn quick and easy to add tango_dt_map.erl
2015-03-02 20:03:45 +09:00
Scott Lystig Fritchie
df53ec0a4e
Refactor register DT into tango_dt.erl and tango_dt_register.erl
2015-03-02 20:03:45 +09:00
Scott Lystig Fritchie
c068057c96
Add missing func corfurl_client:append_page/3, then fix tango_dt_register_test
2015-03-02 20:03:45 +09:00
Scott Lystig Fritchie
cdeddbb582
Heh, demonstrate a concurrency bug that I knew was there, yay, fixit time!
2015-03-02 20:03:45 +09:00
Scott Lystig Fritchie
18b38c249e
First draft of tango_dt_register
2015-03-02 20:03:45 +09:00
Scott Lystig Fritchie
6067e26201
Change semantics of OID map, silly me, to match what's needed
2015-03-02 20:03:45 +09:00
Scott Lystig Fritchie
436c6ac14b
Minor type fixup
2015-03-02 20:03:45 +09:00
Scott Lystig Fritchie
4fe4758d7a
Generic parameterization of the map, done badly, part 1
2015-03-02 20:03:44 +09:00
Scott Lystig Fritchie
9c73872d20
Fix TEST vs PULSE tests
2015-03-02 20:03:44 +09:00
Scott Lystig Fritchie
e9f16d7b1b
Dialyzer clean
2015-03-02 20:03:44 +09:00
Scott Lystig Fritchie
7878d954c1
Add dialyzer targets to Makefile ... time to get type serious
2015-03-02 20:03:44 +09:00
Scott Lystig Fritchie
be55d98bb5
Tango OID mapper put now passes basic unit test!
2015-03-02 20:03:44 +09:00
Scott Lystig Fritchie
52e2fa2edb
Start WIP on tango_oid.erl
2015-03-02 20:03:41 +09:00
Scott Lystig Fritchie
c02d35821e
Clean up tango_test.erl debugging cruft
2015-03-02 20:00:37 +09:00
Scott Lystig Fritchie
1184607bce
Fix scan_backward with stopping LPN #
2015-03-02 20:00:37 +09:00
Scott Lystig Fritchie
1bb127eb65
Add scan_backward LPN limit + test
2015-03-02 20:00:37 +09:00
Scott Lystig Fritchie
c311a187ac
Test refactoring 2
2015-03-02 20:00:37 +09:00
Scott Lystig Fritchie
9d2f494db0
Test refactoring
2015-03-02 20:00:37 +09:00
Scott Lystig Fritchie
c5b4bf8d7b
Basic infrastructure and testing for Tango-style streams
2015-03-02 20:00:33 +09:00
Scott Lystig Fritchie
fe79df48b5
Add fledgling log implementation based on CORFU papers (corfurl stuff)
2015-03-02 19:59:01 +09:00
Scott Lystig Fritchie
4dd3ccf10c
Merge branch 'merge/corfurl-master'
2015-03-02 18:12:46 +09:00
Scott Lystig Fritchie
2bf28122c1
Fix typos in docs/corfurl.md
2015-03-02 18:10:46 +09:00
Scott Lystig Fritchie
22f46c329d
Add annoying & verbose TODO reminder for FILL implementation fixing!
2015-03-02 18:10:46 +09:00
Scott Lystig Fritchie
1c5e8d3726
Change env var BITCASK_PULSE -> USE_PULSE
2015-03-02 18:10:46 +09:00
Scott Lystig Fritchie
edd5b62563
del prototype/corfurl/README.old.md
2015-03-02 18:10:46 +09:00
Scott Lystig Fritchie
305cf34a2d
Move old README.md -> README.old.md, create new README.md
2015-03-02 18:08:29 +09:00
Scott Lystig Fritchie
c9764bf5f6
Add new docs/corfurl/notes/README.md stuff
...
and also:
Add CORFU papers section
Merge corfurl.md and CONCEPTS.md
Add one more CORFU-related paper
Delete prototype/corfurl/docs/CONCEPTS.md
2015-03-02 18:08:29 +09:00
Scott Lystig Fritchie
8b105672b1
Bugfix for read-repair (thanks PULSE), model change to handle handle aborted writes
2015-03-02 18:08:29 +09:00
Scott Lystig Fritchie
b7b9255f5f
Partial fix for bug in last commit, but not good enough
2015-03-02 18:08:29 +09:00
Scott Lystig Fritchie
6858041c7d
See comments added by this commit for append_page() bug found, racing with epoch change
2015-03-02 18:08:29 +09:00
Scott Lystig Fritchie
40c28b79bb
PULSE test now uses corfurl_client (retry logic) for all ops
2015-03-02 18:08:29 +09:00
Scott Lystig Fritchie
7ac1e7f178
Add retry loop for read_page/2, fill_page/2, trim_page/2
2015-03-02 18:08:29 +09:00
Scott Lystig Fritchie
1f0e43d33f
Fix dumb think-o in corfurl_client:append_page() retry counter
2015-03-02 18:08:29 +09:00
Scott Lystig Fritchie
04f2105df0
Var renaming in corfurl_client:append_page()
2015-03-02 18:08:29 +09:00
Scott Lystig Fritchie
8df5326b0c
Try to restart the sequencer only if it looks like nobody else has
2015-03-02 18:08:29 +09:00
Scott Lystig Fritchie
0b031bcf0a
Change polling constants for to deal with PULSE's evil
2015-03-02 18:08:28 +09:00
Scott Lystig Fritchie
fb1216649c
Finish very basic PULSE testing of stopping & restarting the sequencer
2015-03-02 18:08:28 +09:00
Scott Lystig Fritchie
63d1c93fc9
Fix silly-dumb errors in seal epoch comparisons
2015-03-02 18:08:28 +09:00
Scott Lystig Fritchie
96b561cde9
Fix broken EUnit tests
2015-03-02 18:08:28 +09:00
Scott Lystig Fritchie
d93572c391
Refactoring to implement stop_sequencer command
2015-03-02 18:08:24 +09:00
Scott Lystig Fritchie
d5091358ff
Put the sequencer pid inside the projection
2015-03-02 18:06:52 +09:00
Scott Lystig Fritchie
a64a09338d
Fix broken EUnit tests (been in PULSE land too long)
2015-03-02 18:06:48 +09:00
Scott Lystig Fritchie
20a2a51649
Partial fix ( #2 of 2) for model problem in honest write-vs-trim race
2015-03-02 18:05:03 +09:00
Scott Lystig Fritchie
638a45e8cb
Partial fix for model problem in honest write-vs-trim race
2015-03-02 18:05:03 +09:00
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
Scott Lystig Fritchie
13e15e0ecf
Add MSC charts to help explain BAD-looking trim race
2015-03-02 18:05:02 +09:00
Scott Lystig Fritchie
d077148b47
Attempt to fix unimplemented corner case, thanks PULSE!
2015-03-02 18:05:02 +09:00
Scott Lystig Fritchie
b7e3f91931
Add ?EVENT_LOG() to add extra trace info to corfurl and corfurl_flu
2015-03-02 18:05:02 +09:00