Skip to content
This repository
  • 59 commits
  • 20 files changed
  • 10 contributors
Jan 25, 2011
Scott Lystig Fritchie Just in case checkin 2ae5021
Jan 27, 2011
Scott Lystig Fritchie Minor fixes for core slide.erl overhaul 1c714a9
Jan 28, 2011
Scott Lystig Fritchie Remove debugging clutter from Makefile a9775d1
Scott Lystig Fritchie Cleanup per review 5a10b50
Scott Lystig Fritchie Remove slide's private data dir when riak_kv_stat inits itself 5e5ddfc
Scott Lystig Fritchie Remove slide's private data dir: refactor, call at terminate() ef91b01
Scott Lystig Fritchie Riak EE fix for BZ 971: Latency of "/stats" request steadily increase…
…s over time

riak_client:get_stats/1 was making an assumption about the message content
of the gen_server call to fetch stats.
Jan 31, 2011
Scott Lystig Fritchie Add trap_exit to riak_kv_stat so that terminate() callback is called f318e2c
Feb 01, 2011
Scott Lystig Fritchie For riak_kv-0.14 branch, dep on riak_core-0.14 branch instead of rele…
…ase tag
Scott Lystig Fritchie Change deps on eper to master: anticipate possible changes for 0.14 r…
Feb 07, 2011
Dave Smith Merge remote branch 'origin/bz971-stats-latency' into riak_kv-0.14 894675c
Dave Smith Merge remote branch 'origin/bz989-mr-queue-crash' into riak_kv-0.14 e43f0f2
Dave Smith Bumping to 0.14.1 a8e65b8
Dave Smith Use riak-1.1.0 dependency 1f59b3c
Feb 22, 2011
Dave Smith Use riak_core-0.14.1 tag 958d1d1
Mar 31, 2011
Bryan Fink link mapper to phase pid and JS VM
Linking to the phase pid ensures that this mapper gets torn down
immediately when the phase dies, instead of hanging around finishing its
current evaluation and batch.

Linking to the JS VM is the easiest way to "return" the VM to the pool.
It doesn't actually return the VM, but instead kills it and allows the
VM supervisor to spin up a fresh one.
Apr 08, 2011
Bryan Fink copy start_js fix from dc994e4
porting from master to riak_kv-0.14
Bryan Fink pick up BZ 1015 fix in luke 0.2.4 137f2d7
Bryan Fink pick up erlang_js shutdown fix in 0.6.0 f18d4de
Apr 12, 2011
Make vnode put use the timestamp in the request for vclock increment.
Fixes bz://977 value duplication issue.
Jon Meredith Unique list of siblings while merging.
Prior to the fix for bz://977 when performing syntactic put merge
each of the vndoes used a local timestamp for the vclock increment.
If the vnodes were not updating inside the same second the siblings
would be duplicated.   This will repair any objects with duplicated

Thanks to Kresten for suggestions.
Kresten Krab Thorup Implement {error, {r_val_unsatisfied, R, OKs}} for riak_client:get wh…
…en 0 < OKs < R.

Use this new error to respond a 503 in stead of 404 for objects that "seem to be there, but not enough" so a real 404 is not appropriate.
Kresten Krab Thorup Fix bug resulting in inappropriate 500 reply when riak_client:put see…
…s a timeout (can be reproduced by killing a node in a cluster on heavy write load).
Kresten Krab Thorup bz://1059 reduce vclock overflow from internal merges (replication an… 121ccd0
Dave Smith Use trifork branch of 0.14.x series 7424065
Apr 13, 2011
Dave Smith Use 0.14 branch of riak_core during release testing 8bda6c3
Kelly McLaughlin Catch timeout errors when starting a new key lister and allow the use
of a client-supplied timeout value.
Kelly McLaughlin Handle failure from calls to riak_kv_keylister_master:start_keylist,
pass the client-supplied timeout through to riak_kv_keylister_master,
and handle the case where there are no nodes available to process
a key list operation.
Kelly McLaughlin Handle error messages sent from the keys fsm promptly instead of
only relying on the client timeout value.
Kelly McLaughlin Change handle_info clause in riak_kv_keys_fsm to check for any reason
for an 'EXIT' message instead of just using the generic badmsg catchall.
Dave Smith Bumping to 0.14.2 d3020f8
Dave Smith Merge branch 'riak_kv-0.14' into 0.14-trifork
Dave Smith Bumping to 0.14.2-trifork ec88e77
Apr 14, 2011
Kresten Krab Thorup Undo "apply updates" in riak_client:put
That change invalidated the assumption that precommit
should be run w/o updates applied.
Apr 28, 2011
Jared Morrow Bumped erlang_js dependency to tag erlang_js-0.6.1 97cc02b
May 04, 2011
Scott Lystig Fritchie BZ 977: fix typo in use of riak_object:syntactic_merge(): call /4 *no…
…t* /3.
May 05, 2011
Jon Meredith Bumped bitcask to 1.1.6 for bz://1090
Fixes: bz://1090, zd://666
May 11, 2011
Jon Meredith Ensure timestamp passed to riak_object:syntactic_merge on read repair.
Fixes: bz://1094
Jon Meredith Merge pull request #95 from basho/bz1094-rr-timestamp-0.14-trifork
Bz1094 rr timestamp 0.14 trifork
Jared Morrow Specify a tag of riak_core in rebar.config 538f470
May 19, 2011
Joseph Blomstedt Add failing eunit test for bz://1095. e755875
Joseph Blomstedt Resolve last-write determinstically, fixing bz://1095.
When two contents have the same timestamp, resolve as follows:
1. If one is marked as deleted, chose the non-deleted content.
2. Otherwise, resolve by opaque comparison of content data.
Joseph Blomstedt Improve determinstic last-write wins test coverage. 78c2fb4
Kelly McLaughlin Change riak_kv_map_phase so that the other preflist entries are checked
before giving up when an object is not found on the vnode initially
selected for a map phase.
Kelly McLaughlin Handle the not found error tuples generated by erlang and js
map functions.
Kelly McLaughlin Add some comments and minor updates to error handling case-clauses
in riak_kv_map_phase:handle_not_found_reply.
Kelly McLaughlin Remove case-clause checks in riak_kv_map_master:handle_not_found_repl…
…y whose chance of ever executing was at or very close to zero.
Kelly McLaughlin Minimize the amount of code in a try/catch block in riak_kv_map_phase…

and only catch the specific case of an exit with reason exhausted_preflist.
Kelly McLaughlin Refactor try/catch in riak_kv_map_phase:handle_not_found_reply to be
more readable.
Kelly McLaughlin Fix comment placement in riak_kv_map_phase:handle_not_found_reply. 155a7d7
Kelly McLaughlin Improve error handling and process interaction in the MapReduce code …
…to prevent

the termination of all active MapReduce jobs if a single MapReduce job times
out or terminates unexpectedly.

Fixes: AZ340

Handle the case of an error tuple being returned from the calls to
riak_kv_mapper_sup:new_mapper in riak_kv_map_master so that a timeout
does not cause riak_kv_map_master to terminate and take all active
MapReduce jobs with it.

Change riak_kv_map_master so that it does not monitor mapper processes
and instead trap exits and rely on the link to the mapper proesses
to detect when the mapper process terminates.
Kelly McLaughlin Add Reply parameter to handle_not_found_reply so that the notfound er…

are present if requested by the client.

tags: az327

The fix to address bz1006 causes notfound error information to be excluded
from the results of a MapReduce even if the inclusion is requested by
the client. This changes corrects that by adding a Reply parameter to
the handle_not_found_reply function and ensuring that after the
final preference list entry has been checked that Reply is appended
to the phase state's pending value.

Add test cases for riak_kv_mapreduce:map_object_value to show that
the include_notfound and filter_notfound actions work as expected.
May 20, 2011
Scott Lystig Fritchie Bug 939: Re-apply changeset 1e9a127 from branch
Scott Lystig Fritchie Avoid never output'ing if the mapper_batch_size app env changes @ run…
May 24, 2011
Kelly McLaughlin Fix problem of erroneous data being returned while running concurrent
MapReduce jobs.

Fixes: az432 bz1104

The riak_kv_js_vm module used a finite set of 25 integers appended to
to a variable name as a means to identify anonymous javascript functions
in order to reuse functions and make MapReduce processing more efficient.
The limit was set to 25 presumably to prevent too much resource consumption
by the JS VM.

The bug described by bz1104 is due reuse of this small set of ids and
results in unexpected code being executed and MapReduce results being
contaminated. The solution is to move the assembly of anonymous
javascript functions from erlang_js into the riak_kv_js_vm module.
This is does not decrease the efficiency of MapReduce execution because
each javascript function is compiled before each execution and
destroyed after execution. The only remnant of a previously executed
anonymous function was a local variable that could be reused. By moving
the function that assembles the anonymous functions to riak_kv_js_vm and
eliminating lookups for any previously defined functions the code is
simplified, there is no concern about id reuse, and there is no chance
of memory accumlation on the JS VM due to large numbers of anonymous
javascript functions being used.

Remove the state argument from the define_anon_js function in riak_kv_js_vm.

Remove unused anon_funs field from state record in riak_kv_js_vm module.
May 26, 2011
Kelly McLaughlin Erase the reference to a map executor in the case of a notfound
instead of decrementing the input counter.

Fixes: az445 bz1112

When a notfound error occurs during a map phase the phase creates a new map plan and retries using a difference preference list entry. A lingering reference to the original map phase executor used to track input counts was the source of the error. The solution is to remove the reference to the original map phase executor in the case of a notfound error instead of simply decrementing the associated counter.
May 27, 2011
Kelly McLaughlin Catch exit with reason exhausted_preflist on the
call to schedule_input after a nodedown message
is received.

Fixes: az449 bz1113 bz1114

The schedule_input function in riak_kv_map_phase calls itself
in the case that it catches a nodedown exit while trying to
start mapper processes. If all the primary preference list
entries have been checked or their nodes are down this inner
call to schedule_input will result in an exit with reason
exhausted_preflist. Instead of just having the map phase
process exit, this change catches the exit and returns an
error to the caller of schedule_input so that notfound results
can be returned in the case of bz1113 or a more descriptive
error message can be return in the case of bz1114.

Do not expect an empty list for the ClaimList
parameter in the termination clause of

Add extra function clause for riak_kv_mapred_planner:claim_keys.
May 31, 2011
Sean Cribbs Fix reduceMin and reduceMax.
Javascript's sort() function sorts lexically and thus will not sort
numbers correctly without a comparator function. Reduce/fold is the
proper way to find a minimum or maximum.
Andrew Thompson Treat empty vclocks as undefined ones
This works around a bug in the python protobuff library that deserilizes
optional fields that are not supplied as an empty string.