Author: xedin Date: Wed Sep 14 16:02:18 2011 New Revision: 1170700 URL: http://svn.apache.org/viewvc?rev=1170700&view=rev Log: Support of compaction strategy option for stress.java patch by Pavel Yaskevich; reviewed by Brandon Williams for CASSANDRA-3204
Modified: cassandra/branches/cassandra-1.0.0/CHANGES.txt cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/config/CFMetaData.java cassandra/branches/cassandra-1.0.0/tools/stress/src/org/apache/cassandra/stress/Session.java Modified: cassandra/branches/cassandra-1.0.0/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/CHANGES.txt?rev=1170700&r1=1170699&r2=1170700&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0.0/CHANGES.txt (original) +++ cassandra/branches/cassandra-1.0.0/CHANGES.txt Wed Sep 14 16:02:18 2011 @@ -74,7 +74,7 @@ * Fix backwards compatibilty for CQL memtable properties (CASSANDRA-3190) * Add five-minute delay before starting compactions on a restarted server (CASSANDRA-3181) - + * support of compaction strategy option for stress.java (CASSANDRA-3204) 0.8.6 * avoid trying to watch cassandra-topology.properties when loaded from jar Modified: cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/config/CFMetaData.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/config/CFMetaData.java?rev=1170700&r1=1170699&r2=1170700&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/config/CFMetaData.java (original) +++ cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/config/CFMetaData.java Wed Sep 14 16:02:18 2011 @@ -776,7 +776,7 @@ public final class CFMetaData logger.debug("application result is {}", this); } - private static Class<? extends AbstractCompactionStrategy> createCompactionSrategy(String className) throws ConfigurationException + public static Class<? extends AbstractCompactionStrategy> createCompactionSrategy(String className) throws ConfigurationException { className = className.contains(".") ? className : "org.apache.cassandra.db.compaction." + className; try Modified: cassandra/branches/cassandra-1.0.0/tools/stress/src/org/apache/cassandra/stress/Session.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/tools/stress/src/org/apache/cassandra/stress/Session.java?rev=1170700&r1=1170699&r2=1170700&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0.0/tools/stress/src/org/apache/cassandra/stress/Session.java (original) +++ cassandra/branches/cassandra-1.0.0/tools/stress/src/org/apache/cassandra/stress/Session.java Wed Sep 14 16:02:18 2011 @@ -25,7 +25,9 @@ import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; +import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.config.ConfigurationException; +import org.apache.cassandra.db.compaction.AbstractCompactionStrategy; import org.apache.cassandra.db.marshal.AbstractType; import org.apache.cassandra.db.marshal.TypeParser; import org.apache.commons.cli.*; @@ -86,6 +88,7 @@ public class Session implements Serializ availableOptions.addOption("T", "send-to", true, "Send this as a request to the stress daemon at specified address."); availableOptions.addOption("I", "compression", true, "Specify the compression to use for sstable, default:no compression"); availableOptions.addOption("Q", "query-names", true, "Comma-separated list of column names to retrieve from each row."); + availableOptions.addOption("Z", "compaction-strategy", true, "CompactionStrategy to use."); } private int numKeys = 1000 * 1000; @@ -102,6 +105,7 @@ public class Session implements Serializ private int port = 9160; private int superColumns = 1; private String compression = null; + private String compactionStrategy = null; private int progressInterval = 10; private int keysPerCall = 1000; @@ -301,6 +305,22 @@ public class Session implements Serializ { columnNames = null; } + + if (cmd.hasOption("Z")) + { + compactionStrategy = cmd.getOptionValue("Z"); + + try + { + // validate compaction strategy class + CFMetaData.createCompactionSrategy(compactionStrategy); + } + catch (ConfigurationException e) + { + System.err.println(e.getMessage()); + System.exit(1); + } + } } catch (ParseException e) { @@ -483,6 +503,14 @@ public class Session implements Serializ keyspace.setStrategy_options(replicationStrategyOptions); } + if (compactionStrategy != null) + { + standardCfDef.setCompaction_strategy(compactionStrategy); + superCfDef.setCompaction_strategy(compactionStrategy); + counterCfDef.setCompaction_strategy(compactionStrategy); + counterSuperCfDef.setCompaction_strategy(compactionStrategy); + } + keyspace.setCf_defs(new ArrayList<CfDef>(Arrays.asList(standardCfDef, superCfDef, counterCfDef, counterSuperCfDef))); Cassandra.Client client = getClient(false);