Hello, I confirm that it does not work with two machines in the same DC.
I first create the cluster, from a clean installation and then I execute the commands: ./riak-admin bucket-type create STRONG '{"props": {"consistent":true, "n_val":2}}’ ./riak-admin bucket-type activate STRONG if i do not specify the replication factor, it works ok. When i execute: riakc_pb_socket:get(Pid, Bucket, ?KEY,[],?DEFAULT_TIMEOUT), it gives me the exception: escript: exception error: no case clause matching {error,<<"timeout">>} in function worker_sc:reset_crdt/3 (worker_sc.erl, line 89) in call from lists:foldl/3 (lists.erl, line 1248) in call from erl_eval:local_func/5 (erl_eval.erl, line 467) in call from escript:interpret/4 (escript.erl, line 774) in call from escript:start/1 (escript.erl, line 277) in call from init:start_it/1 in call from init:start_em/1 I confirmed that the consensus was activated before starting the nodes. Thank you, Valter No dia 26/11/2013, às 23:59, Jordan West <jw...@basho.com> escreveu: > Hi Valter > > Sorry, I did not see your second message. Could you double check that the > riak.conf changes have been made and the nodes have been restarted? I think a > timeout error is what's returned when consensus is not enabled (I'm on my > phone so I'm unable to try right now). I've done it a few times when > rebuilding my cluster after pulling new changes. > > If you find consensus is enabled, let us know and we can dig more. > > Cheers, > Jordan > > Sent from my iPhone > > On Nov 26, 2013, at 3:24 PM, Valter Balegas <bale...@gmail.com> wrote: > >> I've sent a second message stating that the same happens locally if I set >> the attributes described in the bucket type. >> >> Thanks, >> Valter >> >> Em 26/11/2013 18:16, "Jordan West" <jw...@basho.com> escreveu: >> Valter, >> >> A Riak cluster, using strongly consistent operations or otherwise, is not >> meant to be setup with nodes across data centers/AWS regions/etc. Riak >> Enterprise [1] is meant to be used with multiple Riak clusters to replicate >> over a WAN. Unfortunately, it does not yet support strong consistency, and I >> don't have many more details I can share at this time. >> >> Jordan >> >> [1] http://docs.basho.com/riakee/latest/ >> >> >> On Tue, Nov 26, 2013 at 4:25 AM, Valter Balegas <bale...@gmail.com> wrote: >> It also gives me the time-out, when i run one node locally, if i create the >> bucket type like this: >> >> ./riak-admin bucket-type create STRONG '{"props": {"consistent":true, >> "n_val":1, "last_write_wins":true}}’ >> >> Valter >> >> >> No dia 26/11/2013, às 02:20, Mark Phillips <m...@basho.com> escreveu: >> >>> Hi Valter, >>> >>> >>> On Mon, Nov 25, 2013 at 4:47 PM, Valter Balegas <bale...@gmail.com> wrote: >>> Hello, >>> >>> I’m trying to use strong consistency in a riak cluster with nodes in a >>> wide-area network, but a timeout fires sometimes, regardless the timeout >>> value. >>> >>> How many nodes do you have? And where are they located geographically? >>> >>> >>> I tried to increase the timeout of the get operation but it does not seem >>> to help. Is there any parameter that i can change to increase the timeout? >>> The latency between the nodes is the order of hundreds of milliseconds, >>> and, since in the eventual-consistency setting this does not happen (even >>> with a bigger read quorum), i’m assuming it has to do with Strong >>> consistency parametrization. >>> I’m using the most recent erlang client and riak versions and the client >>> runs in the same machine as the node i connect to. >>> >>> {ok, Pid} = riakc_pb_socket:start_link(“NODELINK", 8087). >>> {ok,<0.35.0>} >>> 2> >>> 2> riakc_pb_socket:get(Pid, {<<"STRONG">>,<<"ITEMS">>}, <<"KEY">>, [],5000). >>> {error,<<"timeout">>} >>> 3>riakc_pb_socket:get(Pid, {<<"STRONG">>,<<"ITEMS">>}, <<"KEY">>, [],5000). >>> >>> {ok,{riakc_obj,{<<"STRONG">>,<<"ITEMS">>}, >>> <<"KEY">>, >>> <<107,206,97,96,96,96,204,96,74,97,96,73,45,78,45,204,96, >>> 202,99,99,96,1,10,...>>, >>> [{{dict,2,16,16,8,80,48, >>> {[],[],[],[],[],[],[],[],[],[],[],[],...}, >>> {{[],[],[],[],[],[],[],[],[],[],...}}}, >>> <<"100">>}], >>> undefined,undefined}} >>> 4> riakc_pb_socket:get(Pid, {<<"STRONG">>,<<"ITEMS">>}, <<"KEY">>, >>> [],5000000). >>> {error,<<"timeout">>} >>> 5> riakc_pb_socket:get(Pid, {<<"STRONG">>,<<"ITEMS">>}, <<"KEY">>, [],5000). >>> >>> =ERROR REPORT==== 26-Nov-2013::00:34:38 === >>> ** Generic server <0.35.0> terminating >>> ** Last message in was {req_timeout,#Ref<0.0.0.113>} >>> ** When Server state == {state,”NODELINK", >>> 8087,false,false,undefined,gen_tcp,undefined, >>> {[],[]}, >>> 1,[],infinity,undefined,undefined,undefined, >>> undefined,100} >>> ** Reason for termination == >>> ** disconnected >>> ** exception exit: disconnected >>> >>> Thanks, >>> Valter >>> >>> >>> >>> No dia 21/11/2013, às 11:40, Valter Balegas <bale...@gmail.com> escreveu: >>> >>>> Thanks, it works now! >>>> i wouldn’t realize that bucket type had to be specified as a type. But i >>>> did say that i didn’t now what that meant. :) >>>> >>>> I hope i can do all my experiments now, >>>> Valter >>>> >>>> No dia 20/11/2013, às 21:04, Valter Balegas <bale...@gmail.com> escreveu: >>>> >>>>> 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: 'riak@127.0.0.1 >>>>> >>>>> bin/riak-admin bucket-type list >>>>> bucket (active) >>>>> >>>>> >>>>> >>>>> No dia 20/11/2013, às 17:23, Jordan West <jw...@basho.com> 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 <bale...@gmail.com> >>>>>> 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 <jw...@basho.com> 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 <bale...@gmail.com> >>>>>>> wrote: >>>>>>> I can’t create the bucket type: >>>>>>> >>>>>>> RPC to 'riak@127.0.0.1' 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 <jw...@basho.com> escreveu: >>>>>>> >>>>>>>> On Tue, Nov 19, 2013 at 7:33 AM, Valter Balegas <bale...@gmail.com> >>>>>>>> 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 >>>>>>>> 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 >> >> >> _______________________________________________ >> 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