Hello,
Here is the sequence of commands:
--Compiled Riak with "make rel" and riak-erlang-client with “make". Erlang
version R16B02; using the latest version on GitHub or the riak2.0.0.5pre
package.
./bin/riak stop
--changed the consensus flag to true on ./etc/riak.conf
./bin/riak start
.bin//riak-admin bucket-type create bucket '{"props": {"consistent": true}}'
./bin/riak-admin bucket-type activate bucket
./bin/riak stop
./bin/riak start
on a erlang console, initialized with:
./erts-5.10.3/bin/erl -pa ../riak-erlang-client/ebin
../riak-erlang-client/deps/*/ebin
f(Pid), {ok, Pid} = riakc_pb_socket:start_link("localhost", 8087).
NewA = riakc_obj:new(<<"bucket">>, <<"key">>, <<"my binary data">>).
NewB = riakc_obj:new(<<"bucket">>, <<"key">>, <<"my other binary data">>).
riakc_pb_socket:put(Pid, NewA, [return_body]).
{ok,{riakc_obj,<<"bucket">>,<<"key">>,
<<107,206,97,96,96,96,204,96,202,5,82,28,202,156,255,126,
6,245,74,255,202,96,74,...>>,
[{{dict,2,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],...},
{{[],[],[],[],[],[],[],[],[],[],...}}},
<<"my binary data">>}],
undefined,undefined}}
5> riakc_pb_socket:put(Pid, NewB, [return_body]).
{ok,{riakc_obj,<<"bucket">>,<<"key">>,
<<107,206,97,96,96,96,204,96,202,5,82,28,202,156,255,126,
6,245,74,255,202,96,74,...>>,
[{{dict,2,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],...},
{{[],[],[],[],[],[],[],[],[],[],...}}},
<<"my binary data">>},
{{dict,2,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],...},
{{[],[],[],[],[],[],[],[],[],...}}},
<<"my other binary data">>}],
undefined,undefined}}
bin/riak-admin bucket-type status bucket
bucket is active
young_vclock: 20
w: quorum
small_vclock: 50
rw: quorum
r: quorum
pw: 0
precommit: []
pr: 0
postcommit: []
old_vclock: 86400
notfound_ok: true
n_val: 3
linkfun: {modfun,riak_kv_wm_link_walker,mapreduce_linkfun}
last_write_wins: false
dw: quorum
consistent: true
chash_keyfun: {riak_core_util,chash_std_keyfun}
big_vclock: 50
basic_quorum: false
allow_mult: true
active: true
claimant: '[email protected]
bin/riak-admin bucket-type list
bucket (active)
No dia 20/11/2013, às 17:23, Jordan West <[email protected]> escreveu:
> Hi Valter,
>
> Could you provide the code you are using to generate the concurrent requests
> in addition to the output of `riak-admin bucket-type list` and `riak-admin
> bucket-type status <buckettype>` where <buckettype> is the name of the
> strongly consistent bucket you created (from one node should be sufficient)?
> I've been using this feature in a personal project and just tested on a local
> cluster using curl and was unable to reproduce (the cluster was a bit behind
> develop but there have been no recent changes to the feature).
>
> Cheers,
> Jordan
>
>
> On Wed, Nov 20, 2013 at 5:30 AM, Valter Balegas <[email protected]> wrote:
> Hello,
>
> I was able to activate strong consistency, but the node keeps generating
> siblings, when i execute two concurrent writes (Store two objects without
> vector clock).
> I tried with the Riak 2.0.0.5pre package and the latest version on the
> repository. Am i missing anything? i was expecting operations to fail, in
> this case.
>
> It seems that the error was caused by my Erlang version. The creation of the
> bucket type didn’t fail with R16B02.
>
> Valter
>
> No dia 20/11/2013, às 03:13, Jordan West <[email protected]> escreveu:
>
>> Valter,
>>
>> You mentioned you are using a recent develop. Would you be able to pull down
>> any recent changes and update-deps (or build a fresh devrel)? I just tried a
>> fresh clone of develop and was unable to reproduce the same error. I, also,
>> tried with R15B01 (Riak 2.0 is slated to use R16B02 right now).
>>
>> Alternatively, you should be able to workaround this by doing a `riak
>> attach-direct` and defining the atom at the erlang shell:
>>
>> 1> consistent.
>> consistent
>>
>> Jordan
>>
>>
>> On Tue, Nov 19, 2013 at 3:06 PM, Valter Balegas <[email protected]> wrote:
>> I can’t create the bucket type:
>>
>> RPC to '[email protected]' failed: {'EXIT',
>> {badarg,
>> [{erlang,list_to_existing_atom,
>> ["consistent"],
>> []},
>> {riak_kv_wm_utils,erlify_bucket_prop,1,
>> [{file,"src/riak_kv_wm_utils.erl"},
>> {line,393}]},
>> {riak_kv_console,
>> '-bucket_type_create/2-lc$^0/1-0-',1,
>> [{file,"src/riak_kv_console.erl"},
>> {line,483}]},
>> {riak_kv_console,bucket_type_create,2,
>> [{file,"src/riak_kv_console.erl"},
>> {line,483}]},
>> {rpc,'-handle_call_call/6-fun-0-',5,
>> [{file,"rpc.erl"},{line,203}]}]}}
>>
>> I activated the consensus in riak.conf in the etc dir (find command seems
>> not to find the pattern anywhere else).
>> Is there any other way to create the bucket?
>>
>> Valter
>>
>> No dia 19/11/2013, às 18:10, Jordan West <[email protected]> escreveu:
>>
>>> On Tue, Nov 19, 2013 at 7:33 AM, Valter Balegas <[email protected]> wrote:
>>>
>>> Strong consistency:
>>> How does one activate this? As i understand, either the pb or the http
>>> clients do not accept the consistent property.
>>>
>>>
>>> Using strong consistency in the Tech Preview is a two-step process. First,
>>> turn on the feature in your riak.conf (the following command assumes you
>>> are using a devrel):
>>>
>>> for d in dev/dev*; do sed -e 's/## enable_consensus = true/enable_consensus
>>> = true/' -i $d/etc/riak.conf; done
>>>
>>> Then re(start) the cluster.
>>>
>>> With the enable_consensus=true un-commented and the cluster running create
>>> a strongly consistent bucket type:
>>>
>>> riak-admin bucket-type create <type name> '{"props": {"consistent": true}}'
>>> riak-admin bucket-type activate <type name>
>>>
>>> You can create and activate the bucket type without having
>>> enabled_consensus=true but both must be done to work with strongly
>>> consistent data.
>>>
>>> Once that is done you can make requests, just like you would to eventually
>>> consistent data in Riak, but the semantics will be different. For example,
>>> if you make two PUT requests to the same key, w/ no vector clock*, the
>>> second request will fail because the data already exists. More details on
>>> semantics of strongly consistent requests can be found in this PR:
>>> https://github.com/basho/riak_kv/pull/710
>>>
>>> Hope that helps get you started,
>>>
>>> Jordan
>>>
>>> * in strong consistency, the "vector clock" is not really a vector clock.
>>> its called such for familiarity, but like any real vector clock exposed to
>>> the client, should be treated like an opaque context.
>>>
>>> Details about my environment:
>>> -I’m running Mac OSX 10.9
>>> -Erlang R15B01
>>> -Compiling riak “develop” branch, from basho github
>>> -Compiling riak-erlang-client “master” branch, from basho github.
>>> -recompiled the latest versions of the branches just before writing this
>>> email.
>>>
>>>
>>> Thank you for your help,
>>> Valter
>>>
>>>
>>>
>>> _______________________________________________
>>> riak-users mailing list
>>> [email protected]
>>> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>>>
>>
>>
>
>
_______________________________________________
riak-users mailing list
[email protected]
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com