Skip to content

Instantly share code, notes, and snippets.

View bsparrow435's full-sized avatar

Brian Sparrow bsparrow435

View GitHub Profile
@bsparrow435
bsparrow435 / get_put_code.md
Last active March 29, 2021 10:33
Get/Put path walk through
@bsparrow435
bsparrow435 / gist:3486140
Created August 27, 2012 06:15
Delete keys map reduce

#Map Reduce Delete Instructions

Set allow_strfun true on all nodes:

echo "rpc:multicall([node() | nodes()], application,set_env,[riak_kv,allow_strfun,true])." | bin/riak attach

Insert 15000 keys:

for i in {1..15000}; do curl -XPUT http://127.0.0.1:9000/buckets/test/keys/test$i -H "content-type: text/plain" -d "Data #$i\n"; done
@bsparrow435
bsparrow435 / gist:3563993
Created September 1, 2012 04:44
Riak MDC cheat sheet

#Riak Multi DC Repl Cheat Sheet


##Types There are two types of multi data center replication in Riak.

  1. Fullsync

    Operation is triggered by connection creation between clusters, running riak-repl start-fullsync on the listener leader, or every fullsync_interval minutes. Relevant app.config settings:

@bsparrow435
bsparrow435 / gist:3493656
Created August 28, 2012 00:12
Clone a cluster

#How To: Clone A Cluster

##Summary This gist will walk through the procedure of altering a secondary cluster using the ring configuration of a primary cluster. This configuration allows partitions to be transferred between clusters using any file transfer utility.

##Restrictions

  1. Supported Riak Versions: 1.2

  2. Both clusters must have same ring size and node count.

@bsparrow435
bsparrow435 / riak_metrics.escript
Last active August 21, 2017 09:06
Escript to query various in-VM metrics on a Riak node not currently available from stats.
-module(riak_metrics).
-compile(export_all).
main([NodeName0, Cookie, Length, Command]) ->
LocalName = 'riak_metrics@127.0.0.1',
NodeName = list_to_atom(NodeName0),
case net_kernel:start([LocalName]) of
{ok, _} ->
erlang:set_cookie(node(), list_to_atom(Cookie)),
case net_kernel:hidden_connect_node(NodeName) of
-module(heap_query).
-compile(export_all).
main([NodeName0, Cookie]) ->
Name = 'heap_query@127.0.0.1',
NodeName = list_to_atom(NodeName0),
case net_kernel:start([Name]) of
{ok, _} ->
erlang:set_cookie(node(), list_to_atom(Cookie)),
case net_kernel:hidden_connect_node(NodeName) of
@bsparrow435
bsparrow435 / gist:7455997
Created November 13, 2013 20:38
OTP erlang has closed
/Users/bsparrow/Riak_git/otp/erts/etc/common/heart.c:
499 }
500 } else if (tlen == 0) {
501: /* Erlang has closed its end */
502: print_error("Erlang has closed.");
503 return R_CLOSED;
504 }
/Users/bsparrow/Riak_git/otp/erts/etc/common/inet_gethost.c:
541 return 1;
-module(repair).
-compile(export_all).
main([Dir]) ->
Opts = [{max_open_files, 2000},
{use_bloomfilter, true},
{write_buffer_size, 45 * 1024 * 1024},
{compression,false}],
{Time,_} = timer:tc(eleveldb,repair,[Dir, Opts]),
@bsparrow435
bsparrow435 / ring.erl
Created July 31, 2013 20:35
This will identify the node/partitions that own a given bucket/key.
Bucket = <<"d">>,
Key = <<"e0c97a4cde6c">>,
BKey = {Bucket,Key},
{ok, Ring} = riak_core_ring_manager:get_my_ring(),
DocIdx = riak_core_util:chash_key(BKey),
BucketProps = riak_core_bucket:get_bucket(Bucket, Ring),
[NValue] = [Y || {X1, Y} <- BucketProps, n_val == X1],
UpNodes = riak_core_node_watcher:nodes(riak_kv),
Preflist2 = riak_core_apl:get_apl_ann(DocIdx, NValue, Ring, UpNodes),
Preflist = [{IndexNode, Type} || {IndexNode, Type} <- Preflist2].