[ https://issues.apache.org/jira/browse/CASSANDRA-15593?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17044403#comment-17044403 ]
Antonio edited comment on CASSANDRA-15593 at 2/25/20 12:45 PM: --------------------------------------------------------------- i set dclocal_read_repair_chance = 1.0,if every time read repair working,i use local_quarum can select 1 1 1 but sometimes,return none,and i use local_one, select like this one by one, node1 un,node2 dn,node3 dn:return 1 1 1 node1 dn,node2 un,node3 dn:return none node1 dn,node2 dn,node3 dn:return none only the correct node1 select can return 1 1 1, other two node return none,that's make me confused was (Author: james1): i set dclocal_read_repair_chance = 1.0,if every time read repair working,i use local_quarum can select 1 1 1 but sometimes,return none,and i use local_one, select like this one by one, node1 un,node2 dn,node3 dn:return 1 1 1 node1 dn,node2 un,node3 dn:return none node1 dn,node2 dn,node3 dn:return none only the correct node1 select can return 1 1 1, othe two node return none,that's make me confused > seems reading repair bug > ------------------------ > > Key: CASSANDRA-15593 > URL: https://issues.apache.org/jira/browse/CASSANDRA-15593 > Project: Cassandra > Issue Type: Bug > Reporter: Antonio > Priority: Normal > > cassandra version:2.1.15 > i have one dc and 3nodes > 1. create KEYSPACE test WITH replication = \{'class': > 'NetworkTopologyStrategy', 'DC1':'3' } and durable_writes = 'true'; > 2. create table test(a int , b int , c int , primary key(a)) with > dclocal_read_repair_chance = 1.0; > 3. insert one row into table test,instert into test(a, b, c) values (1, 1, > 1); and remove sstable on two nodes and result below: > node1:have correct row 1 1 1 > node2:doesn't have rf > node3:doesn't have rf > 4. and i use local_one select one by one like this: > node1 un,node2 dn,node3 dn:return 1 1 1 > node1 dn,node2 un,node3 dn:return null > node1 dn,node2 dn,node3 dn:return null > this prove node1 have correct rf > 5. and i let all node un,user local_quarum to select , select * from test > where a = 1; > but the read repair does't work every time(i test many times),that's the > problem(same in 3.0.15) > > i hope if i set dclocal_read_repair_chance = 1.0,every time i read by > local_quarum, if any rf digest does't match,read repair will work,and repair > all nodes > > i.m not sure does's the problem happends in this code() > wish for your reply,thanks > public void response(MessageIn<TMessage> message) > { > resolver.preprocess(message); int n = waitingFor(message) > ? recievedUpdater.incrementAndGet(this) > : received; if (n >= blockfor && > resolver.isDataPresent()) > { > ////this mean if return responses >= rf/2 +1 and a data response > return,it start compare,does't all response > condition.signalAll(); // kick off a background digest > comparison if this is a result that (may have) arrived after // > the original resolve that get() kicks off as soon as the condition is > signaled if (blockfor < endpoints.size() && n == endpoints.size()) > { > TraceState traceState = Tracing.instance.get(); > if (traceState != null) > traceState.trace("Initiating read-repair"); > StageManager.getStage(Stage.READ_REPAIR).execute(new > AsyncRepairRunner(traceState)); > } > } > } -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org