Commit graph

1152 commits

Author SHA1 Message Date
Martin Sumner
ede0982b2d Merge branch 'mas-bloomtest' into mas-segid-cryptohash 2017-10-20 20:47:21 +01:00
Martin Sumner
1964f1055b Add test timeout 2017-10-19 21:44:07 +01:00
Martin Sumner
f38d3fde4b Test frequency change 2017-10-19 13:56:07 +01:00
Martin Sumner
87731a85f5 Loop test 2017-10-19 13:51:32 +01:00
Martin Sumner
ef6df2387d Merge pull request #97 from martinsumner/mas-runner
Mas runner
2017-10-17 23:09:02 +01:00
Martin Sumner
84239955ed Clarify wording 2017-10-17 22:31:11 +01:00
Martin Sumner
f89e2cf1f1 Improve test coverage 2017-10-17 22:06:30 +01:00
Martin Sumner
bfaed921e6 Split code for folders - introduce runner actor
Introduce a dedicated module for all the different fold types.  Also simplify the list of folders by deprecating those folds that should eb achieveable by fold_heads/fold_objects type folds but with smarter functions.

Makes sure that the fold functiosn also have better spec coverage, and are dialyzer checked.
2017-10-17 20:39:11 +01:00
Martin Sumner
d0b8e47f77 Merge pull request #96 from martinsumner/mas-riakaae-impl-2
Mas riakaae impl 2
2017-10-17 09:39:12 +01:00
Martin Sumner
212b08a44d Merge branch 'master' into mas-riakaae-impl-2 2017-10-16 21:14:21 +01:00
Martin Sumner
5c8eea3f0e Extend foldheads_bybucket test
Now explicitly checking key ranges
2017-10-06 15:07:36 +01:00
Martin Sumner
0c5f5cdb65 Add key range to fold_heads queries 2017-10-06 15:02:14 +01:00
Martin Sumner
7912742a84 Add valid_size/1 2017-09-29 17:35:15 +01:00
Martin Sumner
fd4fbf7ea8 Keep trees empty on merge
Done't blow out a tree unnecessarily on merge
2017-09-29 15:28:17 +01:00
Martin Sumner
5e6534fb49 Initialise empty trees
When new trees are initialised they are started with 1 byte binaries at Level2 - and become full-size following a merge or add event.

The idea is that when trees are distributed before they are added to, or when over-sized trees are used - the output may be smaller on the network.
2017-09-29 15:01:16 +01:00
Martin Sumner
4d6f816ab2 Switch back to binary 2017-09-29 11:17:02 +01:00
Martin Sumner
8e3b7baa18 Change encoding - issue with JSON friendliness
Also add compression to reduce penalty on sparse trees
2017-09-29 11:08:37 +01:00
Martin Sumner
556ab5a95a Merge pull request #94 from martinsumner/mas-explain-headgetchoice
Mas explain headgetchoice
2017-09-29 10:31:07 +01:00
Martin Sumner
056e65ff74 Edited for clarity 2017-09-29 10:28:35 +01:00
Martin Sumner
855b1d3ad8 More edits 2017-09-28 20:23:29 +01:00
Martin Sumner
ed9a444805 Initial edits, more info on cache experiment 2017-09-28 20:14:18 +01:00
Martin Sumner
e81a53b539 Initial draft of option comparison
n HEADs and 1 GET

or

1 GET and n-1 HEADs
2017-09-28 20:04:21 +01:00
Martin Sumner
61724cfedb Merge branch 'master' into mas-riakaae-impl-2 2017-09-28 13:23:29 +01:00
Martin Sumner
15a0a6f0f1 Merge pull request #93 from martinsumner/mas-tictac-hashfun
Mas tictac hashfun
2017-09-28 11:05:14 +01:00
Martin Sumner
0f5911ab70 Add unit test of archive files 2017-09-28 10:50:54 +01:00
Martin Sumner
3950942da3 Roll in fix for intermittently failing test
As descibed in https://github.com/martinsumner/leveled/issues/92

Only the first fix was made.

Just to eb safe - archiving means renaming to another file with a different extension.  Assumption is that renamed files cna be manually reaped if necessary.
2017-09-27 23:52:49 +01:00
Martin Sumner
433cc37eb6 Rolled back LMD in metadata
Because there's no sensible way of using it if objects are mutable - you still end up with the same false positives in the tictactree.

Didn't fully rollback the change as spec and docs were added which chould be useful going forward.
2017-09-27 12:26:12 +01:00
Martin Sumner
2e5b9c80f4 Add max LMD to Riak metadata
This is an interim stage towwards enhancing the proxy object so that it contains more helper information (other than size).

The aim is to be able to run more efficient fold_heads queries that might filter on LMD range (so as not to have to co-ordinate the running of comparative queries).  For example if producing a tictactree to compare between two different offsets, a max LMD could be passed in so that changes beyond the time the first query was requested can be ignored.
2017-09-27 12:15:18 +01:00
Martin Sumner
389694b11b Add exportable option to tictac
Idea being that sometimes you may wish to compare a tictac tree between leveled and something that doesn't understand erlang:phash or term_to_binary.  So allow the magic_hash to be used instead - and perhaps an extract function that does base64 encoding or something similar.
2017-09-26 22:49:40 +01:00
Martin Sumner
2f9afa1469 Add support for performing a magic hash on a binary
Ignore unnecessray term_to_binary if already binary.  This will be useful when we use magic_hash in tictac_trees we wish to be exportable.
2017-09-26 16:32:59 +01:00
Martin Sumner
f50a2a19d3 File should not be pushed 2017-09-25 15:57:06 +01:00
Martin Sumner
dfab33e8da Add smaller trees
The "small" tree will serialise to 1.5MB - which seems large.  Much smaller trees seem to be more suitable for things like recently modified aae indexes.
2017-09-25 13:07:08 +01:00
Martin Sumner
69ed945e58 Merge pull request #90 from martinsumner/mas-riakaae-impl-2
Mas riakaae impl 2
2017-09-22 14:19:33 +01:00
Martin Sumner
9730816c38 Merge branch 'master' into mas-riakaae-impl-2 2017-09-22 09:39:32 +01:00
Martin Sumner
95ecfd901a Merge pull request #89 from martinsumner/mas-i83-otp16tests
Make tests compatible with OTP 16
2017-09-15 18:58:07 +01:00
Martin Sumner
eba21f49fa Make tests compatible with OTP 16
this required a switch to change the sync strategy based on rebar parameter.

However tests could be slow on macbook with OTP16 and sync - so timeouts added in unit tests, and ct tests sync_startegy changed to not sync for OTP16.
2017-09-15 15:10:04 +01:00
Martin Sumner
605a8b1e73 Merge pull request #88 from martinsumner/mas-testfailure-01
Fix tests
2017-09-15 10:34:50 +01:00
Martin Sumner
869e799b41 Fix tests
Obviously got totally messed up and confused when testing previous
commits.

Multiple tests were failing for a change which got merged in as the
tests were not reflecting the required API.
2017-09-15 10:33:16 +01:00
Martin Sumner
ff6a662bed Merge pull request #87 from martinsumner/mas-foldheads-unittest
Unit tests use wrong query format
2017-09-14 18:07:26 +01:00
Martin Sumner
856a64c4d4 Unit tests use wrong query format
Not sure how this happened.  Bad merge?  Just plain sloppiness on my part?  Anyhow, the unit tests were not working ..
2017-09-14 18:06:50 +01:00
Martin Sumner
ed56ef17a1 Make export mochijson friendly 2017-09-13 23:45:48 +01:00
Martin Sumner
d8ca0274f6 Export the import 2017-09-13 22:02:44 +01:00
Martin Sumner
d98534b8f3 Add struct to help with mochijson2
Try and make this more mochijson2 friendly
2017-09-13 21:56:28 +01:00
Martin Sumner
9f97c82d0d Add import/export support
Also fix for fold_heads unit tests to reflect new booleans required by changes to support there use in MapFolds
2017-08-16 16:58:38 +01:00
Martin Sumner
9aaa144f7a Major mixup!
Got my leveled and leveldb results the wrong way round.
2017-08-11 11:13:43 +01:00
Martin Sumner
5f3d44ffca Merge pull request #86 from martinsumner/mas-aae-riakimplnotes
Mas aae riakimplnotes
2017-08-10 17:16:40 +01:00
Martin Sumner
bfb77eacf7 Clarify on AAE locks 2017-08-10 17:15:27 +01:00
Martin Sumner
e91a3034df Update volume chart
Looks better this way
2017-08-10 16:46:56 +01:00
Martin Sumner
107c28b385 Add comparison of just adding AAE
Provide some actual measurement of the cost of turning on active AAE.  It is higher than I expected!
2017-08-10 16:41:32 +01:00
Martin Sumner
53ddc8950b Add tests using fold_heads
Comparing the inbuilt tictac_tree fold, to using "proper" abstraction and achieving the same thing through fold_heads.

The fold_heads method is slower (a lot more manipulation required in the fold) - expect it to require > 2 x CPU.

However, this does give the flexibility to change the hash algorithm.  This would allow for a fold over a database of AAE trees (where the hash has been pre-computed using sha) to be compared with a fold over a database of leveled backends.

Also can vary whether the fold_heads checks for presence of the object in the Inker.  So normally we can get the speed advantage of not checking the Journal for presence, but periodically we can.
2017-08-07 10:45:41 +01:00