native erlang client on non-Riak node?

Ryan Zezeski rzezeski at
Thu Apr 5 15:30:29 EDT 2012


The native Erlang client was never designed to be used in this fashion, as
you are finding out first hand.  You are correct in that some operations
assume they are running on the Riak VM, e.g. mapred_dynamic_inputs_stream.

Normally I would say not to establish a Erlang dist connection to the Riak
cluster but given you need a work around for the performance issue it seems
to be your only good choice ATM.  You can use `rpc:call` to invoke the
mapred queries.


On Wed, Apr 4, 2012 at 2:40 PM, Michael Radford <mrad at> wrote:

> In case anyone else is wondering, the answer is no, the native client
> isn't fully usable from a non-Riak node.
> I started a hidden node and connected to one of my Riak nodes using
> riak:client_connect. The returned client is able to successfully
> execute Client:get(Bucket, Key) (and probably other simple things like
> put/delete), but it fails on mapred with a {modfun, ...} input.

> The problem is that the native client tries to run the input function
> on the local node, rather than the node the client points to, which of
> course won't work unless the local node is participating in the Riak
> cluster.
> Mike
> On Tue, Apr 3, 2012 at 9:43 AM, Michael Radford <mrad at> wrote:
> > Is it OK to use Riak's native erlang client from an erlang node that's
> > connected to a Riak cluster via normal erlang distribution
> > (net_adm:ping etc.), but isn't participating in the Riak cluster?  I'm
> > wondering if e.g. Riak makes any assumptions about nodes listed in
> > nodes(), or the nodes of processes running client code, that would
> > break if a node isn't running Riak.
> >
> > I'm trying to figure out a fallback strategy in case I can't resolve
> > performance issues I'm seeing with the protocol buffers client (see
> > other thread about slow searches).  The scariest option would be to
> > run my application on the same nodes as Riak, which seems like it
> > would complicate operations too much.  Or if
> > connected-but-not-participating nodes aren't a good idea, maybe my
> > application nodes could each start a slave node with -hidden, which
> > would then connect to Riak and act as a proxy?
> >
> > Mike
> _______________________________________________
> riak-users mailing list
> riak-users at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the riak-users mailing list