modules/common/cassandra-ccm/cassandra-ccm-arquillian/src/main/java/org/rhq/cassandra/ccm/arquillian/CCMSuiteDeploymentExtension.java
| 4
modules/common/cassandra-ccm/cassandra-ccm-cli/src/main/java/org/rhq/cassandra/ccm/cli/command/Deploy.java
| 4
modules/common/cassandra-ccm/cassandra-ccm-cli/src/main/java/org/rhq/cassandra/ccm/cli/command/Shutdown.java
| 4
modules/common/cassandra-ccm/cassandra-ccm-cli/src/main/java/org/rhq/cassandra/ccm/cli/command/Start.java
| 4
modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/CassandraClusterManager.java
| 5
modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/DeploymentOptions.java
| 2
modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/DeploymentOptionsFactory.java
| 45 ++++
modules/common/cassandra-ccm/cassandra-ccm-core/src/test/java/org/rhq/cassandra/DeployerITest.java
| 3
modules/common/cassandra-ccm/cassandra-ccm-maven-plugin/src/main/java/org/rhq/cassandra/ccm/maven/DeployMojo.java
| 4
modules/common/cassandra-ccm/cassandra-ccm-maven-plugin/src/main/java/org/rhq/cassandra/ccm/maven/ShutdownMojo.java
| 4
modules/common/cassandra-ccm/cassandra-ccm-testng/src/main/java/org/rhq/cassandra/CCMTestNGListener.java
| 3
modules/common/cassandra-installer/src/main/java/org/rhq/storage/installer/StorageInstaller.java
| 4
modules/common/cassandra-schema/pom.xml
| 6
modules/common/cassandra-schema/src/main/java/org/rhq/cassandra/schema/SchemaManager.java
| 25 --
modules/common/cassandra-util/pom.xml
| 75 +++++++
modules/common/cassandra-util/src/main/java/org/rhq/cassandra/util/ClusterBuilder.java
| 96 ++++++++++
modules/common/pom.xml
| 1
modules/enterprise/server/installer/pom.xml
| 5
modules/enterprise/server/installer/src/main/resources/module/main/module.xml
| 1
modules/enterprise/server/jar/pom.xml
| 12 +
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cassandra/SessionManagerBean.java
| 6
modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/RHQControl.java
| 5
modules/helpers/metrics-simulator/pom.xml
| 12 -
modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/Simulator.java
| 69 +++++--
modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/SimulatorCLI.java
| 5
modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/plan/ClusterConfig.java
| 2
modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/plan/SimulationPlan.java
| 2
27 files changed, 341 insertions(+), 67 deletions(-)
New commits:
commit a070273a87553a1dd9839206d4e3db8bdc9614f7
Author: John Sanda <jsanda(a)redhat.com>
Date: Thu Apr 25 22:30:06 2013 -0400
log the root cause when a command throws an exception
diff --git
a/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/RHQControl.java
b/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/RHQControl.java
index 63ba9d8..8a6dd8f 100644
---
a/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/RHQControl.java
+++
b/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/RHQControl.java
@@ -32,6 +32,8 @@ import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.rhq.core.util.exception.ThrowableUtil;
+
/**
* @author John Sanda
*/
@@ -100,7 +102,8 @@ public class RHQControl {
control.exec(args);
System.exit(0);
} catch (RHQControlException e) {
- control.log.error("There was an unxpected error", e);
+ Throwable rootCause = ThrowableUtil.getRootCause(e);
+ control.log.error("There was an unxpected error: " +
rootCause.getMessage(), rootCause);
System.exit(1);
}
}
commit 2e2ca51bf51af7886ed8e226263a8d373302a580
Author: John Sanda <jsanda(a)redhat.com>
Date: Thu Apr 25 22:24:22 2013 -0400
[BZ 907485 956878] Configure storage node defaults to work with OpenJDK and IBM JDK
diff --git
a/modules/common/cassandra-ccm/cassandra-ccm-arquillian/src/main/java/org/rhq/cassandra/ccm/arquillian/CCMSuiteDeploymentExtension.java
b/modules/common/cassandra-ccm/cassandra-ccm-arquillian/src/main/java/org/rhq/cassandra/ccm/arquillian/CCMSuiteDeploymentExtension.java
index 1f28d2b..f456511 100644
---
a/modules/common/cassandra-ccm/cassandra-ccm-arquillian/src/main/java/org/rhq/cassandra/ccm/arquillian/CCMSuiteDeploymentExtension.java
+++
b/modules/common/cassandra-ccm/cassandra-ccm-arquillian/src/main/java/org/rhq/cassandra/ccm/arquillian/CCMSuiteDeploymentExtension.java
@@ -59,6 +59,7 @@ import org.rhq.cassandra.CassandraClusterManager;
import org.rhq.cassandra.CassandraNode;
import org.rhq.cassandra.ClusterInitService;
import org.rhq.cassandra.DeploymentOptions;
+import org.rhq.cassandra.DeploymentOptionsFactory;
import org.rhq.cassandra.schema.SchemaManager;
/**
@@ -81,7 +82,8 @@ public class CCMSuiteDeploymentExtension implements LoadableExtension {
File basedir = new File("target");
File clusterDir = new File(basedir, "cassandra");
- DeploymentOptions options = new DeploymentOptions();
+ DeploymentOptionsFactory factory = new DeploymentOptionsFactory();
+ DeploymentOptions options = factory.newDeploymentOptions();
options.setClusterDir(clusterDir.getAbsolutePath());
options.setUsername("rhqadmin");
options.setPassword("rhqadmin");
diff --git
a/modules/common/cassandra-ccm/cassandra-ccm-cli/src/main/java/org/rhq/cassandra/ccm/cli/command/Deploy.java
b/modules/common/cassandra-ccm/cassandra-ccm-cli/src/main/java/org/rhq/cassandra/ccm/cli/command/Deploy.java
index 9fcf8fc..9ba5411 100644
---
a/modules/common/cassandra-ccm/cassandra-ccm-cli/src/main/java/org/rhq/cassandra/ccm/cli/command/Deploy.java
+++
b/modules/common/cassandra-ccm/cassandra-ccm-cli/src/main/java/org/rhq/cassandra/ccm/cli/command/Deploy.java
@@ -13,6 +13,7 @@ import org.rhq.cassandra.CassandraClusterManager;
import org.rhq.cassandra.CassandraNode;
import org.rhq.cassandra.ClusterInitService;
import org.rhq.cassandra.DeploymentOptions;
+import org.rhq.cassandra.DeploymentOptionsFactory;
import org.rhq.core.util.PropertiesFileUpdate;
import org.rhq.core.util.StringUtil;
@@ -49,7 +50,8 @@ public class Deploy extends CCMCommand {
if (cmdLine.hasOption("h")) {
printUsage();
} else {
- DeploymentOptions deploymentOptions = new DeploymentOptions();
+ DeploymentOptionsFactory factory = new DeploymentOptionsFactory();
+ DeploymentOptions deploymentOptions = factory.newDeploymentOptions();
if (cmdLine.hasOption("n")) {
int numNodes = Integer.parseInt(cmdLine.getOptionValue("n"));
deploymentOptions.setNumNodes(numNodes);
diff --git
a/modules/common/cassandra-ccm/cassandra-ccm-cli/src/main/java/org/rhq/cassandra/ccm/cli/command/Shutdown.java
b/modules/common/cassandra-ccm/cassandra-ccm-cli/src/main/java/org/rhq/cassandra/ccm/cli/command/Shutdown.java
index 4df90f3..b396a45 100644
---
a/modules/common/cassandra-ccm/cassandra-ccm-cli/src/main/java/org/rhq/cassandra/ccm/cli/command/Shutdown.java
+++
b/modules/common/cassandra-ccm/cassandra-ccm-cli/src/main/java/org/rhq/cassandra/ccm/cli/command/Shutdown.java
@@ -5,6 +5,7 @@ import org.apache.commons.cli.Options;
import org.rhq.cassandra.CassandraClusterManager;
import org.rhq.cassandra.DeploymentOptions;
+import org.rhq.cassandra.DeploymentOptionsFactory;
/**
* @author John Sanda
@@ -39,7 +40,8 @@ public class Shutdown extends CCMCommand {
if (cmdLine.hasOption("h")) {
printUsage();
} else {
- DeploymentOptions deploymentOptions = new DeploymentOptions();
+ DeploymentOptionsFactory factory = new DeploymentOptionsFactory();
+ DeploymentOptions deploymentOptions = factory.newDeploymentOptions();
CassandraClusterManager ccm = new
CassandraClusterManager(deploymentOptions);
if (cmdLine.hasOption("n")) {
diff --git
a/modules/common/cassandra-ccm/cassandra-ccm-cli/src/main/java/org/rhq/cassandra/ccm/cli/command/Start.java
b/modules/common/cassandra-ccm/cassandra-ccm-cli/src/main/java/org/rhq/cassandra/ccm/cli/command/Start.java
index 1f7e8c4..82bb8f7 100644
---
a/modules/common/cassandra-ccm/cassandra-ccm-cli/src/main/java/org/rhq/cassandra/ccm/cli/command/Start.java
+++
b/modules/common/cassandra-ccm/cassandra-ccm-cli/src/main/java/org/rhq/cassandra/ccm/cli/command/Start.java
@@ -5,6 +5,7 @@ import org.apache.commons.cli.Options;
import org.rhq.cassandra.CassandraClusterManager;
import org.rhq.cassandra.DeploymentOptions;
+import org.rhq.cassandra.DeploymentOptionsFactory;
/**
* @author John Sanda
@@ -38,7 +39,8 @@ public class Start extends CCMCommand {
if (commandLine.hasOption("h")) {
printUsage();
} else {
- DeploymentOptions deploymentOptions = new DeploymentOptions();
+ DeploymentOptionsFactory factory = new DeploymentOptionsFactory();
+ DeploymentOptions deploymentOptions = factory.newDeploymentOptions();
CassandraClusterManager ccm = new
CassandraClusterManager(deploymentOptions);
// TODO handle -n option
if (commandLine.hasOption("n")) {
diff --git
a/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/CassandraClusterManager.java
b/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/CassandraClusterManager.java
index 6e95af4..22a1cff 100644
---
a/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/CassandraClusterManager.java
+++
b/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/CassandraClusterManager.java
@@ -61,7 +61,7 @@ public class CassandraClusterManager {
private List<File> installedNodeDirs = new ArrayList<File>();
public CassandraClusterManager() {
- this(new DeploymentOptions());
+ this(new DeploymentOptionsFactory().newDeploymentOptions());
}
public CassandraClusterManager(DeploymentOptions deploymentOptions) {
@@ -107,7 +107,8 @@ public class CassandraClusterManager {
File basedir = new File(deploymentOptions.getClusterDir(), "node" +
i);
String address = getLocalIPAddress(i + 1);
- DeploymentOptions nodeOptions = new DeploymentOptions();
+ DeploymentOptionsFactory factory = new DeploymentOptionsFactory();
+ DeploymentOptions nodeOptions = factory.newDeploymentOptions();
nodeOptions.setSeeds(seeds);
nodeOptions.setJmxPort(deploymentOptions.getJmxPort() + i);
nodeOptions.setBasedir(basedir.getAbsolutePath());
diff --git
a/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/DeploymentOptions.java
b/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/DeploymentOptions.java
index a83b1d5..f2c14ce 100644
---
a/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/DeploymentOptions.java
+++
b/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/DeploymentOptions.java
@@ -93,7 +93,7 @@ public class DeploymentOptions {
private String logFileName;
private String stackSize;
- public DeploymentOptions() {
+ DeploymentOptions() {
}
/**
diff --git
a/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/DeploymentOptionsFactory.java
b/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/DeploymentOptionsFactory.java
new file mode 100644
index 0000000..7e585ac
--- /dev/null
+++
b/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/DeploymentOptionsFactory.java
@@ -0,0 +1,45 @@
+/*
+ *
+ * * RHQ Management Platform
+ * * Copyright (C) 2005-2012 Red Hat, Inc.
+ * * All rights reserved.
+ * *
+ * * This program is free software; you can redistribute it and/or modify
+ * * it under the terms of the GNU General Public License, version 2, as
+ * * published by the Free Software Foundation, and/or the GNU Lesser
+ * * General Public License, version 2.1, also as published by the Free
+ * * Software Foundation.
+ * *
+ * * This program is distributed in the hope that it will be useful,
+ * * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * * GNU General Public License and the GNU Lesser General Public License
+ * * for more details.
+ * *
+ * * You should have received a copy of the GNU General Public License
+ * * and the GNU Lesser General Public License along with this program;
+ * * if not, write to the Free Software Foundation, Inc.,
+ * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+package org.rhq.cassandra;
+
+/**
+ * @author John Sanda
+ */
+public class DeploymentOptionsFactory {
+
+ public DeploymentOptions newDeploymentOptions() {
+ String arch = System.getProperty("os.arch");
+ String javaVMName = System.getProperty("java.vm.name");
+ String javaVersion = System.getProperty("java.version");
+
+ if (arch.equals("i386") &&
javaVMName.startsWith("OpenJDK") &&
javaVersion.startsWith("1.6")) {
+ System.setProperty("rhq.cassandra.stack.size", "240k");
+ }
+
+ return new DeploymentOptions();
+ }
+
+}
diff --git
a/modules/common/cassandra-ccm/cassandra-ccm-core/src/test/java/org/rhq/cassandra/DeployerITest.java
b/modules/common/cassandra-ccm/cassandra-ccm-core/src/test/java/org/rhq/cassandra/DeployerITest.java
index 0e8f062..91a5459 100644
---
a/modules/common/cassandra-ccm/cassandra-ccm-core/src/test/java/org/rhq/cassandra/DeployerITest.java
+++
b/modules/common/cassandra-ccm/cassandra-ccm-core/src/test/java/org/rhq/cassandra/DeployerITest.java
@@ -58,7 +58,8 @@ public class DeployerITest {
deployDir = new File(System.getProperty("rhq.storage.deploy-dir",
System.getProperty("java.io.tmpdir")));
confDir = new File(deployDir, "conf");
- DeploymentOptions deploymentOptions = new DeploymentOptions();
+ DeploymentOptionsFactory factory = new DeploymentOptionsFactory();
+ DeploymentOptions deploymentOptions = factory.newDeploymentOptions();
deploymentOptions.setBasedir(deployDir.getAbsolutePath());
deploymentOptions.setCommitLogDir("/var/lib/rhq/storage/commit_log");
deploymentOptions.setDataDir("/var/lib/rhq/storage/data");
diff --git
a/modules/common/cassandra-ccm/cassandra-ccm-maven-plugin/src/main/java/org/rhq/cassandra/ccm/maven/DeployMojo.java
b/modules/common/cassandra-ccm/cassandra-ccm-maven-plugin/src/main/java/org/rhq/cassandra/ccm/maven/DeployMojo.java
index fa9e561..24621ed 100644
---
a/modules/common/cassandra-ccm/cassandra-ccm-maven-plugin/src/main/java/org/rhq/cassandra/ccm/maven/DeployMojo.java
+++
b/modules/common/cassandra-ccm/cassandra-ccm-maven-plugin/src/main/java/org/rhq/cassandra/ccm/maven/DeployMojo.java
@@ -37,6 +37,7 @@ import org.apache.maven.plugins.annotations.Parameter;
import org.rhq.cassandra.CassandraClusterManager;
import org.rhq.cassandra.CassandraNode;
import org.rhq.cassandra.DeploymentOptions;
+import org.rhq.cassandra.DeploymentOptionsFactory;
import org.rhq.cassandra.schema.SchemaManager;
/**
@@ -53,7 +54,8 @@ public class DeployMojo extends AbstractMojo {
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
- DeploymentOptions deploymentOptions = new DeploymentOptions();
+ DeploymentOptionsFactory factory = new DeploymentOptionsFactory();
+ DeploymentOptions deploymentOptions = factory.newDeploymentOptions();
deploymentOptions.setClusterDir(clusterDir.getAbsolutePath());
deploymentOptions.setNumNodes(numNodes);
diff --git
a/modules/common/cassandra-ccm/cassandra-ccm-maven-plugin/src/main/java/org/rhq/cassandra/ccm/maven/ShutdownMojo.java
b/modules/common/cassandra-ccm/cassandra-ccm-maven-plugin/src/main/java/org/rhq/cassandra/ccm/maven/ShutdownMojo.java
index 1d84e9c..2c9fdec 100644
---
a/modules/common/cassandra-ccm/cassandra-ccm-maven-plugin/src/main/java/org/rhq/cassandra/ccm/maven/ShutdownMojo.java
+++
b/modules/common/cassandra-ccm/cassandra-ccm-maven-plugin/src/main/java/org/rhq/cassandra/ccm/maven/ShutdownMojo.java
@@ -35,6 +35,7 @@ import org.apache.maven.plugins.annotations.Parameter;
import org.rhq.cassandra.CassandraClusterManager;
import org.rhq.cassandra.DeploymentOptions;
+import org.rhq.cassandra.DeploymentOptionsFactory;
/**
* @author John Sanda
@@ -48,7 +49,8 @@ public class ShutdownMojo extends AbstractMojo {
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
getLog().info("Shutting down cluster in " + clusterDir);
- DeploymentOptions deploymentOptions = new DeploymentOptions();
+ DeploymentOptionsFactory factory = new DeploymentOptionsFactory();
+ DeploymentOptions deploymentOptions = factory.newDeploymentOptions();
deploymentOptions.setClusterDir(clusterDir.getAbsolutePath());
long start = System.currentTimeMillis();
diff --git
a/modules/common/cassandra-ccm/cassandra-ccm-testng/src/main/java/org/rhq/cassandra/CCMTestNGListener.java
b/modules/common/cassandra-ccm/cassandra-ccm-testng/src/main/java/org/rhq/cassandra/CCMTestNGListener.java
index e883036..b966b60 100644
---
a/modules/common/cassandra-ccm/cassandra-ccm-testng/src/main/java/org/rhq/cassandra/CCMTestNGListener.java
+++
b/modules/common/cassandra-ccm/cassandra-ccm-testng/src/main/java/org/rhq/cassandra/CCMTestNGListener.java
@@ -82,7 +82,8 @@ public class CCMTestNGListener implements IInvokedMethodListener {
}
int numNodes = annotation.numNodes();
- DeploymentOptions deploymentOptions = new DeploymentOptions();
+ DeploymentOptionsFactory factory = new DeploymentOptionsFactory();
+ DeploymentOptions deploymentOptions = factory.newDeploymentOptions();
deploymentOptions.setClusterDir(clusterDir);
deploymentOptions.setNumNodes(numNodes);
deploymentOptions.setUsername(annotation.username());
diff --git
a/modules/common/cassandra-installer/src/main/java/org/rhq/storage/installer/StorageInstaller.java
b/modules/common/cassandra-installer/src/main/java/org/rhq/storage/installer/StorageInstaller.java
index 66849a8..ae2869b 100644
---
a/modules/common/cassandra-installer/src/main/java/org/rhq/storage/installer/StorageInstaller.java
+++
b/modules/common/cassandra-installer/src/main/java/org/rhq/storage/installer/StorageInstaller.java
@@ -56,6 +56,7 @@ import org.apache.commons.logging.LogFactory;
import org.rhq.cassandra.Deployer;
import org.rhq.cassandra.DeploymentOptions;
+import org.rhq.cassandra.DeploymentOptionsFactory;
import org.rhq.cassandra.installer.RMIContextFactory;
import org.rhq.core.util.PropertiesFileUpdate;
import org.rhq.core.util.StringUtil;
@@ -179,7 +180,8 @@ public class StorageInstaller {
printUsage();
return STATUS_SHOW_USAGE;
} else {
- DeploymentOptions deploymentOptions = new DeploymentOptions();
+ DeploymentOptionsFactory factory = new DeploymentOptionsFactory();
+ DeploymentOptions deploymentOptions = factory.newDeploymentOptions();
File basedir;
if (cmdLine.hasOption("dir")) {
diff --git a/modules/common/cassandra-schema/pom.xml
b/modules/common/cassandra-schema/pom.xml
index e60f833..4651a7e 100644
--- a/modules/common/cassandra-schema/pom.xml
+++ b/modules/common/cassandra-schema/pom.xml
@@ -20,6 +20,12 @@
</dependency>
<dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>rhq-cassandra-util</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>${cassandra.driver.version}</version>
diff --git
a/modules/common/cassandra-schema/src/main/java/org/rhq/cassandra/schema/SchemaManager.java
b/modules/common/cassandra-schema/src/main/java/org/rhq/cassandra/schema/SchemaManager.java
index 4982c16..8b44bd2 100644
---
a/modules/common/cassandra-schema/src/main/java/org/rhq/cassandra/schema/SchemaManager.java
+++
b/modules/common/cassandra-schema/src/main/java/org/rhq/cassandra/schema/SchemaManager.java
@@ -25,13 +25,10 @@
package org.rhq.cassandra.schema;
-import static com.datastax.driver.core.ProtocolOptions.Compression.SNAPPY;
-
import java.util.ArrayList;
import java.util.List;
import com.datastax.driver.core.Cluster;
-import com.datastax.driver.core.ProtocolOptions;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.SimpleAuthInfoProvider;
@@ -41,6 +38,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.rhq.cassandra.CassandraNode;
+import org.rhq.cassandra.util.ClusterBuilder;
import org.rhq.core.util.StringUtil;
/**
@@ -60,8 +58,6 @@ public class SchemaManager {
private List<CassandraNode> nodes = new ArrayList<CassandraNode>();
- private ProtocolOptions.Compression compression = SNAPPY;
-
public SchemaManager(String username, String password, String... nodes) {
try {
this.username = username;
@@ -90,20 +86,6 @@ public class SchemaManager {
}
}
- public SchemaManager(String username, String password, List<CassandraNode>
nodes,
- ProtocolOptions.Compression compression) {
- try {
- this.username = username;
- this.password = password;
- this.nodes = nodes;
- this.compression = compression;
-
- initCluster();
- } catch (NoHostAvailableException e) {
- throw new RuntimeException("Unable create session.", e);
- }
- }
-
private void initCluster() throws NoHostAvailableException {
String[] hostNames = new String[nodes.size()];
for (int i = 0; i < hostNames.length; ++i) {
@@ -113,16 +95,15 @@ public class SchemaManager {
if (log.isDebugEnabled()) {
log.debug("Initializing session to connect to " +
StringUtil.arrayToString(hostNames));
} else {
- log.debug("Initializing session");
+ log.info("Initializing session");
}
SimpleAuthInfoProvider authInfoProvider = new SimpleAuthInfoProvider();
authInfoProvider.add("username",
"cassandra").add("password", "cassandra");
- Cluster cluster = Cluster.builder()
+ Cluster cluster = new ClusterBuilder()
.addContactPoints(hostNames)
.withAuthInfoProvider(authInfoProvider)
- .withCompression(compression)
.withPort(nodes.get(0).getNativeTransportPort())
.build();
session = cluster.connect("system");
diff --git a/modules/common/cassandra-util/pom.xml
b/modules/common/cassandra-util/pom.xml
new file mode 100644
index 0000000..fc67140
--- /dev/null
+++ b/modules/common/cassandra-util/pom.xml
@@ -0,0 +1,75 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.rhq</groupId>
+ <artifactId>rhq-common-parent</artifactId>
+ <version>4.7.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>rhq-cassandra-util</artifactId>
+ <name>RHQ Cassandra Util</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.datastax.cassandra</groupId>
+ <artifactId>cassandra-driver-core</artifactId>
+ <version>${cassandra.driver.version}</version>
+ </dependency>
+ </dependencies>
+
+ <profiles>
+ <profile>
+ <id>dev</id>
+ <properties>
+ <rhq.rootDir>../../..</rhq.rootDir>
+
<rhq.containerDir>${rhq.rootDir}/${rhq.defaultDevContainerPath}</rhq.containerDir>
+
<rhq.deploymentDir>${rhq.containerDir}/${rhq.earLibDir}</rhq.deploymentDir>
+ </properties>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>deploy</id>
+ <phase>package</phase>
+ <configuration>
+ <target>
+ <mkdir dir="${rhq.deploymentDir}"/>
+ <property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar"/>
+ <echo>*** Updating ${deployment.file}...</echo>
+ <jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}"/>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+
+ <execution>
+ <id>undeploy</id>
+ <phase>clean</phase>
+ <configuration>
+ <target>
+ <property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar"/>
+ <echo>*** Deleting ${deployment.file}...</echo>
+ <delete file="${deployment.file}"/>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+</project>
diff --git
a/modules/common/cassandra-util/src/main/java/org/rhq/cassandra/util/ClusterBuilder.java
b/modules/common/cassandra-util/src/main/java/org/rhq/cassandra/util/ClusterBuilder.java
new file mode 100644
index 0000000..6502df9
--- /dev/null
+++
b/modules/common/cassandra-util/src/main/java/org/rhq/cassandra/util/ClusterBuilder.java
@@ -0,0 +1,96 @@
+/*
+ *
+ * * RHQ Management Platform
+ * * Copyright (C) 2005-2012 Red Hat, Inc.
+ * * All rights reserved.
+ * *
+ * * This program is free software; you can redistribute it and/or modify
+ * * it under the terms of the GNU General Public License, version 2, as
+ * * published by the Free Software Foundation, and/or the GNU Lesser
+ * * General Public License, version 2.1, also as published by the Free
+ * * Software Foundation.
+ * *
+ * * This program is distributed in the hope that it will be useful,
+ * * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * * GNU General Public License and the GNU Lesser General Public License
+ * * for more details.
+ * *
+ * * You should have received a copy of the GNU General Public License
+ * * and the GNU Lesser General Public License along with this program;
+ * * if not, write to the Free Software Foundation, Inc.,
+ * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+package org.rhq.cassandra.util;
+
+import com.datastax.driver.core.AuthInfoProvider;
+import com.datastax.driver.core.Cluster;
+import com.datastax.driver.core.ProtocolOptions;
+
+/**
+ * @author John Sanda
+ */
+public class ClusterBuilder {
+
+ private Cluster.Builder builder = Cluster.builder();
+
+ private ProtocolOptions.Compression compression;
+
+ /**
+ * @see Cluster.Builder#addContactPoints(String...)
+ */
+ public ClusterBuilder addContactPoints(String... addresses) {
+ builder.addContactPoints(addresses);
+ return this;
+ }
+
+ /**
+ * @see
Cluster.Builder#withAuthInfoProvider(com.datastax.driver.core.AuthInfoProvider)
+ */
+ public ClusterBuilder withAuthInfoProvider(AuthInfoProvider authInfoProvider) {
+ builder.withAuthInfoProvider(authInfoProvider);
+ return this;
+ }
+
+ /**
+ * This method will throw an IllegalArgumentException if you try to use snappy
+ * compression while running on an IBM JRE. See <a
href="https://bugzilla.redhat.com/show_bug.cgi?id=907485">BZ
907485</a>
+ * for details.
+ *
+ * @see
Cluster.Builder#withCompression(com.datastax.driver.core.ProtocolOptions.Compression)
+ */
+ public ClusterBuilder withCompression(ProtocolOptions.Compression compression) {
+ if (isIBMJRE() && compression == ProtocolOptions.Compression.SNAPPY) {
+ throw new IllegalArgumentException(compression.name() + " compression
cannot be used with an IBM JRE. " +
+ "See
https://bugzilla.redhat.com/show_bug.cgi?id=907485 for
details.");
+ }
+ this.compression = compression;
+ builder.withCompression(compression);
+ return this;
+ }
+
+ /**
+ * @see Cluster.Builder#withPort(int)
+ */
+ public ClusterBuilder withPort(int port) {
+ builder.withPort(port);
+ return this;
+ }
+
+ /**
+ * @see com.datastax.driver.core.Cluster.Builder#build()
+ */
+ public Cluster build() {
+ if (compression == null && !isIBMJRE()) {
+ builder.withCompression(ProtocolOptions.Compression.SNAPPY);
+ }
+ return builder.build();
+ }
+
+ private boolean isIBMJRE() {
+ return
System.getProperty("java.vm.vendor").startsWith("IBM");
+ }
+
+}
diff --git a/modules/common/pom.xml b/modules/common/pom.xml
index b3210cb..7d0cf1c 100644
--- a/modules/common/pom.xml
+++ b/modules/common/pom.xml
@@ -30,6 +30,7 @@
<module>ant-bundle</module>
<module>drift</module>
<module>jboss-as-dmr-client</module>
+ <module>cassandra-util</module>
<module>cassandra-schema</module>
<module>cassandra-ccm</module>
<module>cassandra-installer</module>
diff --git a/modules/enterprise/server/installer/pom.xml
b/modules/enterprise/server/installer/pom.xml
index 8619993..f9bee54 100644
--- a/modules/enterprise/server/installer/pom.xml
+++ b/modules/enterprise/server/installer/pom.xml
@@ -165,6 +165,11 @@
</artifactItem>
<artifactItem>
<groupId>org.rhq</groupId>
+
<artifactId>rhq-cassandra-util</artifactId>
+ <version>${project.version}</version>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.rhq</groupId>
<artifactId>rhq-cassandra-ccm-core</artifactId>
<version>${project.version}</version>
</artifactItem>
diff --git a/modules/enterprise/server/installer/src/main/resources/module/main/module.xml
b/modules/enterprise/server/installer/src/main/resources/module/main/module.xml
index 8686d74..2854563 100644
--- a/modules/enterprise/server/installer/src/main/resources/module/main/module.xml
+++ b/modules/enterprise/server/installer/src/main/resources/module/main/module.xml
@@ -15,6 +15,7 @@
<resource-root path="i18nlog-${i18nlog.version}.jar"/>
<resource-root
path="rhq-cassandra-ccm-core-${project.version}.jar"/>
<resource-root
path="rhq-cassandra-schema-${project.version}.jar"/>
+ <resource-root
path="rhq-cassandra-util-${project.version}.jar"/>
</resources>
<dependencies>
diff --git a/modules/enterprise/server/jar/pom.xml
b/modules/enterprise/server/jar/pom.xml
index 323e7c6..e695181 100644
--- a/modules/enterprise/server/jar/pom.xml
+++ b/modules/enterprise/server/jar/pom.xml
@@ -107,6 +107,18 @@
</dependency>
<dependency>
+ <groupId>org.rhq</groupId>
+ <artifactId>rhq-cassandra-util</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>com.datastax.cassandra</groupId>
+ <artifactId>cassandra-driver-core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>${cassandra.driver.version}</version>
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cassandra/SessionManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cassandra/SessionManagerBean.java
index 88de4e2..3dbe0bf 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cassandra/SessionManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cassandra/SessionManagerBean.java
@@ -25,8 +25,6 @@
package org.rhq.enterprise.server.cassandra;
-import static com.datastax.driver.core.ProtocolOptions.Compression.SNAPPY;
-
import javax.annotation.PostConstruct;
import javax.ejb.Singleton;
@@ -35,6 +33,7 @@ import com.datastax.driver.core.Session;
import com.datastax.driver.core.SimpleAuthInfoProvider;
import org.rhq.cassandra.CassandraNode;
+import org.rhq.cassandra.util.ClusterBuilder;
import org.rhq.server.metrics.CQLException;
import org.rhq.server.metrics.MetricsConfiguration;
@@ -79,10 +78,9 @@ public class SessionManagerBean {
Session.class.getName() + " object.");
}
- Cluster cluster = Cluster.builder()
+ Cluster cluster = new ClusterBuilder()
.addContactPoints(hostNames)
.withAuthInfoProvider(new
SimpleAuthInfoProvider().add("username", username).add("password",
password))
- .withCompression(SNAPPY)
.withPort(port)
.build();
session = cluster.connect("rhq");
diff --git a/modules/helpers/metrics-simulator/pom.xml
b/modules/helpers/metrics-simulator/pom.xml
index c775d22..f5d2fcd 100644
--- a/modules/helpers/metrics-simulator/pom.xml
+++ b/modules/helpers/metrics-simulator/pom.xml
@@ -23,18 +23,6 @@
<version>${project.version}</version>
</dependency>
- <!--<dependency>-->
- <!--<groupId>org.codehaus.jackson</groupId>-->
- <!--<artifactId>jackson-core-asl</artifactId>-->
- <!--<version>1.9.9</version>-->
- <!--</dependency>-->
-
- <!--<dependency>-->
- <!--<groupId>org.codehaus.jackson</groupId>-->
- <!--<artifactId>jackson-mapper-asl</artifactId>-->
- <!--<version>1.9.9</version>-->
- <!--</dependency>-->
-
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
diff --git
a/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/Simulator.java
b/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/Simulator.java
index ef352bd..4de9651 100644
---
a/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/Simulator.java
+++
b/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/Simulator.java
@@ -51,7 +51,9 @@ import org.rhq.cassandra.CassandraClusterManager;
import org.rhq.cassandra.CassandraNode;
import org.rhq.cassandra.ClusterInitService;
import org.rhq.cassandra.DeploymentOptions;
+import org.rhq.cassandra.DeploymentOptionsFactory;
import org.rhq.cassandra.schema.SchemaManager;
+import org.rhq.cassandra.util.ClusterBuilder;
import org.rhq.metrics.simulator.plan.ClusterConfig;
import org.rhq.metrics.simulator.plan.ScheduleGroup;
import org.rhq.metrics.simulator.plan.SimulationPlan;
@@ -82,10 +84,17 @@ public class Simulator implements ShutdownManager {
});
List<CassandraNode> nodes = initCluster(plan);
- ProtocolOptions.Compression compression =
Enum.valueOf(ProtocolOptions.Compression.class,
- plan.getClientCompression().toUpperCase());
- createSchema(nodes, compression);
- Session session = createSession(nodes, compression);
+
+ createSchema(nodes);
+
+ Session session;
+ if (plan.getClientCompression() == null) {
+ session = createSession(nodes);
+ } else {
+ ProtocolOptions.Compression compression =
Enum.valueOf(ProtocolOptions.Compression.class,
+ plan.getClientCompression().toUpperCase());
+ session = createSession(nodes, compression);
+ }
MetricsServer metricsServer = new MetricsServer();
metricsServer.setSession(session);
@@ -174,12 +183,15 @@ public class Simulator implements ShutdownManager {
log.info("Deploying cluster to " + clusterDir);
clusterDir.mkdirs();
- DeploymentOptions deploymentOptions = new DeploymentOptions();
+ DeploymentOptionsFactory factory = new DeploymentOptionsFactory();
+ DeploymentOptions deploymentOptions = factory.newDeploymentOptions();
deploymentOptions.setClusterDir(clusterDir.getAbsolutePath());
deploymentOptions.setNumNodes(clusterConfig.getNumNodes());
deploymentOptions.setHeapSize(clusterConfig.getHeapSize());
deploymentOptions.setHeapNewSize(clusterConfig.getHeapNewSize());
- deploymentOptions.setStackSize(clusterConfig.getStackSize());
+ if (clusterConfig.getStackSize() != null) {
+ deploymentOptions.setStackSize(clusterConfig.getStackSize());
+ }
deploymentOptions.setLoggingLevel("INFO");
deploymentOptions.load();
@@ -201,10 +213,10 @@ public class Simulator implements ShutdownManager {
clusterInitService.waitForClusterToStart(nodes, nodes.size(), 3000, 20);
}
- private void createSchema(List<CassandraNode> nodes,
ProtocolOptions.Compression compression) {
+ private void createSchema(List<CassandraNode> nodes) {
try {
log.info("Creating schema");
- SchemaManager schemaManager = new SchemaManager("rhqadmin",
"rhqadmin", nodes, compression);
+ SchemaManager schemaManager = new SchemaManager("rhqadmin",
"rhqadmin", nodes);
schemaManager.createSchema();
schemaManager.updateSchema();
} catch (Exception e) {
@@ -212,29 +224,58 @@ public class Simulator implements ShutdownManager {
}
}
+ private Session createSession(List<CassandraNode> nodes) throws
NoHostAvailableException {
+ try {
+ SimpleAuthInfoProvider authInfoProvider = new SimpleAuthInfoProvider();
+ authInfoProvider.add("username",
"rhqadmin").add("password", "rhqadmin");
+
+ Cluster cluster = new ClusterBuilder()
+ .addContactPoints(getHostNames(nodes))
+ .withAuthInfoProvider(authInfoProvider)
+ .build();
+
+ log.debug("Created cluster object with " +
cluster.getConfiguration().getProtocolOptions().getCompression()
+ + " compression.");
+
+ return initSession(cluster);
+ } catch (Exception e) {
+ log.error("Failed to start simulator. Unable to create " +
Session.class, e);
+ throw new RuntimeException("Failed to start simulator. Unable to create
" + Session.class, e);
+ }
+ }
+
private Session createSession(List<CassandraNode> nodes,
ProtocolOptions.Compression compression)
throws NoHostAvailableException {
try {
+ log.debug("Creating session using " + compression.name() + "
compression");
+
SimpleAuthInfoProvider authInfoProvider = new SimpleAuthInfoProvider();
authInfoProvider.add("username",
"rhqadmin").add("password", "rhqadmin");
- Cluster cluster = Cluster.builder()
+ Cluster cluster = new ClusterBuilder()
.addContactPoints(getHostNames(nodes))
.withAuthInfoProvider(authInfoProvider)
.withCompression(compression)
.build();
- NodeFailureListener listener = new NodeFailureListener();
- for (Host host : cluster.getMetadata().getAllHosts()) {
- host.getMonitor().register(listener);
- }
+ log.debug("Created cluster object with " +
cluster.getConfiguration().getProtocolOptions().getCompression()
+ + " compression.");
- return cluster.connect("rhq");
+ return initSession(cluster);
} catch (Exception e) {
throw new RuntimeException("Failed to start simulator. Unable to create
" + Session.class, e);
}
}
+ private Session initSession(Cluster cluster) {
+ NodeFailureListener listener = new NodeFailureListener();
+ for (Host host : cluster.getMetadata().getAllHosts()) {
+ host.getMonitor().register(listener);
+ }
+
+ return cluster.connect("rhq");
+ }
+
private String[] getHostNames(List<CassandraNode> nodes) {
String[] hostnames = new String[nodes.size()];
for (int i = 0; i < hostnames.length; ++i) {
diff --git
a/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/SimulatorCLI.java
b/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/SimulatorCLI.java
index 019e792..b026752 100644
---
a/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/SimulatorCLI.java
+++
b/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/SimulatorCLI.java
@@ -34,6 +34,8 @@ import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.rhq.metrics.simulator.plan.SimulationPlan;
import org.rhq.metrics.simulator.plan.SimulationPlanner;
@@ -43,6 +45,8 @@ import org.rhq.metrics.simulator.plan.SimulationPlanner;
*/
public class SimulatorCLI {
+ private final Log log = LogFactory.getLog(SimulatorCLI.class);
+
private Options options;
public SimulatorCLI() {
@@ -112,6 +116,7 @@ public class SimulatorCLI {
try {
cli.exec(args);
} catch (Exception e) {
+ cli.log.error("There was an unxpected error", e);
System.exit(1);
}
}
diff --git
a/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/plan/ClusterConfig.java
b/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/plan/ClusterConfig.java
index 0df6636..af3ffeb 100644
---
a/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/plan/ClusterConfig.java
+++
b/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/plan/ClusterConfig.java
@@ -42,7 +42,7 @@ public class ClusterConfig {
private String heapNewSize = "64M";
- private String stackSize = "180k";
+ private String stackSize;
public boolean isEmbedded() {
return embedded;
diff --git
a/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/plan/SimulationPlan.java
b/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/plan/SimulationPlan.java
index 48f66ee..d2c62c0 100644
---
a/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/plan/SimulationPlan.java
+++
b/modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/plan/SimulationPlan.java
@@ -51,7 +51,7 @@ public class SimulationPlan {
private ClusterConfig clusterConfig;
- private String clientCompression = "none";
+ private String clientCompression = null;
public List<ScheduleGroup> getScheduleSets() {
return scheduleSets;