Do nodes always need to restart after backend selection?

Toby Corkindale toby.corkindale at strategicdata.com.au
Thu Apr 4 22:42:04 EDT 2013


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.corkindale at strategicdata.com.au
>> <mailto:toby.corkindale at 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?





More information about the riak-users mailing list