Answering my own question again, but hopefully that saves you time.

So, it appears that if a backend is changed via the JSON REST API, then all keys from the previous backend are now inaccessible. I think this also indicates that now the new backend is in use immediately, without any restarts required.

May I suggest that the wording on the API Reference page is improved? Both I and a colleague misunderstood it to mean that *any* change of backend required a restart.

Cheers,
Toby

On 05/04/13 11:27, Toby Corkindale wrote:
Hi Jared,

I'm afraid I am still a little confused after reading your reply, so I'd
like to check something.

If I understand correctly, the reboot of nodes is only required if the
default settings in app.config are changed, and one can change anything
else on-the-fly?

So therefore, in the following scenario, I could issue these commands
and never need to reboot any nodes?

Riak backend = Multi, with Bitcask (default) and Leveldb.

PUT /buckets/myBucket/myKey
# Key is stored in Bitcask

PUT /buckets/myNewBucket/props
{ backend: Leveldb }

PUT /buckets/myBucket/myOtherKey
# Key is stored in Leveldb backend


If I change the backend, do I lose any keys that were previously
available in the original backend or are they migrated? (I'd expect to
lose them)


Thanks for your patience,
Toby



On 05/04/13 00:51, Jared Morrow wrote:
Toby,

That particular page is talking about changing the default settings of
the backend of a bucket.  In that specific case, if you want to change
the default behavior in your app.config file a restart is necessary.
  One particularly important detail there is you don't need to restart
*all* nodes at the same time.  Restarting one node at a time is
sufficient and recommended so you don't have any cluster downtime.

For setting common bucket properties, you do not need to restart the
node.  If you want to change the n_val of a bucket for instance, you can
just change it from your client on all nodes.  That page explains at the
bottom how to set them on the erlang console or curl, but most people
use their chosen client to set bucket properties before writing values.
   Here is an example using the Java Client
http://docs.basho.com/java/latest/cookbooks/buckets/.  In general it
doesn't matter if your client supports HTTP or protocol buffers, both
API's  support bucket
property changes.

Hope that helps,
Jared

On Wed, Apr 3, 2013 at 10:14 PM, Toby Corkindale
<toby.corkind...@strategicdata.com.au
<mailto:toby.corkind...@strategicdata.com.au>> wrote:

    Hi,
    According to the docs at the following URL, it is necessary to
    reboot all Riak nodes after setting the bucket property for backend.
    This seems really drastic, and we'd like to avoid having to do this!
    See:

http://docs.basho.com/riak/1.__3.0/tutorials/choosing-a-__backend/Multi/

<http://docs.basho.com/riak/1.3.0/tutorials/choosing-a-backend/Multi/>

    I wondered if the restart of the whole cluster can be avoided?
    Perhaps we could set the bucket properties prior to setting any keys
    within it?


_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to