Hi John, We are working on suggestion what you guys provided, we will send our report shortly
Best Dao On Fri, Feb 10, 2017 at 11:26 AM, John Daily <jda...@basho.com> wrote: > I would like to see the results of experimenting with pr and pw as per my > earlier message in case there is a genuine bug lurking somewhere, but yes, > running inside a single network will make Riak much happier. > > -John > > On Feb 9, 2017, at 9:01 PM, Nguyễn Văn Nghĩa Em <nghi...@gmail.com> wrote: > > Hi All, > > These nodes are not in Local Area Network because our host provider > doesn't have a local IP. It is only our DEV environments. If there are > problems with cluster I will setup a local environment to try. > > Do you think that it is the reason of our issues ? > > Best Regards, > > > 2017-02-10 3:21 GMT+07:00 DeadZen <dead...@deadzen.com>: > >> Why are they public? >> >> On Thu, Feb 9, 2017 at 3:11 PM, Alexander Sicular <sicul...@gmail.com> >> wrote: >> > Speaking of timings: >> > >> > ring_members : ['riak-node1@64.137.190.244','riak-node2@64.137.247.82', >> > 'riak-node3@64.137.162.64','riak-node4@64.137.161.229', >> > 'riak-node5@64.137.217.73'] >> > >> > Are these nodes in the same local area network? >> > >> > On Thu, Feb 9, 2017 at 12:49 PM, my hue <tranmyhue.grac...@gmail.com> >> wrote: >> >> Dear Russel, >> >> >> >> I did the simplest possible with new document and use modify_type to >> update >> >> a single register. >> >> I still meet fail update at some times. >> >> >> >> My steps did as follow : >> >> >> >> Step 1: Initial a new document Map >> >> Step 2: Create new map with : riakc_pb_socket:update_type(Pid, >> >> {BucketType, Bucket}, Key, riakc_map:to_op(Map), []). >> >> Step 3: Fetch to check result : >> >> riakc_pb_socket:fetch_type(Pid,{BucketType,Bucket}, Key). >> >> Step 4: Create Fun for input of modify_type which update only one >> field of >> >> map >> >> >> >> Fun1 = fun(OldMap) -> riakc_map:update({<<"status_id">>, register}, >> fun(R) >> >> -> riakc_register:set(<<"show">>, R) end, OldMap) end. >> >> >> >> Fun2 = fun(OldMap) -> riakc_map:update({<<"status_id">>, register}, >> fun(R) >> >> -> riakc_register:set(<<"hide">>, R) end, OldMap) end. >> >> >> >> Step 5: Update : >> >> >> >> riakc_pb_socket:modify_type(Pid, Fun1, {BucketType, Bucket}, Key, []). >> >> >> >> Fetch to check : >> >> >> >> riakc_pb_socket:fetch_type(Pid,{BucketType,Bucket}, Key). >> >> >> >> Step 6: Update: >> >> >> >> riakc_pb_socket:modify_type(Pid, Fun2, {BucketType, Bucket}, Key, []). >> >> >> >> Fetch to check : >> >> >> >> riakc_pb_socket:fetch_type(Pid,{BucketType,Bucket}, Key). >> >> >> >> >> >> For my debug and test, I repeated step 5 and step 6 on one document >> about >> >> 20 times. >> >> And via many documents, I meet weird behaviour that some documents >> meet fail >> >> update, and some documents never fail update. >> >> The first time, I think that cause network, or timeout between nodes >> and >> >> this is only random of fail. So I deleted documents with command: >> >> >> >> riakc_pb_socket:delete(Pid, {BucketType,Bucket}, Key, []). >> >> >> >> Then retest on each document of first test again. And It is very >> amazing >> >> that the documents meet fail at first test still meet fail at this >> second >> >> test, and the documents passed at first test still pass at this second >> test. >> >> Delete all again, and retest and of course get the same result. >> >> >> >> After all I make other test case, I used one fail document at all test >> >> times, and keep all fields except change key to get different >> documents for >> >> the debug. And very surprise that I still got some fail and some >> success, >> >> although documents are the same field and value except key. Delete >> and >> >> retest and still the same result. Documents succeeded will be always >> >> succeed. And document meet fail will be always failed. I totally do >> not >> >> understand root cause till now. And hope that can get support and help >> from >> >> the developers of riak. I can tell that my system mostly fail with >> cluster >> >> run when faced this issue. >> >> >> >> The following is some map documents I used on the test. And I also >> attached >> >> the extracted log of each node at one of the fail times together with >> this >> >> email. I do not really get meaning of riak log but hope that can help >> >> developers of riak get something. >> >> >> >> >> >> >> >> * New Document which meet fail with my steps. >> >> >> >> {map,[], >> >> [{{<<"account_id">>,register}, >> >> {register,<<>>,<<"accountqweraccountqweraccountqwer">>}}, >> >> {{<<"created_by_id">>,register}, >> >> {register,<<>>,<<"accountqweraccountqweraccountqwer">>}}, >> >> {{<<"created_time_dt">>,register}, >> >> {register,<<>>,<<"2017-02-7T23:49:04Z">>}}, >> >> {{<<"currency">>,register}, {register,<<>>,<<"usd">>}}, >> >> >> >> {{<<"id">>,register},{register,<<>>,<<"menu12345678123456781 >> 23456789">>}}, >> >> {{<<"maintain_mode_b">>,register}, {register,<<>>,<<"false">>}}, >> >> {{<<"menu_category_revision_id">>,register}, >> >> {register,<<>>,<<"0-634736bc14e0bd3ed7e3fe0f1ee64443">>}}, >> >> {{<<"name">>,register},{register,<<>>,<<"menutest">>}}, >> >> {{<<"order_id">>,register},{register,<<>>,<<"0">>}}, >> >> {{<<"rest_location_p">>,register}, >> >> {register,<<>>,<<"10.844117421366443,106.63982392275398">>}}, >> >> {{<<"restaurant_id">>,register}, >> >> {register,<<>>,<<"rest848e042b3a0488640981c8a6dc4a8281">>}}, >> >> {{<<"restaurant_status_id">>,register}, >> {register,<<>>,<<"active">>}}, >> >> {{<<"start_time">>,register},{register,<<>>,<<"dont_use">>}}, >> >> {{<<"status_id">>,register},{register,<<>>,<<"show">>}}, >> >> {{<<"updated_by_id">>,register}, >> >> {register,<<>>,<<"accountqweraccountqweraccountqwer">>}}, >> >> {{<<"updated_time_dt">>,register}, >> >> {register,<<>>,<<"2017-02-7T23:49:04Z">>}}], >> >> [],undefined}. >> >> >> >> Key = <<"menu1234567812345678123456789">> >> >> >> >> * New Document which always success with my steps: >> >> >> >> {map,[], >> >> [{{<<"account_id">>,register}, >> >> {register,<<>>,<<"accountqweraccountqweraccountqwer">>}}, >> >> {{<<"created_by_id">>,register}, >> >> {register,<<>>,<<"accountqweraccountqweraccountqwer">>}}, >> >> {{<<"created_time_dt">>,register}, >> >> {register,<<>>,<<"2017-02-7T23:49:04Z">>}}, >> >> {{<<"currency">>,register},{register,<<>>,<<"usd">>}}, >> >> >> >> {{<<"id">>,register},{register,<<>>,<<"menub497380c19be4fd3a >> 3b51c85d4e9f246">>}}, >> >> {{<<"maintain_mode_b">>,register}, {register,<<>>,<<"false">>}}, >> >> {{<<"menu_category_revision_id">>,register}, >> >> {register,<<>>,<<"0-634736bc14e0bd3ed7e3fe0f1ee64443">>}}, >> >> {{<<"name">>,register},{register,<<>>,<<"menutest">>}}, >> >> {{<<"order_id">>,register},{register,<<>>,<<"0">>}}, >> >> {{<<"rest_location_p">>,register}, >> >> {register,<<>>,<<"10.844117421366443,106.63982392275398">>}}, >> >> {{<<"restaurant_id">>,register}, >> >> {register,<<>>,<<"rest848e042b3a0488640981c8a6dc4a8281">>}}, >> >> {{<<"restaurant_status_id">>,register}, >> {register,<<>>,<<"active">>}}, >> >> {{<<"start_time">>,register},{register,<<>>,<<"dont_use">>}}, >> >> {{<<"status_id">>,register},{register,<<>>,<<"show">>}}, >> >> {{<<"updated_by_id">>,register}, >> >> {register,<<>>,<<"accountqweraccountqweraccountqwer">>}}, >> >> {{<<"updated_time_dt">>,register}, >> >> {register,<<>>,<<"2017-02-7T23:49:04Z">>}}], >> >> [], undefined}. >> >> >> >> Key = <<"menub497380c19be4fd3a3b51c85d4e9f246">> >> >> >> >> * New Document which fail with my steps >> >> >> >> {map,[], >> >> [{{<<"account_id">>,register}, >> >> {register,<<>>,<<"accountqweraccountqweraccountqwer">>}}, >> >> {{<<"created_by_id">>,register}, >> >> {register,<<>>,<<"accountqweraccountqweraccountqwer">>}}, >> >> {{<<"created_time_dt">>,register}, >> >> {register,<<>>,<<"2017-02-7T23:49:04Z">>}}, >> >> {{<<"currency">>,register},{register,<<>>,<<"usd">>}}, >> >> >> >> {{<<"id">>,register},{register,<<>>,<<"menufe89488afa948875c >> ab6b0b18d579f22">>}}, >> >> {{<<"maintain_mode_b">>,register}, >> {register,<<>>,<<"false">>}}, >> >> {{<<"menu_category_revision_id">>,register}, >> >> {register,<<>>,<<"0-634736bc14e0bd3ed7e3fe0f1ee64443">>}}, >> >> {{<<"name">>,register},{register,<<>>,<<"menutest">>}}, >> >> {{<<"order_id">>,register},{register,<<>>,<<"0">>}}, >> >> {{<<"rest_location_p">>,register}, >> >> {register,<<>>,<<"10.844117421366443,106.63982392275398">>}}, >> >> {{<<"restaurant_id">>,register}, >> >> {register,<<>>,<<"rest848e042b3a0488640981c8a6dc4a8281">>}}, >> >> {{<<"restaurant_status_id">>,register}, >> {register,<<>>,<<"active">>}}, >> >> {{<<"start_time">>,register},{register,<<>>,<<"dont_use">>}}, >> >> {{<<"status_id">>,register},{register,<<>>,<<"show">>}}, >> >> {{<<"updated_by_id">>,register}, >> >> {register,<<>>,<<"accountqweraccountqweraccountqwer">>}}, >> >> {{<<"updated_time_dt">>,register}, >> >> {register,<<>>,<<"2017-02-7T23:49:04Z">>}}], >> >> [],undefined}. >> >> >> >> Key = <<"menufe89488afa948875cab6b0b18d579f22">>. >> >> >> >> Note : All documents mostly the same except key, and tested with the >> same >> >> bucket type and bucket. Bucket Type and Bucket have properties with >> which >> >> I reported on first email. So for remind, under is a description of >> bucket >> >> type, bucket and cluster : >> >> >> >> * Bucket Type : >> >> >> >> - Bucket type created with the following command: >> >> >> >> riak-admin bucket-type create bucket_type_name >> >> '{"props":{"backend":"bitcask_mult","datatype":"map"}}' >> >> >> >> riak-admin bucket-type activate bucket_type_name >> >> >> >> >> >> * Bucket Property: >> >> >> >> {"props":{"name":"bucket_name","active":true,"allow_mult":tr >> ue,"backend":"bitcask_mult","basic_quorum":false,"big_vcloc >> k":50,"chash_keyfun":{"mod":"riak_core_util","fun":"chash_ >> std_keyfun"},"claimant":"riak-node1@64.137.190.244","datatyp >> e":"map","dvv_enabled":true,"dw":"quorum","last_write_wins" >> :false,"linkfun":{"mod":"riak_kv_wm_link_walker","fun":" >> mapreduce_linkfun"},"n_val":3,"name":"bucket_name","notfound >> _ok":true,"old_vclock":86400,"postcommit":[],"pr":0," >> precommit":[],"pw":0,"r":"quorum","rw":"quorum","search_inde >> x":"menu_idx","small_vclock":50,"w":"quorum","young_vclock":20}} >> >> >> >> Note : >> >> + "datatype":"map" >> >> + "last_write_wins": false >> >> + "dvv_enabled": true >> >> + "allow_mult": true >> >> >> >> >> >> * Cluster Infor : >> >> >> >> - Member status : >> >> >> >>>> riak-admin member-status >> >> >> >> ================================= Membership >> >> ================================== >> >> Status Ring Pending Node >> >> ------------------------------------------------------------ >> ------------------- >> >> valid 18.8% -- 'riak-node1@64.137.190.244' >> >> valid 18.8% -- 'riak-node2@64.137.247.82' >> >> valid 18.8% -- 'riak-node3@64.137.162.64' >> >> valid 25.0% -- 'riak-node4@64.137.161.229' >> >> valid 18.8% -- 'riak-node5@64.137.217.73' >> >> ------------------------------------------------------------ >> ------------------- >> >> Valid:5 / Leaving:0 / Exiting:0 / Joining:0 / Down:0 >> >> >> >> ------------------------------------------------------------ >> ----------------------------------------------------------------- >> >> >> >> - Ring >> >> >> >>>> riak-admin status | grep ring >> >> >> >> ring_creation_size : 64 >> >> ring_members : ['riak-node1@64.137.190.244','riak-node2@64.137.247.82 >> ', >> >> 'riak-node3@64.137.162.64','riak-node4@64.137.161.229', >> >> 'riak-node5@64.137.217.73'] >> >> ring_num_partitions : 64 >> >> ring_ownership : <<"[{'riak-node2@64.137.247.82',12},\n >> >> {'riak-node5@64.137.217.73',12},\n {'riak-node1@64.137.190.244',12},\n >> >> {'riak-node3@64.137.162.64',12},\n {'riak-node4@64.137.161.229',1 >> 6}]">> >> >> rings_reconciled : 0 >> >> rings_reconciled_total : 31 >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> On Tue, Feb 7, 2017 at 5:37 PM, Russell Brown <russell.br...@mac.com> >> wrote: >> >>> >> >>> >> >>> On 7 Feb 2017, at 10:27, my hue <tranmyhue.grac...@gmail.com> wrote: >> >>> >> >>> > Dear Russell, >> >>> > >> >>> > Yes, I updated all registers in one go. >> >>> > And I do not try yet with updating a single register at a time. >> >>> > let me try to see. But I wonder that any affect on solving >> conflict at >> >>> > riak cluster >> >>> > if update all in one go? >> >>> > >> >>> >> >>> Just trying to make the search space as small as possible. I don’t >> think >> >>> _any_ of this should fail. The maps code is very well tested and well >> used, >> >>> so it’s all kind of odd. >> >>> >> >>> Without hands on it’s hard to debug, and email back and forth is >> slow, so >> >>> if you try the simplest possible thing and that still fails, it helps. >> >>> >> >>> IMO the simplest possible thing is to start with a new, empty key and >> use >> >>> modify_type to update a single register. >> >>> >> >>> Many thanks >> >>> >> >>> Russell >> >>> >> >>> > >> >>> > >> >>> > On Tue, Feb 7, 2017 at 5:18 PM, Russell Brown < >> russell.br...@mac.com> >> >>> > wrote: >> >>> > So in you’re updating all those registers in one go? Out of >> interest, >> >>> > what happens if you update a single register at a time? >> >>> > >> >>> > On 7 Feb 2017, at 10:02, my hue <tranmyhue.grac...@gmail.com> >> wrote: >> >>> > >> >>> > > Dear Russel, >> >>> > > >> >>> > > > Can you run riakc_map:to_op(Map). and show me the output of >> that, >> >>> > > > please? >> >>> > > >> >>> > > The following is output of riakc_map:to_op(Map) : >> >>> > > >> >>> > > {map, {update, [{update, >> >>> > > {<<"updated_time_dt">>,register},{assign,<<"2017-02-06T17: >> 22:39Z">>}}, >> >>> > > {update,{<<"updated_by_id">>,register}, >> >>> > > {assign,<<"accounta25a424b8484181e8ba1bec25bf7c491">>}},{ >> update,{<<"status_id">>,register},{assign,<<"show">>}} >> ,{update,{<<"start_time">>,register},{assign,<<"dont_use" >> >>}},{update,{<<"restaurant_status_id">>,register}, >> >>> > > {assign,<<"inactive">>}}, {update,{<<"restaurant_id">>,register}, >> >>> > > {assign,<<"rest848e042b3a0488640981c8a6dc4a8281">>}},{ >> update,{<<"rest_location_p">>,register}, >> >>> > > {assign,<<"10.844117421366443,106.63982392275398">>}}, >> >>> > > {update,{<<"order_i">>,register},{assign,<<"0">>}}, >> >>> > > {update,{<<"name">>,register},{assign,<<"fullmenu">>}}, >> >>> > > {update,{<<"menu_category_revision_id">>,register}, >> >>> > > {assign,<<"0-634736bc14e0bd3ed7e3fe0f1ee64443">>}}, >> >>> > > {update,{<<"maintain_mode_b">>,register},{assign,<<"false">>}}, >> >>> > > {update,{<<"id">>,register}, >> >>> > > {assign,<<"menufe89488afa948875cab6b0b18d579f21">>}}, >> >>> > > {update,{<<"end_time">>,register},{assign,<<"dont_use">>}},{ >> update,{<<"currency">>,register},{assign,<<"cad">>}}, >> >>> > > {update,{<<"created_time_dt">>,register}, >> >>> > > {assign,<<"2017-01-27T03:34:04Z">>}}, >> >>> > > {update,{<<"created_by_id">>,register}, >> >>> > > {assign,<<"accounta25a424b8484181e8ba1bec25bf7c491">>}}, >> >>> > > {update,{<<"account_id">>,register}, >> >>> > > {assign,<<"accounta25a424b8484181e8ba1bec25bf7c491">>}}]}, >> >>> > > <<131,108,0,0,0,3,104,2,109,0,0,0,12,39,21,84,209,219,42,57, >> 233,0,0,156,252,97,34,104,2,109,0,0,0,12,132,107,248,226,103 >> ,5,182,208,0,0,118,2,97,39,104,2,109,0,0,0,12,137,252,139, >> 186,176,202,25,96,0,0,195,164,97,53,106>>} >> >>> > > >> >>> > > >> >>> > > >> >>> > > >> >>> > > On Tue, Feb 7, 2017 at 4:36 PM, Russell Brown < >> russell.br...@mac.com> >> >>> > > wrote: >> >>> > > >> >>> > > On 7 Feb 2017, at 09:34, my hue <tranmyhue.grac...@gmail.com> >> wrote: >> >>> > > >> >>> > > > Dear Russell, >> >>> > > > >> >>> > > > >What operation are you performing? What is the update you >> perform? >> >>> > > > > Do you set a register value, add a register, remove a >> register? >> >>> > > > >> >>> > > > I used riakc_map:update to update value with map. I do the >> following >> >>> > > > steps : >> >>> > > > >> >>> > > > - Get FetchData map with fetch_type >> >>> > > > - Extract key, value, context from FetchData >> >>> > > > - Obtain UpdateData with: >> >>> > > > >> >>> > > > + Init map with context >> >>> > > >> >>> > > I don’t understand this step >> >>> > > >> >>> > > > + Use : >> >>> > > > >> >>> > > > riakc_map:update({K, register}, fun(R) -> >> riakc_register:set(V, >> >>> > > > R) end, InitMap) >> >>> > > > >> >>> > > > to obtain UpdateData >> >>> > > > >> >>> > > > Note: >> >>> > > > K : key >> >>> > > > V: value >> >>> > > > >> >>> > > > - Then update UpdateData with update_type >> >>> > > > >> >>> > > >> >>> > > Can you run riakc_map:to_op(Map). and show me the output of that, >> >>> > > please? >> >>> > > >> >>> > > > The following is sample about Update data : >> >>> > > > >> >>> > > > {map, [] , >> >>> > > > >> >>> > > > [{{<<"account_id">>,register},{register,<<>>,<<"accounta25a4 >> 24b8484181e8ba1bec25bf7c491">>}},{{<<"created_by_id">>, >> register},{register,<<>>,<<"accounta25a424b8484181e8ba1bec25 >> bf7c491">>}},{{<<"created_time_dt">>,register},{register,<<> >> >,<<"2017-01-27T03:34:04Z">>}},{{<<"currency">>,register},{r >> egister,<<>>,<<"cad">>}},{{<<"end_time">>,register},{registe >> r,<<>>,<<"dont_use">>}},{{<<"id">>,register},{register,<<>> >> ,<<"menufe89488afa948875cab6b0b18d579f21">>}},{{<<"maintain_ >> mode_b">>,register},{register,<<>>,<<"false">>}},{{<<"menu_c >> ategory_revision_id">>,register},{register,<<>>,<<"0-634736b >> c14e0bd3ed7e3fe0f1ee64443">>}},{{<<"name">>,register},{ >> register,<<>>,<<"fullmenu">>}},{{<<"order_i">>,register},{re >> gister,<<>>,<<"0">>}},{{<<"rest_location_p">>,register},{reg >> ister,<<>>,<<"10.844117421366443,106.63982392275398">>}},{{< >> <"restaurant_id">>,register},{register,<<>>,<<"rest848e042b3 >> a0488640981c8a6dc4a8281">>}},{{<<"restaurant_status_id">>, >> register},{register,<<>>,<<"inactive">>}},{{<<"start_time" >> >>,register},{register,<<>>,<<"dont_use">>}},{{<<"status_id" >> >>,register},{register,<<>>,<<"show">>}},{{<<"updated_by_id" >> >>,register},{register,<<>>,<<"accounta25a424b8484181e8ba1be >> c25bf7c491">>}},{{<<"updated_time_dt">>,register},{register, >> <<>>,<<"2017-02-06T17:22:39Z">>}}], >> >>> > > > [] , >> >>> > > > <<131,108,0,0,0,3,104,2,109,0,0,0,12,39,21,84,209,219,42,57, >> 233,0,0,156,252,97,34,104,2,109,0,0,0,12,132,107,248,226,103 >> ,5,182,208,0,0,118,2,97,39,104,2,109,0,0,0,12,137,252,139, >> 186,176,202,25,96,0,0,195,164,97,53,106>> >> >>> > > > } >> >>> > > > >> >>> > > > >> >>> > > > On Tue, Feb 7, 2017 at 3:43 PM, Russell Brown >> >>> > > > <russell.br...@mac.com> wrote: >> >>> > > > >> >>> > > > On 7 Feb 2017, at 08:17, my hue <tranmyhue.grac...@gmail.com> >> wrote: >> >>> > > > >> >>> > > > > Dear John and Russell Brown, >> >>> > > > > >> >>> > > > > * How fast is your turnaround time between an update and a >> fetch? >> >>> > > > > >> >>> > > > > The turnaround time between an update and a fetch about 1 >> second. >> >>> > > > > During my team and I debug, we adjusted haproxy with the >> scenario >> >>> > > > > as follow: >> >>> > > > > >> >>> > > > > Scenario 1 : round robin via 5 nodes of cluster >> >>> > > > > >> >>> > > > > We meet issue at scenario 1 and we are afraid of that timeout >> can >> >>> > > > > be occurs between nodes, >> >>> > > > > make us still get stale data. Then we performed scenario 2 >> >>> > > > > >> >>> > > > > Scenario 2: Disable round robin and only route request to >> node 1. >> >>> > > > > Cluster still is 5 nodes. >> >>> > > > > With this case we ensure that request update and fetch always >> come >> >>> > > > > to and from node 1. >> >>> > > > > And the issue still occurs. >> >>> > > > > >> >>> > > > > At the fail time, I hoped that can get any error log from riak >> >>> > > > > nodes to give me any information. >> >>> > > > > But riak log show to me nothing and everything is ok. >> >>> > > > > >> >>> > > > > * What operation are you performing? >> >>> > > > > >> >>> > > > > I used : >> >>> > > > > >> >>> > > > > riakc_pb_socket:update_type(Pid, {Bucket-Type, Bucket}, Key, >> >>> > > > > riakc_map:to_op(Map), []). >> >>> > > > > riakc_pb_socket:fetch_type(Pid, {BucketType, Bucket}, Key, >> []). >> >>> > > > >> >>> > > > What operation are you performing? What is the update you >> perform? >> >>> > > > Do you set a register value, add a register, remove a register? >> >>> > > > > >> >>> > > > > * It looks like the map is a single level map of >> last-write-wins >> >>> > > > > registers. Is there a chance that the time on the node >> handling the update >> >>> > > > > is behind the value in the lww-register? >> >>> > > > > >> >>> > > > > => I am not sure about logic show conflict of internal riak >> node. >> >>> > > > > And the issue never happens if I used single node. >> >>> > > > > My bucket properties as follow : >> >>> > > > > >> >>> > > > > >> >>> > > > > {"props":{"name":"menu","active":true,"allow_mult":true," >> backend":"bitcask_mult","basic_quorum":false,"big_vcloc >> k":50,"chash_keyfun":{"mod":"riak_core_util","fun":"chash_ >> std_keyfun"},"claimant":"riak-node1@64.137.190.244","datatyp >> e":"map","dvv_enabled":true,"dw":"quorum","last_write_wins" >> :false,"linkfun":{"mod":"riak_kv_wm_link_walker","fun":" >> mapreduce_linkfun"},"n_val":3,"name":"menu","notfound_ok": >> true,"old_vclock":86400,"postcommit":[],"pr":0," >> precommit":[],"pw":0,"r":"quorum","rw":"quorum","search_inde >> x":"menu_idx","small_vclock":50,"w":"quorum","young_vclock":20}} >> >>> > > > > >> >>> > > > > Note : >> >>> > > > > + "datatype":"map" >> >>> > > > > + "last_write_wins": false >> >>> > > > > + "dvv_enabled": true >> >>> > > > > + "allow_mult": true >> >>> > > > > >> >>> > > > > >> >>> > > > > * Have you tried using the `modify_type` operation in >> >>> > > > > riakc_pb_socket which does the fetch/update operation in >> sequence for you? >> >>> > > > > >> >>> > > > > => I dot not use yet, but my action is sequence with fetch and >> >>> > > > > then update. Might be I will try modify_type to see. >> >>> > > > > >> >>> > > > > * Anything in the error logs on any of the nodes? >> >>> > > > > >> >>> > > > > => From the node log, no errror report at fail time. >> >>> > > > > >> >>> > > > > * Is the opaque context identical from the fetch and then >> later >> >>> > > > > after the update? >> >>> > > > > >> >>> > > > > => There is the context got from fetch and that context used >> with >> >>> > > > > update. >> >>> > > > > And during our debug time with string of sequence : fetch , >> >>> > > > > update, fetch , update , .... the context I saw always the >> same at >> >>> > > > > fetch data. >> >>> > > > > >> >>> > > > > Best regards, >> >>> > > > > Hue Tran >> >>> > > > > >> >>> > > > > >> >>> > > > > >> >>> > > > > On Tue, Feb 7, 2017 at 2:11 AM, John Daily <jda...@basho.com> >> >>> > > > > wrote: >> >>> > > > > Originally I suspected the context which allows Riak to >> resolve >> >>> > > > > conflicts was not present in your data, but I see it in your >> map structure. >> >>> > > > > Thanks for supplying such a detailed description. >> >>> > > > > >> >>> > > > > How fast is your turnaround time between an update and a >> fetch? >> >>> > > > > Even if the cluster is healthy it’s not impossible to see a >> timeout between >> >>> > > > > nodes, which could result in a stale retrieval. Have you >> verified whether >> >>> > > > > the stale data persists? >> >>> > > > > >> >>> > > > > A single node cluster gives an advantage that you’ll never >> see in >> >>> > > > > a real cluster: a perfectly synchronized clock. It also >> reduces (but does >> >>> > > > > not completely eliminate) the possibility of an internal >> timeout between >> >>> > > > > processes. >> >>> > > > > >> >>> > > > > -John >> >>> > > > > >> >>> > > > >> On Feb 6, 2017, at 1:02 PM, my hue < >> tranmyhue.grac...@gmail.com> >> >>> > > > >> wrote: >> >>> > > > >> >> >>> > > > >> Dear Riak Team, >> >>> > > > >> >> >>> > > > >> I and my team used riak as database for my production with an >> >>> > > > >> cluster including 5 nodes. >> >>> > > > >> While production run, we meet an critical bug that is >> sometimes >> >>> > > > >> fail to update document. >> >>> > > > >> I and my colleagues performed debug and detected an issue >> with >> >>> > > > >> the scenario as follow: >> >>> > > > >> >> >>> > > > >> + fetch document >> >>> > > > >> + change value of document >> >>> > > > >> + update document >> >>> > > > >> >> >>> > > > >> Repeat about 10 times and will meet fail. With the document >> is >> >>> > > > >> updated continually, >> >>> > > > >> sometimes will face update fail. >> >>> > > > >> >> >>> > > > >> The first time, 5 nodes of cluster we used riak version >> 2.1.1. >> >>> > > > >> After meet above bug, we upgraded to use riak version 2.2.0 >> and >> >>> > > > >> this issue still occurs. >> >>> > > > >> >> >>> > > > >> Via many time test, debug using Tcpdump at riak node : >> >>> > > > >> >> >>> > > > >> tcpdump -A -ttt -i {interface} src host {host} and dst port >> >>> > > > >> {port} >> >>> > > > >> >> >>> > > > >> And together with the command: >> >>> > > > >> >> >>> > > > >> riak-admin status | grep "node_puts_map\| >> node_puts_map_total\| >> >>> > > > >> node_puts_total\| vnode_map_update_total\| vnode_puts_total\" >> >>> > > > >> >> >>> > > > >> we got that the riak server already get the update request. >> >>> > > > >> However, do not know why riak backend fail to update >> document. >> >>> > > > >> At the fail time, from riak server log everything is ok. >> >>> > > > >> >> >>> > > > >> Then we removed cluster and use a single riak server, and >> see >> >>> > > > >> that above bug never happen. >> >>> > > > >> >> >>> > > > >> For that reason, think that is only happen with cluster >> work. We >> >>> > > > >> took research on basho riak document and our riak configure >> >>> > > > >> seems that like suggestion from document. We totally >> blocked on >> >>> > > > >> this issue and hope that can get support from you >> >>> > > > >> so that can obtain a stable work from riak database for our >> >>> > > > >> production. >> >>> > > > >> Thank you so much. Hope that can get your reply soon. >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> * The following is our riak node information : >> >>> > > > >> >> >>> > > > >> Riak version: 2.2.0 >> >>> > > > >> OS : CentOS Linux release 7.2.1511 >> >>> > > > >> Cpu : 4 core >> >>> > > > >> Memory : 4G >> >>> > > > >> Riak configure : the attached file "riak.conf" >> >>> > > > >> >> >>> > > > >> Note : >> >>> > > > >> >> >>> > > > >> - We mostly using default configure of riak configure except >> that >> >>> > > > >> we used storage backend is multi >> >>> > > > >> >> >>> > > > >> storage_backend = multi >> >>> > > > >> multi_backend.bitcask_mult.storage_backend = bitcask >> >>> > > > >> multi_backend.bitcask_mult.bitcask.data_root = >> >>> > > > >> /var/lib/riak/bitcask_mult >> >>> > > > >> multi_backend.default = bitcask_mult >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> ------------------------------------------------------------ >> ----------------------------------------------------------------- >> >>> > > > >> >> >>> > > > >> - Bucket type created with the following command: >> >>> > > > >> >> >>> > > > >> riak-admin bucket-type create dev_restor >> >>> > > > >> '{"props":{"backend":"bitcask_mult","datatype":"map"}}' >> >>> > > > >> riak-admin bucket-type activate dev_restor >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> ------------------------------------------------------------ >> ----------------------------------------------------------------- >> >>> > > > >> >> >>> > > > >> - Bucket Type Status : >> >>> > > > >> >> >>> > > > >> >> riak-admin bucket-type status dev_restor >> >>> > > > >> >> >>> > > > >> dev_restor 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 >> >>> > > > >> dvv_enabled: true >> >>> > > > >> chash_keyfun: {riak_core_util,chash_std_keyfun} >> >>> > > > >> big_vclock: 50 >> >>> > > > >> basic_quorum: false >> >>> > > > >> backend: <<"bitcask_mult">> >> >>> > > > >> allow_mult: true >> >>> > > > >> datatype: map >> >>> > > > >> active: true >> >>> > > > >> claimant: 'riak-node1@64.137.190.244' >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> ------------------------------------------------------------ >> ----------------------------------------------------------------- >> >>> > > > >> >> >>> > > > >> - Bucket Property : >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> {"props":{"name":"menu","active":true,"allow_mult":true," >> backend":"bitcask_mult","basic_quorum":false,"big_vcloc >> k":50,"chash_keyfun":{"mod":"riak_core_util","fun":"chash_ >> std_keyfun"},"claimant":"riak-node1@64.137.190.244","datatyp >> e":"map","dvv_enabled":true,"dw":"quorum","last_write_wins" >> :false,"linkfun":{"mod":"riak_kv_wm_link_walker","fun":" >> mapreduce_linkfun"},"n_val":3,"name":"menu","notfound_ok": >> true,"old_vclock":86400,"postcommit":[],"pr":0," >> precommit":[],"pw":0,"r":"quorum","rw":"quorum","search_inde >> x":"menu_idx","small_vclock":50,"w":"quorum","young_vclock":20}} >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> ------------------------------------------------------------ >> ----------------------------------------------------------------- >> >>> > > > >> >> >>> > > > >> - Member status : >> >>> > > > >> >> >>> > > > >> >> riak-admin member-status >> >>> > > > >> >> >>> > > > >> ================================= Membership >> >>> > > > >> ================================== >> >>> > > > >> Status Ring Pending Node >> >>> > > > >> >> >>> > > > >> ------------------------------------------------------------ >> ------------------- >> >>> > > > >> valid 18.8% -- 'riak-node1@64.137.190.244' >> >>> > > > >> valid 18.8% -- 'riak-node2@64.137.247.82' >> >>> > > > >> valid 18.8% -- 'riak-node3@64.137.162.64' >> >>> > > > >> valid 25.0% -- 'riak-node4@64.137.161.229' >> >>> > > > >> valid 18.8% -- 'riak-node5@64.137.217.73' >> >>> > > > >> >> >>> > > > >> ------------------------------------------------------------ >> ------------------- >> >>> > > > >> Valid:5 / Leaving:0 / Exiting:0 / Joining:0 / Down:0 >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> ------------------------------------------------------------ >> ----------------------------------------------------------------- >> >>> > > > >> >> >>> > > > >> - Ring >> >>> > > > >> >> >>> > > > >> >> riak-admin status | grep ring >> >>> > > > >> >> >>> > > > >> ring_creation_size : 64 >> >>> > > > >> ring_members : >> >>> > > > >> ['riak-node1@64.137.190.244','riak-node2@64.137.247.82', >> >>> > > > >> 'riak-node3@64.137.162.64','riak-node4@64.137.161.229', >> >>> > > > >> 'riak-node5@64.137.217.73'] >> >>> > > > >> ring_num_partitions : 64 >> >>> > > > >> ring_ownership : <<"[{'riak-node2@64.137.247.82',12},\n >> >>> > > > >> {'riak-node5@64.137.217.73',12},\n {' >> riak-node1@64.137.190.244',12},\n >> >>> > > > >> {'riak-node3@64.137.162.64',12},\n {' >> riak-node4@64.137.161.229',16}]">> >> >>> > > > >> rings_reconciled : 0 >> >>> > > > >> rings_reconciled_total : 31 >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> ------------------------------------------------------------ >> ----------------------------------------------------------------- >> >>> > > > >> >> >>> > > > >> * The riak client : >> >>> > > > >> >> >>> > > > >> + riak-erlang-client: >> >>> > > > >> https://github.com/basho/riak-erlang-client >> >>> > > > >> + release : 2.4.2 >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> ------------------------------------------------------------ >> ----------------------------------------------------------------- >> >>> > > > >> >> >>> > > > >> * Riak client API used: >> >>> > > > >> >> >>> > > > >> + Insert/Update: >> >>> > > > >> >> >>> > > > >> riakc_pb_socket:update_type(Pid, {Bucket-Type, Bucket}, Key, >> >>> > > > >> riakc_map:to_op(Map), []). >> >>> > > > >> >> >>> > > > >> + Fetch : >> >>> > > > >> >> >>> > > > >> riakc_pb_socket:fetch_type(Pid, {BucketType, Bucket}, Key, >> []). >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> ------------------------------------------------------------ >> ----------------------------------------------------------------- >> >>> > > > >> >> >>> > > > >> * Step to perform an update : >> >>> > > > >> >> >>> > > > >> - Fetch document >> >>> > > > >> - Update document >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> ------------------------------------------------------------ >> ----------------------------------------------------------------- >> >>> > > > >> >> >>> > > > >> * Data got from fetch_type: >> >>> > > > >> >> >>> > > > >> {map, [{{<<"account_id">>,register}, >> >>> > > > >> <<"accounta25a424b8484181e8ba1bec25bf7c491">>}, >> >>> > > > >> {{<<"created_by_id">>,register}, >> >>> > > > >> <<"accounta25a424b8484181e8ba1bec25bf7c491">>}, >> >>> > > > >> {{<<"created_time_dt">>,register},<<"2017-01-27T03:34:04Z">> >> }, >> >>> > > > >> {{<<"currency">>,register},<<"cad">>}, >> >>> > > > >> {{<<"end_time">>,register},<<"dont_use">>}, >> >>> > > > >> {{<<"id">>,register},<<"menufe89488afa948875cab6b0b18d579f21 >> ">>}, >> >>> > > > >> {{<<"maintain_mode_b">>,register},<<"false">>}, >> >>> > > > >> {{<<"menu_category_revision_id">>,register}, >> >>> > > > >> <<"0-634736bc14e0bd3ed7e3fe0f1ee64443">>}, >> >>> > > > >> {{<<"name">>,register},<<"fullmenu">>}, >> {{<<"order_i">>,register},<<"0">>}, >> >>> > > > >> {{<<"rest_location_p">>,register}, >> >>> > > > >> <<"10.844117421366443,106.63982392275398">>}, >> >>> > > > >> {{<<"restaurant_id">>,register}, >> >>> > > > >> <<"rest848e042b3a0488640981c8a6dc4a8281">>}, >> >>> > > > >> {{<<"restaurant_status_id">>,register},<<"inactive">>}, >> >>> > > > >> {{<<"start_time">>,register},<<"dont_use">>}, >> >>> > > > >> {{<<"status_id">>,register},<<"hide">>}, >> {{<<"updated_by_id">>,register}, >> >>> > > > >> <<"accounta25a424b8484181e8ba1bec25bf7c491">>}, >> >>> > > > >> {{<<"updated_time_dt">>,register},<<"2017-02-06T17:22:39Z">> >> }], >> >>> > > > >> [], >> >>> > > > >> [], >> >>> > > > >> <<131,108,0,0,0,3,104,2,109,0,0,0,12,39,21,84,209,219,42,57, >> 233,0,0,156,252,97,34,104,2,109,0,0,0,12,132,107,248,226,103 >> ,5,182,208,0,0,118,2,97,40,104,2,109,0,0,0,12,137,252,139, >> 186,176,202,25,96,0,0,195,164,97,54,106>>} >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> * Update with update_type >> >>> > > > >> >> >>> > > > >> Below is Map data before using riakc_map:to_op(Map) : >> >>> > > > >> >> >>> > > > >> {map, [] , >> >>> > > > >> >> >>> > > > >> [{{<<"account_id">>,register},{register,<<>>,<<"accounta25a4 >> 24b8484181e8ba1bec25bf7c491">>}},{{<<"created_by_id">>, >> register},{register,<<>>,<<"accounta25a424b8484181e8ba1bec25 >> bf7c491">>}},{{<<"created_time_dt">>,register},{register,<<> >> >,<<"2017-01-27T03:34:04Z">>}},{{<<"currency">>,register},{r >> egister,<<>>,<<"cad">>}},{{<<"end_time">>,register},{registe >> r,<<>>,<<"dont_use">>}},{{<<"id">>,register},{register,<<>> >> ,<<"menufe89488afa948875cab6b0b18d579f21">>}},{{<<"maintain_ >> mode_b">>,register},{register,<<>>,<<"false">>}},{{<<"menu_c >> ategory_revision_id">>,register},{register,<<>>,<<"0-634736b >> c14e0bd3ed7e3fe0f1ee64443">>}},{{<<"name">>,register},{ >> register,<<>>,<<"fullmenu">>}},{{<<"order_i">>,register},{re >> gister,<<>>,<<"0">>}},{{<<"rest_location_p">>,register},{reg >> ister,<<>>,<<"10.844117421366443,106.63982392275398">>}},{{< >> <"restaurant_id">>,register},{register,<<>>,<<"rest848e042b3 >> a0488640981c8a6dc4a8281">>}},{{<<"restaurant_status_id">>, >> register},{register,<<>>,<<"inactive">>}},{{<<"start_time" >> >>,register},{register,<<>>,<<"dont_use">>}},{{<<"status_id" >> >>,register},{register,<<>>,<<"show">>}},{{<<"updated_by_id" >> >>,register},{register,<<>>,<<"accounta25a424b8484181e8ba1be >> c25bf7c491">>}},{{<<"updated_time_dt">>,register},{register, >> <<>>,<<"2017-02-06T17:22:39Z">>}}], >> >>> > > > >> [] , >> >>> > > > >> <<131,108,0,0,0,3,104,2,109,0,0,0,12,39,21,84,209,219,42,57, >> 233,0,0,156,252,97,34,104,2,109,0,0,0,12,132,107,248,226,103 >> ,5,182,208,0,0,118,2,97,39,104,2,109,0,0,0,12,137,252,139, >> 186,176,202,25,96,0,0,195,164,97,53,106>> >> >>> > > > >> } >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> >> >>> > > > >> - >> >>> > > > >> >> >>> > > > >> Best regards, >> >>> > > > >> Hue Tran >> >>> > > > >> <riak.conf>_______________________________________________ >> >>> > > > >> 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 >> > > > > -- > Best regards, > ------------------------------------------------------------ > ------------------------------------------------- > EM NGUYEN > Mobile: +84 949669075 <+84%2094%20966%2090%2075> > Yahoo & Skype: nghiaembt > Website: http://freeswitch.vn > ------------------------------------------------------------ > -------------------------------------------------- > _______________________________________________ > 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