Commits on Nov 26, 2012
  1. @jtuple

    Add -lstd++ to LDFLAGS

    jtuple committed Nov 26, 2012
  2. @jtuple
Commits on Nov 25, 2012
  1. @jtuple
Commits on Nov 16, 2012
  1. @slfritchie

    Merge pull request #70 from basho/slf-dialyzer20121116

    Clear all Dialyzer warnings
    slfritchie committed Nov 16, 2012
  2. @slfritchie

    Remove type inference cruft

    slfritchie committed Nov 16, 2012
  3. @slfritchie

    Minimal changes to get zero Dialyzer warnings

    Nice to see that Dialyzer caught a bug from parallel development,
    adding the is_empty_estimate/1 function, and today's merge of
    the new QuickCheck model.
    slfritchie committed Nov 16, 2012
  4. @slfritchie
  5. @slfritchie
  6. @slfritchie

    Add usage example to comments at top of Run-eunit-loop.expect

    For the record, the versions of QuickCheck & PULSE that I
    was using for this testing:
    * QuickCheck 1.27.2
    * PULSE 1.27.2
    * git://
      commit dff6ea12af94c0320d4a5beabc16a1fa50abf688
      Author: Hans Svensson <>
      Date:   Mon Aug 27 15:42:43 2012 +0200
    slfritchie committed Nov 16, 2012
Commits on Nov 15, 2012
  1. @slfritchie
  2. @slfritchie
  3. @slfritchie
  4. @slfritchie
  5. @slfritchie
Commits on Nov 14, 2012
  1. @slfritchie

    Merge pull request #66 from basho/slf-crc-error-spam

    Fix log spam introduced by branch 'gh62-badrecord-mstate'
    slfritchie committed Nov 13, 2012
  2. @slfritchie
Commits on Nov 13, 2012
  1. @slfritchie

    Add Run-eunit-loop.expect

    The Run-eunit-loop.expect script is a work-around for a number of
    problems that I ran into when using PULSE adn the bitcask_eqc.erl
    test model.  It's a mess and could really use a refactoring, but
    it does what I needed it to....
    Before identifying the cause of SIGSEGV and "Bad tag" aborts,
    I wanted to automatically restart testing if the test failed for
    either reason.  Ditto for deadlock and timeout problems within
    PULSE itself.  The timeout problems have been quite mysterious,
    but as far as I can tell it isn't a problem with the bitcask
    code.  I would run rebar with network distributed enabled, then
    attach to it via "erl -remsh rebar@localhost" and use Redbug to
    watch for calls to bitcask, bitcask_nifs, bitcask_lockops, and
    bitcask_fileops when one of the timeouts happened ... and there
    were zero calls to those functions.
    The most common problem I see, as of this commit, are "Invariant
    broken" errors, e.g.,
         Invariant broken, <0.28726.1> did send at {"c_src/bitcask_nifs.c",1718} when 'handle_info.WorkerPid' is supposed to be the only running process!!
    If I change pulse_send() so that we send messages directly to
    their recipient (instead of the PULSE controller), then I see
    PULSE timeout errors instead of invariant errors.  {shrug}
    Another PULSE problem that I'd see in the past were things
    like this:
        =ERROR REPORT==== 10-Nov-2012::17:43:40 ===
        Unknown command for pulse: loaded
        =ERROR REPORT==== 11-Nov-2012::21:31:43 ===
        Unknown command for pulse: [code_server|{module,pulse_gen_server}]
        =ERROR REPORT==== 4-Nov-2012::21:47:14 ===
        Unknown command for pulse: {11,<<121,48,236,98,2,156,137,137,27,144,44>>}
        Unknown command for pulse: [{root,yield},
    slfritchie committed Nov 13, 2012
  2. @slfritchie

    Clean up bitcask_eqc.erl

    * 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.
    slfritchie committed Nov 13, 2012
  3. @slfritchie
  4. @slfritchie

    Add bitcask:init_keydir_scan_key_files/0 to retry initial keydir scan

    %% If someone launches enough parallel merge operations to
    %% interfere with our attempts to scan this keydir for this many
    %% times, then we are just plain unlucky.  Or QuickCheck smites us
    %% from lofty Mt. Stochastic.
    slfritchie committed Nov 12, 2012
  5. @slfritchie

    Fix very elusive GC-triggered VM crash caused by pulse_send()

    This fix appears to fix a very vexing, elusive VM crash that
    is triggered well after the data-corrupting fact by a major
    GC event.
    After experimenting many different ways with trying to find
    the problem, using valgrind + a specific test case that
    managed to always provoke the problem.  It was quite difficult
    to find a deterministic counter-example -- almost all were
    ones that would succeed most of the time and only fail once
    every 20 or 50 or 200 attempts.
    Fix: use the same env for all parts of the term that we send
         to the PULSE process.
    slfritchie committed Nov 12, 2012
Commits on Nov 12, 2012
  1. @slfritchie
  2. @slfritchie

    Fix old/reintroduced race condition with merge

    An earlier version of this if statement in bitcask_nifs_keydir_put_int()
    included this timestamp check ... and it's certainly necessary, to avoid
    a race with a merge where the merge candidate has a timestamp that's
    older than the current keydir entry.
    slfritchie committed Nov 12, 2012
Commits on Nov 9, 2012
  1. @slfritchie
Commits on Nov 8, 2012
  1. @bsparrow435

    Revert "Revert "Revert "Try again"""

    This reverts commit b5962a4.
    bsparrow435 committed Nov 8, 2012
  2. @bsparrow435

    Revert "Revert "Try again""

    This reverts commit 57b725d.
    bsparrow435 committed Nov 8, 2012
  3. @bsparrow435

    Revert "Try again"

    This reverts commit a5de1f2.
    bsparrow435 committed Nov 8, 2012
  4. @bsparrow435

    Try again

    bsparrow435 committed Nov 8, 2012
  5. @slfritchie

    Merge pull request #58 from joecaswell/jcaswell-crc

    merge process should write CRC to hintfiles
    Passes all EUnit tests and the new QC model, many thanks!
    slfritchie committed Nov 7, 2012
  6. @slfritchie

    Merge pull request #46 from iwamatsu/master

    Support rebar binary in system
    slfritchie committed Nov 7, 2012
Commits on Nov 7, 2012
  1. @slfritchie
  2. @slfritchie

    Add tracking of newest tstamp to bitcask's file info

    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.
    slfritchie committed Nov 7, 2012
  3. @slfritchie
Commits on Nov 6, 2012
  1. @jaredmorrow

    Merge pull request #67 from basho/gh_riak_kv_423-bitcask-stall

    Add bitcask:is_empty_estimate
    jaredmorrow committed Nov 6, 2012
Commits on Nov 5, 2012
  1. @slfritchie