Commit graph

908 commits

Author SHA1 Message Date
martinsumner
e4a2a8ecea Stuff on read repair 2017-07-11 10:28:34 +01:00
martinsumner
b5ca2a8541 Word wrangling 2017-07-10 16:47:39 +01:00
martinsumner
185d4e9747 Notes on Riak Implementation options 2017-07-10 16:36:01 +01:00
martinsumner
03d0b913d5 Add new background section 2017-07-10 11:45:35 +01:00
Martin Sumner
3ed41a0e74 Merge pull request #78 from martinsumner/rdb/review/mas-tictac
Some proposed edits
2017-07-10 09:50:40 +01:00
martinsumner
e7c322d956 Clarify pointer to research 2017-07-10 09:49:20 +01:00
Russell Brown
6439da626a Some proposed edits 2017-07-09 17:06:50 +01:00
martinsumner
414785802e Minor edits 2017-07-07 16:38:02 +01:00
martinsumner
d5a365b368 More word wrangling 2017-07-07 10:23:21 +01:00
martinsumner
417687c004 Word wrangling 2017-07-07 10:13:37 +01:00
martinsumner
4cbe838b52 Ongoing updates 2017-07-06 17:37:59 +01:00
martinsumner
74f0e2bb6d Further updates 2017-07-06 17:22:09 +01:00
martinsumner
780bf8aeb8 Wording changes
Attempt to clarify
2017-07-06 17:01:19 +01:00
martinsumner
57f7614b40 Initial edits
Part way through read-through.  Disovered when referencing Cassandra
Merkle Trees that they also use XOR of hashes rather than concatenation
before hashing
2017-07-06 16:51:07 +01:00
martinsumner
3105656d2e Add test descriptions and further documentation 2017-07-06 15:40:30 +01:00
martinsumner
0d72b353fe Add test of expiry of nrt aae terms 2017-07-04 13:29:40 +01:00
martinsumner
439bf8c3b8 Add bucket whitelist test 2017-07-04 10:55:53 +01:00
Martin Sumner
1af9ac56dc Revert passing Bucket
Bad edit.  Reverted
2017-07-03 19:06:41 +01:00
martinsumner
97fdd36d53 Returning bucket when bucket is all
Need to know {Bucket, Key} not just Key if all buckets are being covered
by nrt aae.  So shoehorning this in - will also allow for proper use of
FilterFun when filtering by partition.
2017-07-03 18:03:13 +01:00
martinsumner
b143ea1c08 Anti-entropy write-up
Some initial jottings
2017-07-03 11:12:03 +01:00
martinsumner
d0a825a145 Extend test to detect keys
When comparing recent changes demonstration the detection of the keys
which have changed with a follow-up query
2017-07-03 10:33:34 +01:00
Martin Sumner
fd84e4f608 Test timeouts
So that coverage testing will run.
2017-07-02 22:23:02 +01:00
martinsumner
52ca0e4b6c Test expansion
Detect a recent difference
2017-07-02 19:33:18 +01:00
martinsumner
da53808e2e Extend test beyond restart
Prove that recency check still works after a restart
2017-07-01 08:24:58 +01:00
martinsumner
a15c046887 Re-introduce commented tests 2017-06-30 16:31:48 +01:00
martinsumner
954995e23f Support for recent AAE index
With basic ct test.

Doesn't currently prove expiry of index.  Doesn't prove ability to find
segments.

Assumes that either "all" buckets or a special list of buckets require
indexing this way.  Will lead to unexpected results if the same bucket
name is used across different Tags.

The format of the index has been chosen so that hopeully standard index
features can be used (e.g. return_terms).
2017-06-30 16:31:22 +01:00
martinsumner
8da8722b9e Add temporary aae index
Pending ct tests.  The aae index should expire after limit_minutes and
be on an index which is rounded to unit_minutes.
2017-06-30 10:03:36 +01:00
martinsumner
2dd303237b Change XOR 2017-06-28 10:55:54 +01:00
martinsumner
8e7aaf0ee7 Correct testutil to understand riak_extract_metadata
Change, but change not reflected in tets code
2017-06-27 17:11:13 +01:00
martinsumner
ebef27f021 Extract Last Modified Date from Riak Object
As part of process to supporting a recent changes index for
near-real-time anti-entropy
2017-06-27 16:25:18 +01:00
martinsumner
f81a4bca0d Revert "WIP - Recent Modifications"
This reverts commit bc19a05d83a02d7ec03771657df85b33acc6cfee.
2017-06-27 16:25:18 +01:00
martinsumner
9fca17d56a WIP - Recent Modifications
Just some initial WIP code for this.  Will revisit this again after
exploring some ideas as to how to reduce the cost of the
get_keys_by_segment.

The overlal idea is that there are trees of recent modifications, with
recent being some rolling time window made up of hourly blocks, and
recency being dtermined by the last-modified date on the object metadata
- which should be conistent across a cluster.

So if we were at 15:30 we would get the tree for 14:00 - 15:00 and the
tree for 15:00-16:00 from two different queries which cover the same
partitions and then compare.

Comparison may find differences, and we know what segment the difference
is in - but how to then find all keys in that segment which have been
modified in the period?  Three ways:

Do it inefficeintly and infrequently using a fold_keys and a filter
(perhaps with SST files having a highest LMD in the metadata so that
they can be skipped).
Add a special index, where verye entry has a TTL, and the Key is
{$segment, Segment, Bucket, Key}  so that a normal 2i query cna be used.
Align hashing for segments with hashing for penciller lookup so that a
query over the actual keys cna be optimised skipping chunks of the
in-memory part, and chunks of the SST file
2017-06-27 16:25:18 +01:00
Martin Sumner
fde9af28dd comment test to avoid timeout 2017-06-26 17:08:31 +01:00
Martin Sumner
e938eaa153 Add close to test 2017-06-23 16:51:28 +01:00
Martin Sumner
99131320c5 Broken test log 2017-06-23 15:20:24 +01:00
martinsumner
25a5065edd Re-introduce test (again) 2017-06-23 14:56:32 +01:00
martinsumner
5e9e1347c7 Add test to find {term, key} that represents difference
Not just detect existence of difference, but clarify what that
difference that is.
2017-06-23 14:55:49 +01:00
martinsumner
2be4422e47 Re-add test 2017-06-23 12:44:52 +01:00
martinsumner
4e5c3e2f64 Fix merge
Fix typo in merge,  and extra validation step to unit tests to prevent
it returning.
2017-06-23 12:32:37 +01:00
martinsumner
47655dc9c7 Uncomment previous test 2017-06-22 14:30:14 +01:00
martinsumner
5a012ff8a6 Add test of index comparison
Compare two indexes for consistency
2017-06-22 13:54:51 +01:00
martinsumner
7cfa392b6e Flexible TicTacTree sizes
Allow tictac tree sizes to be flexible.

Tested lots of different sizes.  Having both level 1 and level 2 the
same size seemed to be consistently quicker than trying to make either
of the levels relatively wider.

There's an 8% performance improvement if the SegmentCount is reduced by
a quarter.
2017-06-20 10:58:13 +01:00
martinsumner
d5b4cb844f Finding keys
Progresses from a segment list to scanning for the keys in that segment
2017-06-19 18:38:55 +01:00
martinsumner
8203487a11 Expanded test
ct testing of tictac trees now compares between differently partitioned
stores.
2017-06-19 15:43:19 +01:00
Martin Sumner
833c7a80cb corrected test
differing object was in wrong bucket
2017-06-19 13:11:43 +01:00
martinsumner
c586b78f45 Initial code with busted ct test
Initiat comparison made betwene trees externally - but ct test is bust.
2017-06-19 11:36:57 +01:00
martinsumner
6ad98d77c5 Spec module for dialyzer
Add specs/docs for the leveled_tictac module.  Dialyzer passes.
2017-06-16 13:47:19 +01:00
martinsumner
f5dd154cee Rename hashtree query
Naming is now confusing now we have TicTac Trees.  This query builds a
list of keys and hashes not a tree - so it was misleading anyaway.  Now
renamed hashlist_query.
2017-06-16 12:38:59 +01:00
Martin Sumner
7642aac2cc Change Riak object hash approach
Change the riak object hash being kept in the metadata, to being a hash
of the vector clock
2017-06-16 10:14:24 +01:00
martinsumner
959e7f932f Add simple merge
Allow for tictac trees to be merged
2017-06-15 16:16:19 +01:00