Proto commits in basho/machi

These 52 commits are when the Protocol Buffers files have changed:

Commit:e87e84e
Author:Mark Allen

WIP

Commit:a3fc1c3
Author:Scott Lystig Fritchie

Add namespace info to wedge_status API call; add namespace enforcement @ machi_flu1_net_server

The documentation is generated from this commit.

Commit:c654245
Author:Scott Lystig Fritchie

Use 'bool' type in PB spec where feasible

Commit:e24acb7
Author:Scott Lystig Fritchie
Committer:Scott Lystig Fritchie

Clean up internal protocol<->tuple mappings for correct epoch checking

Commit:5a65a16
Author:Scott Lystig Fritchie

Remove straggler CoC items in code

Commit:6089ee6
Author:Scott Lystig Fritchie
Committer:Scott Lystig Fritchie

read_chunk API refactoring; all tests pass; todo tasks remain

Commit:0a8c415
Author:Scott Lystig Fritchie
Committer:Scott Lystig Fritchie

trim_chunk API refactoring; all tests pass; todo tasks remain

Commit:3d730ea
Author:Scott Lystig Fritchie
Committer:Scott Lystig Fritchie

write_chunk API refactoring; all tests pass; todo tasks remain

Commit:2932a17
Author:Scott Lystig Fritchie
Committer:Scott Lystig Fritchie

append_chunk API refactoring; all tests pass; todo tasks remain

Commit:c49ccaf
Author:Scott Lystig Fritchie

Merge slf/flu-config-rcd-style

Commit:5aeaf87
Author:Scott Lystig Fritchie

WIP: machi_chain_manager1:set_chain_members() API change, all tests pass, yay

Commit:10a27ce
Author:Scott Lystig Fritchie
Committer:Scott Lystig Fritchie

All eunit tests now passing again

Commit:611f33e
Author:Scott Lystig Fritchie

Change trigger_gc default -> 0

Commit:f735842
Author:UENISHI Kota
Committer:UENISHI Kota

Trim command and GC prototype implementation * maybe_gc/2 is triggered at machi_file_proxy, when chunk is deleted and the file is larger than `max_file_size` * A file is deleted if all chunks except 1024 bytes header are trimmed * If a file is going to be deleted, file_proxy notifies metadata_mgr to remember the filename persistently, whose filename is `known_files_<FluName>` * Such trimmed filenames are stored in a machi_plist file per flu * machi_file_proxy could not be started if the filename is in the manager's list. Consequently, any write, read and trim operations cannot happen against deleted file. * After the file was trimmed, any read request to the file returns `{error, trimmed}` * Disclaimer: no tests written yet and machi_plist does not support any recovery from partial writes. * Add some thoughts as comments for repairing trims. * State diagram of every byte is as follows: ``` state\action| write/append | read_chunk | trim_chunk ------------+----------------+------------------+--------------- unwritten | -> written | fail (+repair) | -> trimmed written | noop or repair | return content | -> trimmed trimmed | fail | fail | noop ```

Commit:0f688d6
Author:UENISHI Kota
Committer:UENISHI Kota

Update read_chunk() PB protocol to return trimmed chunks

Commit:3e975f5
Author:UENISHI Kota
Committer:UENISHI Kota

Allow read_chunk() to return partial chunks This is simply a change of read_chunk() protocol, where a response of read_chunk() becomes list of written bytes along with checksum. All related code including repair is changed as such. This is to pass all tests and not actually supporting partial chunks.

Commit:1b612bd
Author:UENISHI Kota

Fix typo in comment

Commit:dfe953b
Author:UENISHI Kota
Committer:UENISHI Kota

Add surface of trim to scrub

Commit:952d2fa
Author:Scott Lystig Fritchie

Change flag_checksum -> flag_no_checksum for consistency

Commit:81cb103
Author:Scott Lystig Fritchie

WIP: broken

Commit:679f54f
Author:Scott Lystig Fritchie
Committer:Scott Lystig Fritchie

Implement disable read repair

Commit:91496c6
Author:Scott Lystig Fritchie

Oops, fix PB stuff to add witnesses

Commit:2b64028
Author:Scott Lystig Fritchie

Add kick_projection_reaction, implement yo:tell_author_yo()

Commit:1e14fe8
Author:Scott Lystig Fritchie

Ha, oops! Add bad_epoch code, derp 1

Commit:3d2b49b
Author:Scott Lystig Fritchie

WIP: refactoring & edoc'ing

Commit:7aff9fc
Author:Scott Lystig Fritchie

WIP: giant hairball 12

Commit:64817dd
Author:Scott Lystig Fritchie

WIP: giant hairball 01

Commit:f45dc78
Author:Scott Lystig Fritchie

WIP: hairball, but: Failed: 6. Skipped: 0. Passed: 13

Commit:93f64a2
Author:Scott Lystig Fritchie

WIP: hairball, but flu_smoke_test() works!

Commit:77b4da1
Author:Scott Lystig Fritchie

WIP: giant hairball 5

Commit:0e32fd2
Author:Scott Lystig Fritchie

WIP: giant hairball 3

Commit:6d95d86
Author:Scott Lystig Fritchie

WIP: giant hairball, bleh, low-level checksum_list() barely working

Commit:90efc41
Author:Scott Lystig Fritchie

machi.proto definition for low-level protocol ops

Commit:2763b16
Author:Scott Lystig Fritchie
Committer:Scott Lystig Fritchie

timing_pb_encoding_test_... speed factor=35.95 [2.730 s] ok So, the PB style encoding of the Mpb_LL_WriteProjectionReq message is about 35-36 times slower than using Erlang's term_to_binary() and binary_to_term(). {sigh}

Commit:5d8b648
Author:Scott Lystig Fritchie

All projection store protocol operations are now using Protocol Buffers! So, there's some cheating going on, because some of the parts of the #projection_v1{} and #p_srvr{} records aren't fully specified. Those parts are being specified as "opaque" in the field names, e.g. optional bytes opaque_flap = 10; optional bytes opaque_inner = 11; required bytes opaque_dbg = 12; required bytes opaque_dbg2 = 13; The serialization that's being used is erlang term sexprs. That isn't portable. So if/when we really need to deal with a non-Erlang language, we'll have to straighten this out further.

Commit:841235b
Author:Scott Lystig Fritchie

WIP: bugfixes, add {error, written}

Commit:4fc0578
Author:Scott Lystig Fritchie

WIP: bugfixes, machi_flu1_test still broken

Commit:d9407b7
Author:Scott Lystig Fritchie

WIP: dinnertime, machi_flu1_test still broken

Commit:31c5bcc
Author:Scott Lystig Fritchie

WIP: 1/2 of low-level projection proto finished, machi_flu1_test fails

Commit:725b10b
Author:Scott Lystig Fritchie

Complete PB round-trip for #projection_v1{}, bleh

Commit:2068f70
Author:Scott Lystig Fritchie

WIP: encoding #p_srvr and #projection_v1, just starting. Damn tedious.

Commit:73f71c4
Author:Scott Lystig Fritchie

WIP: list_files end-to-end!

Commit:6722b3c
Author:Scott Lystig Fritchie

WIP: checksum_list incomplete implementation....

Commit:44c22bf
Author:Scott Lystig Fritchie

WIP: read_chunk #1

Commit:a8782ee
Author:Scott Lystig Fritchie

WIP: write_chunk #1

Commit:5ef499e
Author:Scott Lystig Fritchie

WIP: append_chunk #1

Commit:1372bd9
Author:Scott Lystig Fritchie
Committer:Scott Lystig Fritchie

{sigh} add filter-dialyzer-dep-warnings

Commit:40c0a72
Author:Scott Lystig Fritchie

Add test/machi_pb_test.erl, finish PB refactoring

Commit:a82bd68
Author:Scott Lystig Fritchie

Overhaul the 0.1 PB definition. Again. Many thanks to @seancribbs for a suggestion to avoid the PB design mistake/feature of the original Riak KV PB API.

Commit:87b636a
Author:Scott Lystig Fritchie

WIP: PB wrestling

Commit:37a8c1c
Author:Scott Lystig Fritchie

WIP: PB wrestling

Commit:e5673b5
Author:Scott Lystig Fritchie

First attempt at Protocol Buffers .proto + infrastructure