Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on May 10, 2013
  1. @slfritchie
Commits on Apr 23, 2013
  1. @evanmcc

    Speed up open and various fold operations. This is comprised of

    evanmcc authored
    two major changes:
      - replace the visitor fold with an explict crc check.
      - rewrite all folds in terms a new large file fold function that
        adaptively prefetches (and jumps around when prefetching is
        the wrong thing to do) data so that we're operating on larger
        chunks of data, instead of doing a large number of small reads.
Commits on Mar 28, 2013
  1. @slfritchie
Commits on Mar 5, 2013
  1. @slfritchie
  2. @slfritchie
  3. @slfritchie

    Add ?IMPLIES(length(Ops) > 1, ...) to avoid legit model ambiguity

    slfritchie authored
    in cases where the op list is too short to make a reasonable &
    correct guess of behavior.
    
    Use eqc:testing_time/2 for test length & EUnit timeout at 2x
    testing time.
Commits on Dec 3, 2012
  1. @jtuple

    Merge branch 'jdb-avoid-file-nifs'

    jtuple authored
    Conflicts:
    	test/bitcask_timeshift.erl
Commits on Nov 29, 2012
  1. @jtuple
  2. @jtuple
Commits on Nov 27, 2012
  1. @slfritchie
Commits on Nov 13, 2012
  1. @slfritchie

    Clean up bitcask_eqc.erl

    slfritchie authored
    * Allow any test process to call incr_clock()
    * Clean up unused var warnings
    * Add explicit support to run on local or slave node, default = local
    * Comment out the useful but now (I hope) unnecessary scribbling of
      the test inputs to a /tmp scratch file before executing.
    * prop_pulse_test_() runs for 60 seconds
    * Fix fork_results() `after` timeout to avoid false positives when
      the test case is really huge.
  2. @slfritchie
Commits on Nov 7, 2012
  1. @slfritchie

    Add tracking of newest tstamp to bitcask's file info

    slfritchie authored
    Used in conjunction with the BIF's bitcask_fstats_entry
    tracking of newest_tstamp, we no longer allow fold to
    operate on any data file that may have a timestamp that
    matches the timestamp at the time the merge started.
    
    Edit summarize() to create #file_status records that
    includes the newest_tstamp data.
    
    Add an artificial time adjustment command, incr_clock, to
    bitcask_eqc.erl.  This is used in conjunction with
    
    Add 1.1 second sleeps to EUnit tests that call merge.
    I suppose it's possible to use the same time fudging
    mechanism that bitcask_eqc.erl uses, but I'm not to avoid
    using stateful stuff -- cleaning up after twiddling app
    env vars is a hassle and can cause cascading EUnit test
    failures if you're not really careful.
Commits on Nov 4, 2012
  1. @slfritchie

    Fix race with QC model and bitcask_lockops:read_lock_data()

    slfritchie authored
    There is an honest race between a creator of a lock file
    and someone reading it: the reader may see a file of zero bytes.
    This race should be fixed with an atomic lock file creation,
    that fix should only be needed for the case where a lock creator
    crashes immediately after creating the lock file but not writing
    the file contents.
    
    Allow the model to detect that the zero-byte-lock-file race
    happened and to ignore it.
Commits on Nov 3, 2012
  1. @slfritchie

    Model fix for scheduling pathology that causes open -> {error,timeout}

    slfritchie authored
    If we manage to get a timeout when opening a database, there's a
    pathological scheduling delay that is causing starvation.  Expose
    the starvation by not considering {error, timeout} a success.
    
    Use an `open_timeout` that should be large enough to push beyond
    any pathological run schedule that QC ought to create.
  2. @slfritchie

    Fix for merge file delete & frozen fold races

    slfritchie authored
    One the keydir is frozen during a fold, it's possible for a
    parallel merge to delete files needed for the fold in a race
    with opening them.
    
    The fix is to add the concept of a fold iterator generation
    number to the NIF and to expose it via the keydir info call.
    It's safe to delete files from a successful merge operation
    if there is no fold happening or if the current fold is of
    a newer generation than the generation saved when the merge
    finishes.
    
    Also added: turning on the setuid file permissions bit of
    merge input files that are marked pending for delete.  The
    setuid bit is then checked & filtered when appropriate.
    Setuid data files are deleted at open time by a `read_write`
    caller.
Commits on Oct 29, 2012
  1. @slfritchie

    Fix races with merge by removing wall-clock timestamp comparisons

    slfritchie authored
    To fix a race with merging, and to also get rid of the problems
    where our use of `os:timestamp()` where the OS's clock goes backward,
    I added a new argument to `bitcask_nifs_keydir_put_int()` that has
    a boolean connotation: if true, then this keydir put operation is
    from an actual `bitcask:put()` operation and not from a merge or
    someone opening a bitcask in read-only mode.  And if true, then the
    only reaon why we won't accept it is if new entry is for a `file_id`
    that is lower than the known largest.
    
    For each put, for any reason, we keep track of the known largest
    `file_id` and store it in `keydir->biggest_file_id`.  If an
    `bitcask:put()` uses a file id that's smaller than `biggest_file_id`,
    then that means that a merge has started since the last real put.
    In this case, we return `already_exists`, and the Erlang code will
    wrap & start a new data file, so that the new put will always be
    appended a datafile with a larger file_id than the file_id used by
    a merge.
Commits on Oct 25, 2012
  1. @slfritchie
  2. @UlfNorell @slfritchie

    erlang:now() doesn't make a good pulse seed

    UlfNorell authored slfritchie committed
    it improves shrinking, but makes recheck not work
  3. @UlfNorell @slfritchie

    added no_side_effect on erlang:now()

    UlfNorell authored slfritchie committed
    also use erlang:now() instead of pulse:seed() to make
    quickcheck pick a fresh seed in every shrinking step
  4. @UlfNorell @slfritchie

    Better command data for open

    UlfNorell authored slfritchie committed
  5. @hanssv @slfritchie

    No need to explicitly start pulse_application_controller

    hanssv authored slfritchie committed
    This is done automatically when calling (pulse_)application:start/1 in
    the latest pulse_otp.
  6. @hanssv @slfritchie

    file operations are not side effects in bitcask_eqc

    hanssv authored slfritchie committed
  7. @UlfNorell @slfritchie

    Comments and minor refactorings to check_trace

    UlfNorell authored slfritchie committed
  8. @hanssv @slfritchie

    Changed relative path of bitcask in bitcask_eqc

    hanssv authored slfritchie committed
  9. @hanssv @slfritchie

    Adding the test code + helper modules

    hanssv authored slfritchie committed
  10. @hanssv @slfritchie

    Removing old pulse-test

    hanssv authored slfritchie committed
    The old eqc pulse property does not work with the
    new pulse/rebar.config.
Commits on Oct 17, 2012
  1. @gburd

    Merge pull request #56 from basho/remove-author-tags

    gburd authored
    remove -author attributes from source
Commits on Sep 24, 2012
  1. @dizzyd
Commits on Sep 23, 2012
  1. @dizzyd
Commits on Sep 13, 2012
  1. Seperates candidate finding function as per conversation with Reid;

    Jesse Williamson authored
    removes initials.
Commits on Sep 10, 2012
  1. @argv0
Commits on Sep 5, 2012
Commits on Feb 15, 2012
  1. @Vagabond

    Fix incorrect timeout and remove flaky counterexample code

    Vagabond authored
    Also, cleanup an unused var.
Commits on Feb 8, 2012
  1. @jonmeredith
Something went wrong with that request. Please try again.