Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Commits on Jan 21, 2012
  1. @krestenkrab

    Merge pull request #8 from jlouis/qc-sync-range

    krestenkrab authored
    Qc sync range
  2. Fix a bug in lsm_tree:close/1.

    There is a race condition based on the monitor set in a call. We might
    get a normal exit from the monitor message deep inside gen_server.
    This has to be handled. I've seen this race in my QC tests.
  3. Make the sync_range call test work.

    Currently, we are also synchronizing all the key collection in the
    call. But in the future we might want to interleave that with other
  4. Build a record for the trees.

    This is a needed step to support range-queries since we may collect
    range queries at a later time, interleaved with the normal operations.
Commits on Jan 20, 2012
  1. @krestenkrab
  2. @krestenkrab

    Make close/1 resilient to noproc

    krestenkrab authored
    Getting noproc exceptions here is ok, we simply
    ignore such errors.
  3. @krestenkrab
  4. @krestenkrab
  5. @krestenkrab

    Rename merger2 -> merger

    krestenkrab authored
  6. @krestenkrab

    Remove unused merger

    krestenkrab authored
Commits on Jan 19, 2012
  1. @krestenkrab
  2. @krestenkrab

    Add both sync and async range fold

    krestenkrab authored
    Sync blocks insert/lookup while doing a range
    query, but still buffers the results in a
    per-range query process.  
    Async fold runs on a hard link copy of the
    underlying tree data.
    This commit and also fixes a number of bugs 
    related to folding; it was not taking nursery 
    data into account.
  3. @krestenkrab

    Make lsm_btree:close/1 stop more processes

    krestenkrab authored
    Closing a tree did not stop ongoing merge
    processes beyond the current top level.
    Now close synchronously calls down through all
    levels and closes each one.
  4. @krestenkrab

    Update readme

    krestenkrab authored
  5. @krestenkrab

    Close trees before cleanup

    krestenkrab authored
    Problem is that we sometimes get errors resulting
    from files being written as a result of pending
    merges.  Closing a tree should stop all such
    file-level activity.
Commits on Jan 16, 2012
  1. @krestenkrab
Commits on Jan 15, 2012
  1. @eriksoe @krestenkrab

    Clarify level handling in writer.

    eriksoe authored krestenkrab committed
  2. @krestenkrab

    README: Explain 'LSM' and provide link to paper.

    Erik Søe Sørensen authored krestenkrab committed
  3. @krestenkrab

    Implement lsm_btree:fold_range/5

    krestenkrab authored
    First implementation of range fold
    Range folding doesn't prohibit insert/lookup or
    merge operations, but each level can only have
    one range fold operation active.
    Thus, worst case active range folds can double
    space requirements, because it holds hard-linked
    copies of used btree files.
Commits on Jan 11, 2012
  1. @krestenkrab

    Bugfix merged in basho/ebloom

    krestenkrab authored
    so we can go back to depending on basho/ebloom
Commits on Jan 10, 2012
  1. @krestenkrab

    Improve nursery handling

    krestenkrab authored
    - Code moved to separate module
    - Recovery now operational; re-opening a
      tree will actually read the nursery log.
    We use a sequential log file for the nursery
    and also keep inserted {K,V} in memory
    only 32 K/V pairs at a time.
    configured in src/lsm_btree.htl
Commits on Jan 8, 2012
  1. @krestenkrab
Commits on Jan 7, 2012
  1. Optimize open dict check.

    A dict is open and with keys if its size is greater than 0. Go through
    the dicts one by one with lists:any/2 and use that to optimize the
    check. Ought to run faster than traversing the full set.
  2. Implement failing key lookup.

    We generate a set of names that are highly unlikely to be in the tree
    as well because this makes it way easier for the ?SUCHTHAT macro to
  3. Work on failing keys. Optimize generator.

    To make failing keys work we must be able to produce a key in fewer
    failures then currently. So encode the picker for non-empty trees
    directly so it is much faster and doesn't try to do it by generating a
    case and then asking "is this one good enough?". A simple
    dict:filter/2 does it.
  4. @krestenkrab

    Minor typo

    krestenkrab authored
  5. @krestenkrab

    Update REAME

    krestenkrab authored
  6. @krestenkrab
  7. @krestenkrab
  8. @krestenkrab
  9. @krestenkrab

    Add close to shame tests

    krestenkrab authored
  10. @krestenkrab

    Allow put(Key, Binary|'deleted')

    krestenkrab authored
    Last missing piece to make delete work it seems
  11. @krestenkrab

    Remove warning

    krestenkrab authored
Something went wrong with that request. Please try again.