[
https://issues.apache.org/jira/browse/CASSANDRA-3006?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13082091#comment-13082091
]
Boris Yen commented on CASSANDRA-3006:
--------------------------------------
Here is the test program I am using now. the hector version is 0.8.0-2.
Hope this will be helpful.
------------------------------------------------
import java.util.Arrays;
import me.prettyprint.cassandra.model.AllOneConsistencyLevelPolicy;
import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.cassandra.service.CassandraHostConfigurator;
import me.prettyprint.cassandra.service.ThriftCluster;
import me.prettyprint.hector.api.Keyspace;
import me.prettyprint.hector.api.beans.HCounterColumn;
import me.prettyprint.hector.api.factory.HFactory;
import me.prettyprint.hector.api.mutation.Mutator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CounterTest {
private Logger logger = LoggerFactory.getLogger(CounterTest.class) ;
private static final Integer COUNTER_NUM = 1000 ;
private static final StringSerializer ss = StringSerializer.get();
private static final String HOST = "172.17.19.151:9160" ;
private ThriftCluster cluster ;
/**
* @param args
*/
public static void main(String[] args) {
CounterTest tc = new CounterTest() ;
try {
tc.testAlarmCounter() ;
} catch (InterruptedException e) {
}
}
public CounterTest(){
CassandraHostConfigurator chc = new
CassandraHostConfigurator(HOST) ;
chc.setMaxActive(100) ;
chc.setMaxIdle(10) ;
chc.setCassandraThriftSocketTimeout(60000) ;
cluster = new ThriftCluster("Test Cluster", chc) ;
}
public void testAlarmCounter() throws InterruptedException{
int successCounter = 0 ;
int cl = 0;
for(int i=0; i<COUNTER_NUM; i++){
try{
logger.info("count: "+i) ;
Mutator<String> mutator =
HFactory.createMutator(getKeyspace(cl), StringSerializer.get());
HCounterColumn<String> column =
HFactory.createCounterColumn("testSC", 1L) ;
mutator.addCounter("sc", "testCounter",
HFactory.createCounterSuperColumn("testC", Arrays.asList(column), ss, ss));
mutator.execute() ;
successCounter++ ;
} catch(Exception e){
logger.info("Error! Change consistency level to
1.", e) ;
cl=1 ;
}
Thread.sleep(50) ;
}
logger.info("\nsuccess counter: "+successCounter) ;
}
private Keyspace getKeyspace(int cl){
if(cl == 1)
return HFactory.createKeyspace("test", cluster, new
AllOneConsistencyLevelPolicy()) ;
else
return HFactory.createKeyspace("test", cluster) ; //
default consistency level is Quorum
}
}
> Enormous counter
> -----------------
>
> Key: CASSANDRA-3006
> URL: https://issues.apache.org/jira/browse/CASSANDRA-3006
> Project: Cassandra
> Issue Type: Bug
> Affects Versions: 0.8.3
> Environment: ubuntu 10.04
> Reporter: Boris Yen
> Assignee: Sylvain Lebresne
>
> I have two-node cluster with the following keyspace and column family
> settings.
> Cluster Information:
> Snitch: org.apache.cassandra.locator.SimpleSnitch
> Partitioner: org.apache.cassandra.dht.RandomPartitioner
> Schema versions:
> 63fda700-c243-11e0-0000-2d03dcafebdf: [172.17.19.151, 172.17.19.152]
> Keyspace: test:
> Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy
> Durable Writes: true
> Options: [datacenter1:2]
> Column Families:
> ColumnFamily: testCounter (Super)
> "APP status information."
> Key Validation Class: org.apache.cassandra.db.marshal.BytesType
> Default column value validator:
> org.apache.cassandra.db.marshal.CounterColumnType
> Columns sorted by:
> org.apache.cassandra.db.marshal.BytesType/org.apache.cassandra.db.marshal.BytesType
> Row cache size / save period in seconds: 0.0/0
> Key cache size / save period in seconds: 200000.0/14400
> Memtable thresholds: 1.1578125/1440/247 (millions of ops/MB/minutes)
> GC grace seconds: 864000
> Compaction min/max thresholds: 4/32
> Read repair chance: 1.0
> Replicate on write: true
> Built indexes: []
> Then, I use a test program based on hector to add a counter column
> (testCounter[sc][column]) 1000 times. In the middle the adding process, I
> intentional shut down the node 172.17.19.152. In addition to that, the test
> program is smart enough to switch the consistency level from Quorum to One,
> so that the following adding actions would not fail.
> After all the adding actions are done, I start the cassandra on
> 172.17.19.152, and I use cassandra-cli to check if the counter is correct on
> both nodes, and I got a result 1001 which should be reasonable because hector
> will retry once. However, when I shut down 172.17.19.151 and after
> 172.17.19.152 is aware of 172.17.19.151 is down, I try to start the cassandra
> on 172.17.19.151 again. Then, I check the counter again, this time I got a
> result 481387 which is so wrong.
> I use 0.8.3 to reproduce this bug, but I think this also happens on 0.8.2 or
> before also.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira