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_vclock":50,"chash_keyfun":{"mod":"riak_core_util","fun":"chash_std_keyfun"},"claimant":"riak-node1@64.137.190.244","datatype":"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_index":"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_vclock":50,"chash_keyfun":{"mod":"riak_core_util","fun":"chash_std_keyfun"},"claimant":"riak-node1@64.137.190.244","datatype":"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_index":"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,<<>>,<<"accounta25a424b8484181e8ba1bec25bf7c491">>}},{{<<"created_by_id">>,register},{register,<<>>,<<"accounta25a424b8484181e8ba1bec25bf7c491">>}},{{<<"created_time_dt">>,register},{register,<<>>,<<"2017-01-27T03:34:04Z">>}},{{<<"currency">>,register},{register,<<>>,<<"cad">>}},{{<<"end_time">>,register},{register,<<>>,<<"dont_use">>}},{{<<"id">>,register},{register,<<>>,<<"menufe89488afa948875cab6b0b18d579f21">>}},{{<<"maintain_mode_b">>,register},{register,<<>>,<<"false">>}},{{<<"menu_category_revision_id">>,register},{register,<<>>,<<"0-634736bc14e0bd3ed7e3fe0f1ee64443">>}},{{<<"name">>,register},{register,<<>>,<<"fullmenu">>}},{{<<"order_i">>,register},{register,<<>>,<<"0">>}},{{<<"rest_location_p">>,register},{register,<<>>,<<"10.844117421366443,106.63982392275398">>}},{{<<"restaurant_id">>,register},{register,<<>>,<<"rest848e042b3a0488640981c8a6dc4a8281">>}},{{<<"restaurant_status_id">>,register},{register,<<>>,<<"inactive">>}},{{<<"start_time">>,register},{register,<<>>,<<"dont_use">>}},{{<<"status_id">>,register},{register,<<>>,<<"show">>}},{{<<"updated_by_id">>,register},{register,<<>>,<<"accounta25a424b8484181e8ba1bec25bf7c491">>}},{{<<"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