Anthony,

You should first get an instance of riak_client after attaching to the
console like so:

{ok, Client} = riak:local_client().

Then you can call Client:set_bucket...

I spent a bit of time struggling with the multi_backend, but basically if
you set the backend name using the REST interface like Sean mentioned, it
will store the bucket name in the properties as a binary. That's why I've
found it best to just always name the backends with binaries if you could be
setting bucket properties through the REST interface.

- Joe Lambert

joseph.g.lamb...@gmail.com


On Mon, Jan 24, 2011 at 3:43 PM, Anthony Molinaro <
antho...@alumni.caltech.edu> wrote:

> Hi Sean,
>
>   Thanks, that seems to work.  Should the wiki be changed?  Currently
> this page
>
> http://wiki.basho.com/Configuration-Files.html
>
> has
>
> multi_backend: list of backends to provide
> Format of each backend specification is {BackendName, BackendModule,
> BackendConfig}, where BackendName is any atom, BackendModule is the name of
> the Erlang module implementing the backend (the same values you would
> provide as "storage_backend" settings), and BackendConfig is
> a parameter that will be passed to the "start/2" function of the backend
> module.
>
> and it sounds like BackendName has to be a binary.
>
> Also, it has
>
> Specify the backend to use for a bucket with
> riak_client:set_bucket(BucketName,[{backend, BackendName}] in Erlang
>
> but I'm a little unclear how you would invoke this call, do you attach
> with riak attach, then run the command there?  Because when I try that
> I get
>
> ** exception error: undefined function riak_client:set_bucket/2
>
> Seems there might be a riak_client:set_bucket/3, so that documentation may
> be out of date as well.
>
> Thanks,
>
> -Anthony
>
> On Sun, Jan 23, 2011 at 02:50:32PM -0500, Sean Cribbs wrote:
> > Anthony,
> >
> > This is something I discovered a while back - define your backend names
> as binaries and you'll be able to set them properly from the REST interface.
> Example:
> >
> > {storage_backend, riak_kv_multi_backend},
> >  {multi_backend_default, <<"bitcask">>},
> >  {multi_backend,
> >     [ {<<"bitcask">>, riak_kv_bitcask_backend,
> >         [{data_root, "/var/lib/riak/bitcask"}]},
> >       {<<"dets">>, riak_kv_dets_backend,
> >         [{riak_kv_dets_backend_root, "/var/lib/riak/dets"}]},
> >       {<<"ets">>, riak_kv_ets_backend, []},
> >       {<<"fs">>, riak_kv_fs_backend,
> >         [{riak_kv_fs_backend_root, "/var/lib/riak/fs"}]},
> >       {<<"cache">>, riak_kv_cache_backend,
> >         [ {riak_kv_cache_backend_memory, 100},
> >           {riak_kv_cache_backend_ttl, 600},
> >           {riak_kv_cache_backend_max_ttl, 3600}
> >         ]},
> >       {<<"my_backend">>, my_backend, []}
> >     ]},
> >
> > Then you can set it like so
> >
> > curl -X PUT -H "content-type: application/json" -d
> '{"props":{"backend":"my_backend"}}' http://127.0.0.1:8098/riak/mybucket
> >
> > Also note that only allow_mult and n_val are supported bucket properties
> from the PB interface (something we'll be fixing soon).
> >
> > Sean Cribbs <s...@basho.com>
> > Developer Advocate
> > Basho Technologies, Inc.
> > http://basho.com/
> >
> > On Jan 23, 2011, at 12:37 PM, Anthony Molinaro wrote:
> >
> > >
> > > Hi,
> > >
> > >  So I wanted to play around with creating a custom backend, and using
> > > the multi backend, but I am having problems getting anything to work.
> > >
> > > Here's what I tried so far
> > >
> > > in app.config
> > >
> > >  {storage_backend, riak_kv_multi_backend},
> > >  {multi_backend_default, bitcask},
> > >  {multi_backend,
> > >     [ {bitcask, riak_kv_bitcask_backend,
> > >         [{data_root, "/var/lib/riak/bitcask"}]},
> > >       {dets, riak_kv_dets_backend,
> > >         [{riak_kv_dets_backend_root, "/var/lib/riak/dets"}]},
> > >       {ets, riak_kv_ets_backend, []},
> > >       {fs, riak_kv_fs_backend,
> > >         [{riak_kv_fs_backend_root, "/var/lib/riak/fs"}]},
> > >       {cache, riak_kv_cache_backend,
> > >         [ {riak_kv_cache_backend_memory, 100},
> > >           {riak_kv_cache_backend_ttl, 600},
> > >           {riak_kv_cache_backend_max_ttl, 3600}
> > >         ]},
> > >       {my_backend, my_backend, []}
> > >     ]},
> > >
> > > Then I restart, open a shell and do the following
> > >
> > > 1> {ok, Pid} = riakc_pb_socket:start_link("127.0.0.1", 8087).
> > > {ok,<0.68.0>}
> > > 2> riakc_pb_socket:set_bucket(Pid, <<"b">>, [{backend, my_backend}]).
> > > ok
> > > 3> riakc_pb_socket:get_bucket(Pid,<<"b">>).
> > > {ok,[{n_val,3},{allow_mult,false}]}
> > >
> > > So I didn't see my backend there, thus tried the REST API
> > >
> > >> curl 'http://127.0.0.1:8098/riak/b' ; echo
> > >
> {"props":{"name":"b","n_val":3,"allow_mult":false,"last_write_wins":false,"precommit":[],"postcommit":[],"chash_keyfun":{"mod":"riak_core_util","fun":"chash_std_keyfun"},"linkfun":{"mod":"riak_kv_wm_link_walker","fun":"mapreduce_linkfun"},"old_vclock":86400,"young_vclock":20,"big_vclock":50,"small_vclock":10,"r":"quorum","w":"quorum","dw":"quorum","rw":"quorum"}}
> > >
> > > It's not there either.  So I try to set it with REST
> > >
> > >> curl -X PUT -H "Content-Type: application/json" -d
> '{"props":{"backend":"my_backend"}}' http://127.0.0.1:8098/riak/b
> > >
> > > Which works, in that now I have
> > >
> > >> curl 'http://127.0.0.1:8098/riak/b' ;
> echo{"props":{"backend":"my_backend","name":"b","n_val":3,"allow_mult":false,"last_write_wins":false,"precommit":[],"postcommit":[],"chash_keyfun":{"mod":"riak_core_util","fun":"chash_std_keyfun"},"linkfun":{"mod":"riak_kv_wm_link_walker","fun":"mapreduce_linkfun"},"old_vclock":86400,"young_vclock":20,"big_vclock":50,"small_vclock":10,"r":"quorum","w":"quorum","dw":"quorum","rw":"quorum"}}
> > >
> > > However, in the shell I still get
> > >
> > > 4> riakc_pb_socket:get_bucket(Pid,<<"b">>).
> > > {ok,[{n_val,3},{allow_mult,false}]}
> > >
> > > Also, if I attempt to put something I get
> > >
> > > 5>  riakc_pb_socket:put(Pid, riakc_obj:new (<<"b">>, <<"c">>,
> <<"d">>)).
> > >
> > > =ERROR REPORT==== 19-Jan-2011::02:21:04 ===
> > > ** Generic server <0.68.0> terminating
> > > ** Last message in was {req_timeout,#Ref<0.0.0.186>}
> > > ** When Server state == {state,"127.0.0.1",8087,false,false,undefined,
> > >                               undefined,
> > >                               {[],[]},
> > >                               1,[],infinity,100}
> > > ** Reason for termination ==
> > > ** disconnected
> > > ** exception exit: disconnected
> > >
> > > =CRASH REPORT==== 19-Jan-2011::02:21:04 ===
> > >  crasher:
> > >    initial call: riakc_pb_socket:init/1
> > >    pid: <0.68.0>
> > >    registered_name: []
> > >    exception exit: disconnected
> > >      in function  gen_server:terminate/6
> > >    ancestors: [<0.65.0>]
> > >    messages: [{tcp,#Port<0.816>,
> > >                       [0|<<10,7,116,105,109,101,111,117,116,16,1>>]}]
> > >    links: [<0.65.0>]
> > >    dictionary: []
> > >    trap_exit: false
> > >    status: running
> > >    heap_size: 987
> > >    stack_size: 24
> > >    reductions: 1541
> > >  neighbours:
> > >    neighbour: [{pid,<0.65.0>},
> > >                  {registered_name,[]},
> > >                  {initial_call,{erlang,apply,2}},
> > >                  {current_function,{gen,do_call,4}},
> > >                  {ancestors,[]},
> > >                  {messages,[{#Ref<0.0.0.185>,{error,timeout}}]},
> > >                  {links,[<0.25.0>,<0.68.0>]},
> > >                  {dictionary,[]},
> > >                  {trap_exit,false},
> > >                  {status,runnable},
> > >                  {heap_size,1597},
> > >                  {stack_size,38},
> > >                  {reductions,17388}]
> > >
> > > And the attached sasl log which has many errors.  So I'm trying to
> figure out
> > > whether the problem is configuration, or a bug or what, and wondering
> if any
> > > one else has gotten a custom backend, or multi backend to work?
> > >
> > > I'm using 0.14 on Centos 5, using the basho RPM.
> > >
> > > Thanks,
> > >
> > > -Anthony
> > >
> > > --
> > >
> ------------------------------------------------------------------------
> > > Anthony Molinaro                           <
> antho...@alumni.caltech.edu>
> > > <sasl-error.log>_______________________________________________
> > > riak-users mailing list
> > > riak-users@lists.basho.com
> > > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
> >
>
> --
> ------------------------------------------------------------------------
> Anthony Molinaro                           <antho...@alumni.caltech.edu>
>
> _______________________________________________
> riak-users mailing list
> riak-users@lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to