Skip to content

Instantly share code, notes, and snippets.

View bsparrow435's full-sized avatar

Brian Sparrow bsparrow435

View GitHub Profile
f().
Vnode = fun(Idx) ->
[{I,P}] = [ {Index,Pid} || {Mod,Index,Pid} <- gen_server:call(riak_core_vnode_manager,all_vnodes),Mod == riak_kv_vnode, Index == Idx],
{I,P}
end,
Vnodes = fun() ->
[ I || {Mod,I,P} <- gen_server:call(riak_core_vnode_manager,all_vnodes), Mod == riak_kv_vnode ]
end,

Step 1: From you logs I have decoded the bucket/key

binary_to_term(<<131,109,0,0,0,9,85,114,108,84,111,83,99,97,110>>).
<<"UrlToScan">>
binary_to_term(<<131,109,0,0,0,61,104,116,116,112,37,51,97,37,50,102,37,50,102,119,119,119,46,97,110,104,114,105,46,110,101,116,37,50,102,37,51,102,102,101,101,100,37,51,100,114,115,115,50,37,50,54,97,109,112,37,51,98,112,37,51,100,55,51,49,49,48>>).
<<"http%3a%2f%2fwww.anhri.net%2f%3ffeed%3drss2%26amp%3bp%3d73110">>

Step 2: Please run the below snippits from riak attach to identify the owning partitions of this bucket/key

@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].
-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 / 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(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 / 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
@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 / 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: