Commit graph

284 commits

Author SHA1 Message Date
Gregory Burd
b67d1f8449 WIP: sitll fixing things. 2012-06-24 17:16:42 +05:30
Gregory Burd
246e891d01 WIP: another bug 2012-06-23 16:06:49 +01:00
Gregory Burd
4bcd4b5de1 WIP: more bugs fixed, closer to working again... 2012-06-23 15:56:53 +01:00
Gregory Burd
102c518269 WIP: still chasing the bug... 2012-06-23 09:38:03 +01:00
Gregory Burd
a79dde264f WIP 2012-06-22 16:39:10 +01:00
Gregory Burd
d0245c85c0 Oops, I left a merge in. 2012-06-22 10:53:04 +01:00
Gregory Burd
9eabb78d06 WIP: still sorting out some bugs I've introduced (just for fun). 2012-06-22 10:48:22 +01:00
Gregory Burd
c9d8ffa8ea WIP 2012-06-21 23:12:32 +01:00
Gregory Burd
39d06fb29d Whitespace 2012-06-19 23:00:18 +01:00
Steve Vinoski
538518045c fix badmatch 2012-06-19 14:30:11 -04:00
Gregory Burd
fe73e4a48b WIP: working toward fixing the blocking fold test 2012-06-19 15:03:42 +01:00
Gregory Burd
32de0e4f7a Update to 1.1.0 2012-06-19 15:02:10 +01:00
Gregory Burd
0cb8d6a86b Make eunit a bit more noisy, add more structure and debug config. 2012-06-19 15:01:50 +01:00
Gregory Burd
8f8cda0776 Remove pices related to Riak, clean up other things. 2012-06-19 15:00:48 +01:00
Gregory Burd
30fd2ded4c Cleanup 2012-06-19 15:00:06 +01:00
Gregory Burd
bfdb63094f Remove Riak-specific integration code. Deliver it later as a separate repo. 2012-06-19 11:15:29 +01:00
Gregory Burd
fb01a7dd29 Improve tests. 2012-06-14 18:15:47 +01:00
Gregory Burd
95a133c7cc Centralize file format version tag. 2012-06-14 18:15:33 +01:00
Gregory Burd
fee95b9d62 Don't depend on lager 2012-06-14 18:14:51 +01:00
Gregory Burd
49604c77d9 Whitespace, comments, etc. 2012-06-14 18:14:33 +01:00
Gregory Burd
75df2b86bf Improve the compression code, add potential for LZ4 algorithm when ready. 2012-06-14 18:13:27 +01:00
Gregory Burd
db41532258 Allow keys to expire at different points in time as well as due to a global expiry time. 2012-06-14 18:11:41 +01:00
Gregory Burd
b6987c1e47 Whitespace 2012-06-14 18:04:39 +01:00
Gregory Burd
d3ce4ce73d Minor fixes and reorg. 2012-06-14 18:03:55 +01:00
Gregory Burd
9d3c99404a Use locally installed rebar. 2012-06-14 18:03:34 +01:00
Gregory Burd
af4d2ba4d8 Merge branch 'master' of github.com:basho/hanoidb 2012-06-11 23:41:49 +01:00
Gregory Burd
ee89f93009 Use a uniform method to calculate bytes that can manage lists as well. 2012-06-11 23:40:28 +01:00
Gregory Burd
f4eea4a594 Whitespace and comment cleanup. 2012-06-11 23:40:07 +01:00
Gregory Burd
acbcf9d601 Return properly shaped tuple. 2012-06-11 23:39:04 +01:00
Gregory Burd
0e98543a84 Don't depend on basho_bench. 2012-06-06 18:17:11 +02:00
Kresten Krab Thorup
669f589d0c Implement smaller incremental merge steps
Right now, this is controlled by the macro
INC_MERGE_STEP in hanoidb_nursery; eventually
we should turn this into a configuration option.

Making this small, (minimum is 1), hurts average perf
but reduces the 99.9 percentile latency.
2012-05-11 22:31:23 +02:00
Kresten Krab Thorup
1b42172cbe Fix bug when merge result is an empty file
This happens when all entries are expired, or
if all entries would have been tombstones.
2012-05-11 14:58:53 +02:00
Kresten Krab Thorup
61720065d9 Add some doc/spec 2012-05-11 12:33:33 +02:00
Kresten Krab Thorup
fbda7af576 Honor expiry_secs == 0
When this is the case, we use the old on-disk
encoding to shave 4 bytes off every entry.
2012-05-11 12:30:07 +02:00
Kresten Krab Thorup
181b1debb8 Update basho_bench driver to recognize config flags
Also, add default values to template configuration
2012-05-11 12:29:16 +02:00
Kresten Krab Thorup
b6955c9a75 Refactor for expiry_secs option
Tree nodes now hold entries at the form

   {Key, ?TOMBSTONE 
       | BinValue
       | {?TOMBSTONE, TStamp}
       | {BinValue, TStamp}}

We use the form without TStamp when expiry_secs
is unset or set to 0 (i.e., values don't expire).

merger/writer: Move KV count into writer, because
now the writer:add determines if a value is expired
and thus wither a value is actually written.  Thus,
writer now has a new API function which returns the
KV count written so far.

reader: lookup/fold API hides the TStamp tuples,
so only the next_node API used by the merger
is exposed to these {Key, {_, TStamp}} entries.

nursery: like reader, the TStamp'ed tuples are
not exposed in the client API; expired values
are simply not returned from fold/lookup.

hanoidb: add config option {expiry_secs, N}.

other modules: Make sure that config is passed
all the way down through (sub) processes to be
able to utilize the config option everywhere.

test: update to work with new option.
2012-05-11 12:00:32 +02:00
Kresten Krab Thorup
245d815e4c Add magic "HAN1" to btree file format
BREAKING CHANGE!  This change provides for future
file format changes, but also breaks backwards
compatibility.

Also describe the file format in design_document
2012-05-08 17:27:05 +02:00
Kresten Krab Thorup
f7681da1db Add some more current design diagrams 2012-05-08 00:02:08 +02:00
Kresten Krab Thorup
7622b4e4b8 Implement concurrent GETs
With this change, GETs will flow concurrently
down through the level controllers, replying
directly to the caller via gen_server:reply.
Very actor-like :-)
2012-05-08 00:00:10 +02:00
Kresten Krab Thorup
c58b627661 First steps towards intelligent CRC error handling
Current code base silently ignores CRC errors,
meaning that KVs that have errors will just
disappear, or may show up as a previously stored
value for the same key.
2012-05-07 23:58:44 +02:00
Kresten Krab Thorup
14dd00ad12 Fix some doc strings to make edoc happy 2012-05-07 22:53:05 +02:00
Kresten Krab Thorup
3abc189680 Remove unused files 2012-05-07 17:27:17 +02:00
Kresten Krab Thorup
4b2c937be9 chmod +x enable-hanoidb 2012-05-07 17:25:54 +02:00
Kresten Krab Thorup
e315b92faf Rename hanoi -> hanoidb 2012-05-07 17:22:55 +02:00
Kresten Krab Thorup
3f5a8a7792 New todo items 2012-05-07 14:57:58 +02:00
Kresten Krab Thorup
ab6b974830 Fix list_buckets
List buckets was blocking riak, because file-level
range folds sends too many values. This makes
range fold stable towards such cases.
2012-05-07 01:48:48 +02:00
Kresten Krab Thorup
6b6f4417c1 Ensure fold limits are honored 2012-05-07 01:09:08 +02:00
Kresten Krab Thorup
9a7b9eb29f Simplify life cycle for fold workers
With this change, the fold worker does not
link to the receiver; now it simply monitors
the receiving process.  If the receiver dies,
the fold worker dies normally.  

The individual fold processes running on level
files are linked to the fold worker; so between
fold merge worker and those, normal link/kill
applies.
2012-05-07 00:14:33 +02:00
Kresten Krab Thorup
fb67fed456 Rename 'die' message from hanoi -> fold_worker
More appropriately now named shutdown
2012-05-06 22:42:10 +02:00
Kresten Krab Thorup
b26f612a1f Rename plain_rpc:send_cast to just cast
Also introduce plain_rpc:call/3 (last arg is timeout)
2012-05-06 22:41:01 +02:00