Author: [email protected]
Date: Fri Feb 10 09:12:57 2012
New Revision: 2076
Log:
[AMDATUCASSANDRA-150] Part 3:
- Made the cassandra server packages in the cassandra-application bundle private
- Embedded and exposed the Thrift API packages in the cassandra-client bundle
- Changed the cassandra server package dependencies in the Hector PM to optional
- Removed dependencies with cassandra server packages from most bundles
Added:
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraServerConfigurationService.java
- copied, changed from r2075,
/trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraConfigurationService.java
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraServerConfigurationServiceImpl.java
- copied, changed from r2075,
/trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraConfigurationServiceImpl.java
Modified:
trunk/amdatu-cassandra/cassandra-application/pom.xml
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraConfigurationService.java
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/osgi/Activator.java
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraConfigurationServiceImpl.java
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraDaemonActivatorImpl.java
trunk/amdatu-cassandra/cassandra-application/src/test/java/org/amdatu/cassandra/test/unit/application/CassandraUnitTestBase.java
trunk/amdatu-cassandra/cassandra-client/pom.xml
trunk/amdatu-cassandra/cassandra-client/src/main/java/org/amdatu/cassandra/client/service/CassandraClientActivatorServiceImpl.java
trunk/amdatu-cassandra/cassandra-client/src/main/java/org/amdatu/cassandra/client/service/CassandraClientServiceImpl.java
trunk/amdatu-cassandra/cassandra-client/src/test/java/org/amdatu/cassandra/test/unit/client/CRUDOperationsTest.java
trunk/amdatu-cassandra/cassandra-client/src/test/java/org/amdatu/cassandra/test/unit/client/CassandraUnitTestBase.java
trunk/amdatu-cassandra/cassandra-client/src/test/java/org/amdatu/cassandra/test/unit/client/mock/LogServiceMock.java
trunk/amdatu-cassandra/cassandra-listener/pom.xml
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/ColumnFamilyDefinition.java
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/osgi/Activator.java
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/CassandraUpdateListenerImpl.java
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/ColumnFamilyHandler.java
trunk/amdatu-cassandra/cassandra-listener/src/test/java/org/amdatu/cassandra/test/unit/listener/ListenerTest.java
trunk/amdatu-cassandra/cassandra-persistencemanager-hector/pom.xml
trunk/amdatu-cassandra/test-integration/base/src/main/java/org/amdatu/cassandra/test/integration/base/CassandraFixture.java
Modified: trunk/amdatu-cassandra/cassandra-application/pom.xml
==============================================================================
--- trunk/amdatu-cassandra/cassandra-application/pom.xml (original)
+++ trunk/amdatu-cassandra/cassandra-application/pom.xml Fri Feb 10
09:12:57 2012
@@ -99,6 +99,11 @@
<Bundle-SymbolicName>org.amdatu.cassandra.application</Bundle-SymbolicName>
<Embed-Dependency>!apache-cassandra|apache-cassandra-thrift|libthrift;scope=compile</Embed-Dependency>
<Embed-Transitive>true</Embed-Transitive>
+ <Private-Package>
+ org.apache.cassandra.*,
+ org.apache.thrift.*,
+ org.amdatu.cassandra.application.*
+ </Private-Package>
<Import-Package>
!com.ibm.uvm.tools,
!com.sun.jdmk.comm,
@@ -108,33 +113,30 @@
!javax.jmdns,
!javax.jms,
!javax.mail.*,
+ !javax.servlet.jsp,
!javax.swing.*,
!jline,
!joptsimple,
!junit.framework,
+ !org.apache.commons.cli,
+ !org.apache.commons.codec.*,
+ !org.apache.commons.httpclient.*,
+ !org.apache.commons.logging.*,
+ !org.apache.commons.net.ftp,
!org.apache.http.*,
+ !org.apache.jasper.*,
!org.apache.tools.ant.*,
!org.apache.velocity.*,
!org.jboss.netty.*,
!org.joda.time,
!org.znerd.xmlenc,
!org.mortbay.*,
- !org.apache.commons.cli,
- !org.apache.commons.codec.*,
!org.kosmix.kosmosfs.access,
- !org.apache.commons.httpclient.*,
!org.jets3t.*,
- !org.apache.jasper.*,
- !org.apache.commons.logging.*,
- !org.apache.commons.net.ftp,
- !javax.servlet.jsp,
*
</Import-Package>
<Export-Package>
- org.amdatu.cassandra.*;version="1.0.0",
-
org.apache.cassandra.thrift;-split-package:=merge-first;version="1.0.0",
- org.apache.cassandra.*;version="1.0.0",
- org.apache.thrift.*;version="1.0.0",
+ org.amdatu.cassandra.application;version="1.0.0"
</Export-Package>
</instructions>
</configuration>
Copied:
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraServerConfigurationService.java
(from r2075,
/trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraConfigurationService.java)
==============================================================================
---
/trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraConfigurationService.java
(original)
+++
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraServerConfigurationService.java
Fri Feb 10 09:12:57 2012
@@ -1,6 +1,6 @@
/*
* Copyright (c) 2010, 2011 The Amdatu Foundation
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
@@ -18,10 +18,10 @@
/**
* Interface for the Cassandra Configuration Service.
- *
+ *
* @author ivol
*/
-public interface CassandraConfigurationService {
+public interface CassandraServerConfigurationService {
/**
* The service's configuration PID.
*/
@@ -101,35 +101,35 @@
/**
* Returns if this Cassandra node is running in auto bootstrap mode. Auto
bootstrap mode is
* enabled for new nodes joining the cluster.
- *
+ *
* @return true if auto bootstrap is enabled, false otherwise
*/
boolean isAutoBootstrapMode();
/**
* Returns the RPC address to be used by Thrift clients.
- *
+ *
* @return the RPC address.
*/
String getRPCAddress();
/**
* Returns the RPC port to be used by Thrift clients.
- *
+ *
* @return the RPC port.
*/
int getRPCPort();
/**
* Returns the Storage port.
- *
+ *
* @return the Storage port.
*/
int getStoragePort();
/**
* Returns the name of the cluster that this node is part of.
- *
+ *
* @return the name of the cluster that this node is part of.
*/
String getClustername();
Modified:
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/osgi/Activator.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/osgi/Activator.java
(original)
+++
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/osgi/Activator.java
Fri Feb 10 09:12:57 2012
@@ -15,9 +15,9 @@
*/
package org.amdatu.cassandra.application.osgi;
-import org.amdatu.cassandra.application.CassandraConfigurationService;
-import
org.amdatu.cassandra.application.service.CassandraConfigurationServiceImpl;
+import org.amdatu.cassandra.application.CassandraServerConfigurationService;
import org.amdatu.cassandra.application.service.CassandraDaemonActivatorImpl;
+import
org.amdatu.cassandra.application.service.CassandraServerConfigurationServiceImpl;
import org.amdatu.core.config.templates.ConfigTemplateManager;
import org.apache.felix.dm.DependencyActivatorBase;
@@ -43,18 +43,18 @@
// Register the Cassandra configuration service
manager.add(
createComponent()
- .setImplementation(CassandraConfigurationServiceImpl.class)
- .setInterface(CassandraConfigurationService.class.getName(),
null)
+
.setImplementation(CassandraServerConfigurationServiceImpl.class)
+
.setInterface(CassandraServerConfigurationService.class.getName(), null)
.add(createServiceDependency().setService(LogService.class).setRequired(true))
.add(createServiceDependency().setService(ConfigTemplateManager.class).setRequired(true))
-
.add(createConfigurationDependency().setPid(CassandraConfigurationServiceImpl.PID)));
+
.add(createConfigurationDependency().setPid(CassandraServerConfigurationService.PID)));
// Register the Cassandra daemon activator
manager.add(
createComponent()
.setImplementation(CassandraDaemonActivatorImpl.class)
.add(createServiceDependency().setService(LogService.class).setRequired(true))
-
.add(createServiceDependency().setService(CassandraConfigurationService.class).setRequired(true)));
+
.add(createServiceDependency().setService(CassandraServerConfigurationService.class).setRequired(true)));
}
/**
Modified:
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraDaemonActivatorImpl.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraDaemonActivatorImpl.java
(original)
+++
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraDaemonActivatorImpl.java
Fri Feb 10 09:12:57 2012
@@ -15,7 +15,7 @@
*/
package org.amdatu.cassandra.application.service;
-import org.amdatu.cassandra.application.CassandraConfigurationService;
+import org.amdatu.cassandra.application.CassandraServerConfigurationService;
import java.util.ArrayList;
import java.util.List;
@@ -37,7 +37,7 @@
public class CassandraDaemonActivatorImpl {
// Service dependencies, injected by the framework
private volatile LogService m_logService;
- private volatile CassandraConfigurationService m_configuration = null;
+ private volatile CassandraServerConfigurationService m_configuration =
null;
// The Cassandra daemon
private CassandraDaemon m_daemon = null;
Copied:
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraServerConfigurationServiceImpl.java
(from r2075,
/trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraConfigurationServiceImpl.java)
==============================================================================
---
/trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraConfigurationServiceImpl.java
(original)
+++
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraServerConfigurationServiceImpl.java
Fri Feb 10 09:12:57 2012
@@ -1,6 +1,6 @@
/*
* Copyright (c) 2010, 2011 The Amdatu Foundation
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
@@ -15,7 +15,7 @@
*/
package org.amdatu.cassandra.application.service;
-import org.amdatu.cassandra.application.CassandraConfigurationService;
+import org.amdatu.cassandra.application.CassandraServerConfigurationService;
import org.amdatu.core.config.templates.ConfigTemplateCallbackHandler;
import org.amdatu.core.config.templates.ConfigTemplateManager;
@@ -33,10 +33,10 @@
/**
* This class provides utility methods to prepare Cassandra configuration
before starting it.
- *
+ *
* @author ivol
*/
-public class CassandraConfigurationServiceImpl implements
CassandraConfigurationService, ManagedService {
+public class CassandraServerConfigurationServiceImpl implements
CassandraServerConfigurationService, ManagedService {
// Statics
private static final String STORAGE_CONF_SOURCE = "conf/cassandra.yaml";
private static final String LOG4J_CONF_SOURCE = "conf/log4j.properties";
@@ -71,7 +71,7 @@
// Initialize storage configuration
// Load the URL of the storage-conf.xml and write it file using the
config template
// manager, which automatically replaces configuration entries in that
file
- File storageConfigFile = new File(m_workDir,
CassandraConfigurationService.STORAGE_CONF_XML);
+ File storageConfigFile = new File(m_workDir, STORAGE_CONF_XML);
Bundle bundle = m_bundleContext.getBundle();
URL url = bundle.getResource(STORAGE_CONF_SOURCE);
try {
@@ -86,7 +86,7 @@
}
// Initialize log4j
- File log4jPropertiesFile = new File(m_workDir,
CassandraConfigurationService.LOG4J_CONF_TARGET);
+ File log4jPropertiesFile = new File(m_workDir, LOG4J_CONF_TARGET);
url = bundle.getResource(LOG4J_CONF_SOURCE);
ClassLoader oldClassLoader =
Thread.currentThread().getContextClassLoader();
try {
@@ -199,12 +199,12 @@
private String m_amdatuDir = System.getProperty("amdatu.dir");
public String getValue(final String pid, final String property, final
Object configValue) {
- if (CassandraConfigurationService.PID.equals(pid) && m_amdatuDir
!= null) {
- if
(CassandraConfigurationService.CONFIG_WORKDIR.equals(property)
- ||
CassandraConfigurationService.COMMITLOG_DIR.equals(property)
- ||
CassandraConfigurationService.DATAFILE_DIR.equals(property)
- ||
CassandraConfigurationService.SAVEDCACHES_DIR.equals(property)
- ||
CassandraConfigurationService.LOG4JLOG_DIR.equals(property)) {
+ if (PID.equals(pid) && m_amdatuDir != null) {
+ if (CONFIG_WORKDIR.equals(property)
+ || COMMITLOG_DIR.equals(property)
+ || DATAFILE_DIR.equals(property)
+ || SAVEDCACHES_DIR.equals(property)
+ || LOG4JLOG_DIR.equals(property)) {
// If amdatu.dir is provided as a system property, convert
the directories to absolute directories
String dir = m_amdatuDir + File.separator +
configValue.toString();
dir = dir.replace("\\", "/");
Modified:
trunk/amdatu-cassandra/cassandra-application/src/test/java/org/amdatu/cassandra/test/unit/application/CassandraUnitTestBase.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-application/src/test/java/org/amdatu/cassandra/test/unit/application/CassandraUnitTestBase.java
(original)
+++
trunk/amdatu-cassandra/cassandra-application/src/test/java/org/amdatu/cassandra/test/unit/application/CassandraUnitTestBase.java
Fri Feb 10 09:12:57 2012
@@ -22,11 +22,12 @@
import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.thrift.CassandraDaemon;
+
/**
* This class implements the base class for all Unit tests of this bundle. It
starts an
* in-VM Cassandra to run the test against. It mocks the required service
dependencies,
* like the LogService, ConfigurationService and EventAdmin.
- *
+ *
* @author <a href=mailto:[email protected]>Amdatu Project Team</a>
*/
public abstract class CassandraUnitTestBase {
@@ -53,7 +54,7 @@
* If embedCassandra is true, the unit test will embed an actual Cassandra
daemon in the persistence manager,
* making this more a kind of integration test executed from a unit test.
If embedCassandra is false, all
* method calls to Cassandra will be mocked (simulated).
- *
+ *
* @param embedCassandra
*/
public void createDaemon() throws Exception {
Modified: trunk/amdatu-cassandra/cassandra-client/pom.xml
==============================================================================
--- trunk/amdatu-cassandra/cassandra-client/pom.xml (original)
+++ trunk/amdatu-cassandra/cassandra-client/pom.xml Fri Feb 10 09:12:57 2012
@@ -29,9 +29,34 @@
<dependencies>
<dependency>
- <groupId>org.amdatu.cassandra</groupId>
- <artifactId>org.amdatu.cassandra.application</artifactId>
- <type>bundle</type>
+ <groupId>org.apache.cassandra</groupId>
+ <artifactId>cassandra-all</artifactId>
+ <version>${cassandra.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cassandra</groupId>
+ <artifactId>cassandra-thrift</artifactId>
+ <version>${cassandra.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.thrift</groupId>
+ <artifactId>libthrift</artifactId>
+ <version>0.6.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-jdk14</artifactId>
+ <version>${slf4j.version}</version>
+ <scope>compile</scope>
</dependency>
</dependencies>
@@ -47,8 +72,33 @@
<instructions>
<Bundle-Activator>org.amdatu.cassandra.client.osgi.Activator</Bundle-Activator>
<Bundle-SymbolicName>org.amdatu.cassandra.client</Bundle-SymbolicName>
+ <Embed-Dependency>*;scope=compile</Embed-Dependency>
+ <Embed-Transitive>true</Embed-Transitive>
+ <Import-Package>
+ !com.ibm.uvm.tools,
+ !com.sun.jdmk.comm,
+ !com.sun.jna,
+ !com.thoughtworks.paranamer,
+ !edu.emory.mathcs.backport.java.util,
+ !javax.jmdns,
+ !javax.jms,
+ !javax.mail.*,
+ !javax.swing.*,
+ !joptsimple,
+ !junit.framework,
+ !org.apache.avalon.framework.logger,
+ !org.apache.hadoop.*,
+ !org.apache.log,
+ !org.apache.tools.ant.*,
+ !org.apache.velocity.*,
+ !org.jboss.netty.*,
+ !org.joda.time,
+ *
+ </Import-Package>
<Export-Package>
- org.amdatu.cassandra.client.*;version="1.0.0"
+ org.amdatu.cassandra.client;version="1.0.0",
+
org.apache.cassandra.thrift;-split-package:=merge-first;version="1.0.0",
+ org.apache.thrift.*;version="1.0.0",
</Export-Package>
</instructions>
</configuration>
Modified:
trunk/amdatu-cassandra/cassandra-client/src/main/java/org/amdatu/cassandra/client/service/CassandraClientActivatorServiceImpl.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-client/src/main/java/org/amdatu/cassandra/client/service/CassandraClientActivatorServiceImpl.java
(original)
+++
trunk/amdatu-cassandra/cassandra-client/src/main/java/org/amdatu/cassandra/client/service/CassandraClientActivatorServiceImpl.java
Fri Feb 10 09:12:57 2012
@@ -18,11 +18,10 @@
import org.amdatu.cassandra.client.CassandraClientConfigurationService;
import org.amdatu.cassandra.client.CassandraDaemonAvailable;
-import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.thrift.Cassandra;
-import org.apache.cassandra.thrift.TBinaryProtocol;
import org.apache.felix.dm.Component;
import org.apache.felix.dm.DependencyManager;
+import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;
@@ -44,7 +43,6 @@
// Timeout for the initial Thrift connection
private static final int THRIFT_RETRIES = 3;
private static final int THRIFT_TIMEOUT = 3000;
- private static final int DAEMON_TIMEOUT = 5000;
// Service dependencies injected by the dependency manager
private volatile DependencyManager m_dependencyManager;
@@ -67,7 +65,7 @@
if (m_activatorThread != null && m_activatorThread.isAlive()) {
m_activatorThread.interrupt();
}
-
+
// Unregister the CassandraDaemonAvailabkle service component
if (m_serviceAvailableComponent != null) {
m_dependencyManager.remove(m_serviceAvailableComponent);
@@ -81,41 +79,53 @@
// established as soon as the daemon is running.
testThriftConnection();
+ // Register a new CassandraDaemonAvailable service
+ CassandraDaemonAvailable service = new
CassandraDaemonAvailable() {
+ };
+
+ m_serviceAvailableComponent =
m_dependencyManager.createComponent()
+ .setInterface(CassandraDaemonAvailable.class.getName(),
null)
+ .setImplementation(service);
+ m_dependencyManager.add(m_serviceAvailableComponent);
+
+ // FIXME: In the new approach with a strict separation between
client and server, we can no
+ // longer monitor the operation mode of the Cassandra daemon
(Besides, there might be more then
+ // one). So the code below can no longer work. The question is
if this does not lead to any
+ // problems, this needs to be tested thoroughly.
+
// Now wait until the operation mode of the daemon becomes
"Normal". In auto bootstrap mode this can
// take quite a while (2 minutes minimum). In a single node
cluster this will be almost immediately.
// Unfortunately the operation mode is not covered by any enum
value.
- String operationMode =
StorageService.instance.getOperationMode();
- while (!"Normal".equals(operationMode) && !isInterrupted() &&
isAlive()) {
- m_logService.log(LogService.LOG_INFO, "Current Cassandra
Daemon operation mode is '"
- + operationMode
- + "', waiting for daemon to reach
operation mode 'Normal'");
- Thread.sleep(DAEMON_TIMEOUT);
- operationMode = StorageService.instance.getOperationMode();
- }
-
- if
("Normal".equals(StorageService.instance.getOperationMode())) {
- m_logService.log(LogService.LOG_INFO, "Operation mode is
now 'Normal', continuing starting "
- + "Cassandra");
-
- // Register a new CassandraDaemonAvailable service
- CassandraDaemonAvailable service = new
CassandraDaemonAvailable() {};
-
- m_serviceAvailableComponent =
m_dependencyManager.createComponent()
-
.setInterface(CassandraDaemonAvailable.class.getName(), null)
- .setImplementation(service);
- m_dependencyManager.add(m_serviceAvailableComponent);
- }
+ /*
+ * String operationMode =
StorageService.instance.getOperationMode();
+ * while (!"Normal".equals(operationMode) && !isInterrupted()
&& isAlive()) {
+ * m_logService.log(LogService.LOG_INFO, "Current Cassandra
Daemon operation mode is '"
+ * + operationMode
+ * + "', waiting for daemon to reach operation mode 'Normal'");
+ * Thread.sleep(DAEMON_TIMEOUT);
+ * operationMode = "Normal";// FIXME
StorageService.instance.getOperationMode();
+ * }
+ *
+ * if ("Normal".equals("Normal")) { // FIXME
NORMALStorageService.instance.getOperationMode())) {
+ * m_logService.log(LogService.LOG_INFO, "Operation mode is
now 'Normal', continuing starting "
+ * + "Cassandra");
+ *
+ * // Register a new CassandraDaemonAvailable service
+ * CassandraDaemonAvailable service = new
CassandraDaemonAvailable() {};
+ *
+ * m_serviceAvailableComponent =
m_dependencyManager.createComponent()
+ * .setInterface(CassandraDaemonAvailable.class.getName(),
null)
+ * .setImplementation(service);
+ * m_dependencyManager.add(m_serviceAvailableComponent);
+ * }
+ */
}
catch (TTransportException e) {
m_logService.log(LogService.LOG_ERROR, "Could not establish
Thrift connection to Cassandra daemon, "
- + "daemon could not be started.");
- }
- catch (InterruptedException e) {
- m_logService.log(LogService.LOG_ERROR, "Starting Cassandra
daemon interrupted.");
+ + "daemon could not be started.");
}
}
-
/**
* This methods opens a Thrift connection to the Cassandra daemon and
returns if the connection
* has been established. This is useful to ensure that the daemon is
running before continuing.
@@ -127,7 +137,7 @@
try {
String thrift = m_configuration.getRPCAddress() + ":" +
m_configuration.getRPCPort();
m_logService.log(LogService.LOG_INFO, "Establishing Thrift
connection to the Cassandra Daemon on "
- + thrift);
+ + thrift);
TTransport tr = new TSocket(m_configuration.getRPCAddress(),
m_configuration.getRPCPort(),
THRIFT_TIMEOUT);
TProtocol proto = new TBinaryProtocol(tr);
@@ -146,7 +156,7 @@
m_logService.log(LogService.LOG_DEBUG, "Wait for Thrift
connection interrupted");
}
m_logService.log(LogService.LOG_INFO, "Thrift connection
cannot yet be established, retrying... ("
- + retry + ")");
+ + retry + ")");
}
m_logService.log(LogService.LOG_INFO, "Thrift connection
established successfully");
}
Modified:
trunk/amdatu-cassandra/cassandra-client/src/main/java/org/amdatu/cassandra/client/service/CassandraClientServiceImpl.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-client/src/main/java/org/amdatu/cassandra/client/service/CassandraClientServiceImpl.java
(original)
+++
trunk/amdatu-cassandra/cassandra-client/src/main/java/org/amdatu/cassandra/client/service/CassandraClientServiceImpl.java
Fri Feb 10 09:12:57 2012
@@ -26,17 +26,14 @@
import java.util.List;
import java.util.Map;
-import org.apache.cassandra.db.Table;
-import org.apache.cassandra.service.StorageProxy;
-import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.thrift.Cassandra;
import org.apache.cassandra.thrift.CfDef;
import org.apache.cassandra.thrift.InvalidRequestException;
import org.apache.cassandra.thrift.KsDef;
import org.apache.cassandra.thrift.NotFoundException;
import org.apache.cassandra.thrift.SchemaDisagreementException;
-import org.apache.cassandra.thrift.TBinaryProtocol;
import org.apache.thrift.TException;
+import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TFramedTransport;
import org.apache.thrift.transport.TSocket;
@@ -54,7 +51,9 @@
public class CassandraClientServiceImpl implements CassandraClientService {
// The default placement strategy
private static final String DEFAULT_PLACEMENT_STRATEGY =
"org.apache.cassandra.locator.SimpleStrategy";
-
+ private static final String SYSTEM_TABLE = "system";
+ private static final String UNREACHABLE = "UNREACHABLE";
+
// Although this is a standard strategy option, there is no constant, enum
or whatever defining the parameter
// name for the replication_factor option in Cassandra (internally hard
coded "replication_factor" is used all over
// the place), so we define it here for internal use.
@@ -107,7 +106,11 @@
private synchronized Cassandra.Iface getCassandraClient() throws
TTransportException {
// This returns the IP addresses of all live nodes in the ring
- List<String> liveNodes = StorageService.instance.getLiveNodes();
+ // FIXME: with the separation of client and server we can no longer
monitor the
+ // live nodes.
+ // Was: List<String> liveNodes =
StorageService.instance.getLiveNodes();
+ List<String> liveNodes = new ArrayList<String>();
+ liveNodes.add(m_configuration.getRPCAddress()); //
// Sort the list and pick the first record
Collections.sort(liveNodes);
@@ -222,7 +225,7 @@
Map<String, List<String>> schemas =
getCassandraClient().describe_schema_versions();
String version = null;
for (String key : schemas.keySet()) {
- if (StorageProxy.UNREACHABLE.equals(key)) {
+ if (UNREACHABLE.equals(key)) {
m_logService.log(LogService.LOG_DEBUG, "Ignoring version
of unreacheable node(s): " + key + "="
+ schemas.get(key));
}
@@ -334,7 +337,10 @@
public synchronized void setReplicationFactor(final int replicationFactor)
{
try {
- int clusterSize = StorageService.instance.getLiveNodes().size();
+ // FIXME: with the separation of client and server we can no
longer monitor the
+ // live nodes using StorageService.
+ // was: int clusterSize =
StorageService.instance.getLiveNodes().size();
+ int clusterSize = 1;
if (replicationFactor > clusterSize) {
throw new InvalidRequestException("Replication factor " +
replicationFactor
+ " may never exceed the amount of nodes "
@@ -533,7 +539,7 @@
String cfName = cfDef.getName();
cfDef.setKeyspace(keyspace);
- if (keyspace.equals(Table.SYSTEM_TABLE)) {
+ if (keyspace.equals(SYSTEM_TABLE)) {
throw new ThriftException("ColumnFamily's cannot be added to
Cassandra's system keyspace");
}
try {
@@ -571,7 +577,7 @@
String cfName = cfDef.getName();
cfDef.setKeyspace(keyspace);
- if (keyspace.equals(Table.SYSTEM_TABLE)) {
+ if (keyspace.equals(SYSTEM_TABLE)) {
throw new ThriftException("ColumnFamily's cannot be updated in
Cassandra's system keyspace");
}
try {
Modified: trunk/amdatu-cassandra/cassandra-listener/pom.xml
==============================================================================
--- trunk/amdatu-cassandra/cassandra-listener/pom.xml (original)
+++ trunk/amdatu-cassandra/cassandra-listener/pom.xml Fri Feb 10 09:12:57 2012
@@ -30,11 +30,6 @@
<dependencies>
<dependency>
<groupId>org.amdatu.cassandra</groupId>
- <artifactId>org.amdatu.cassandra.application</artifactId>
- <type>bundle</type>
- </dependency>
- <dependency>
- <groupId>org.amdatu.cassandra</groupId>
<artifactId>org.amdatu.cassandra.client</artifactId>
<type>bundle</type>
</dependency>
@@ -64,7 +59,6 @@
<Bundle-Activator>org.amdatu.cassandra.listener.osgi.Activator</Bundle-Activator>
<Bundle-SymbolicName>org.amdatu.cassandra.listener</Bundle-SymbolicName>
<Import-Package>
- org.amdatu.cassandra.application;version="[1.0,2.0)",
org.amdatu.cassandra.listener,
org.apache.cassandra.thrift.*;version="[1.0,2.0)",
org.apache.thrift.*;version="[1.0,2.0)",
Modified:
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/ColumnFamilyDefinition.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/ColumnFamilyDefinition.java
(original)
+++
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/ColumnFamilyDefinition.java
Fri Feb 10 09:12:57 2012
@@ -15,12 +15,7 @@
*/
package org.amdatu.cassandra.listener;
-import org.apache.cassandra.db.marshal.AsciiType;
-import org.apache.cassandra.db.marshal.BytesType;
-import org.apache.cassandra.db.marshal.LexicalUUIDType;
-import org.apache.cassandra.db.marshal.LongType;
-import org.apache.cassandra.db.marshal.TimeUUIDType;
-import org.apache.cassandra.db.marshal.UTF8Type;
+
import org.apache.cassandra.thrift.CfDef;
/**
@@ -73,32 +68,32 @@
/**
* A column or super column name comparator of type bytes.
*/
- BYTESTYPE(BytesType.class.getName()),
+ BYTESTYPE("org.apache.cassandra.db.marshal.BytesType"),
/**
* A column or super column name comparator of type ASCII.
*/
- ASCIITYPE(AsciiType.class.getName()),
+ ASCIITYPE("org.apache.cassandra.db.marshal.(AsciiType"),
/**
* A column or super column name comparator of type UTF-8 string.
*/
- UTF8TYPE(UTF8Type.class.getName()),
+ UTF8TYPE("org.apache.cassandra.db.marshal.UTF8Type"),
/**
* A column or super column name non-time based comparator. It is
compared lexically, by byte value.
*/
- LEXICALUUIDTYPE(LexicalUUIDType.class.getName()),
+ LEXICALUUIDTYPE("org.apache.cassandra.db.marshal.LexicalUUIDType"),
/**
* A column or super column name non-time based comparator. It
uses a version 1 UUID.
*/
- TIMEUUIDTYPE(TimeUUIDType.class.getName()),
+ TIMEUUIDTYPE("org.apache.cassandra.db.marshal.TimeUUIDType"),
/**
* A column or super column name comparator of type Long.
*/
- LONGTYPE(LongType.class.getName());
+ LONGTYPE("org.apache.cassandra.db.marshal.LongType");
private String m_value;
Modified:
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/osgi/Activator.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/osgi/Activator.java
(original)
+++
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/osgi/Activator.java
Fri Feb 10 09:12:57 2012
@@ -20,6 +20,7 @@
import org.amdatu.cassandra.listener.service.CassandraUpdateListenerImpl;
import org.amdatu.cassandra.listener.service.ColumnFamilyHandler;
import
org.amdatu.cassandra.persistencemanager.CassandraPersistenceManagerFactory;
+
import org.apache.felix.dm.DependencyActivatorBase;
import org.apache.felix.dm.DependencyManager;
import org.osgi.framework.BundleContext;
@@ -41,7 +42,7 @@
// Register the CassandraColumnFamilyProvider listener
manager
- .add(
+ .add(
createComponent()
.setImplementation(ColumnFamilyHandler.class)
.add(createServiceDependency().setService(LogService.class).setRequired(true))
Modified:
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/CassandraUpdateListenerImpl.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/CassandraUpdateListenerImpl.java
(original)
+++
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/CassandraUpdateListenerImpl.java
Fri Feb 10 09:12:57 2012
@@ -15,6 +15,13 @@
*/
package org.amdatu.cassandra.listener.service;
+import org.amdatu.cassandra.client.CassandraClientService;
+import org.amdatu.cassandra.listener.ColumnFamilyAvailable;
+import org.amdatu.cassandra.listener.ColumnFamilyDefinition;
+import org.amdatu.cassandra.listener.ColumnFamilyProvider;
+import org.amdatu.cassandra.persistencemanager.CassandraPersistenceManager;
+import
org.amdatu.cassandra.persistencemanager.CassandraPersistenceManagerFactory;
+
import java.util.Dictionary;
import java.util.HashMap;
import java.util.Hashtable;
@@ -23,13 +30,6 @@
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-import org.amdatu.cassandra.client.CassandraClientService;
-import org.amdatu.cassandra.listener.ColumnFamilyAvailable;
-import org.amdatu.cassandra.listener.ColumnFamilyDefinition;
-import org.amdatu.cassandra.listener.ColumnFamilyProvider;
-import org.amdatu.cassandra.persistencemanager.CassandraPersistenceManager;
-import
org.amdatu.cassandra.persistencemanager.CassandraPersistenceManagerFactory;
-import org.apache.cassandra.db.Table;
import org.apache.cassandra.thrift.InvalidRequestException;
import org.apache.cassandra.thrift.NotFoundException;
import org.apache.felix.dm.Component;
@@ -52,7 +52,9 @@
*
* @author ivol
*/
-public class CassandraUpdateListenerImpl {
+public class CassandraUpdateListenerImpl {
+ private static final String SYSTEM_TABLE = "system";
+
// Services injected by the dependency manager
private volatile LogService m_logService;
private volatile CassandraClientService m_daemonService;
@@ -163,7 +165,7 @@
Map<String, List<String>> map = new HashMap<String,
List<String>>();
for (String keyspace : m_daemonService.getKeyspaces()) {
// Ignore the system keyspace
- if (!Table.SYSTEM_TABLE.equals(keyspace)) {
+ if (!SYSTEM_TABLE.equals(keyspace)) {
map.put(keyspace,
m_daemonService.getColumnFamilies(keyspace));
}
}
Modified:
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/ColumnFamilyHandler.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/ColumnFamilyHandler.java
(original)
+++
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/ColumnFamilyHandler.java
Fri Feb 10 09:12:57 2012
@@ -15,12 +15,12 @@
*/
package org.amdatu.cassandra.listener.service;
-import java.util.List;
-
import org.amdatu.cassandra.client.CassandraClientService;
import org.amdatu.cassandra.listener.ColumnFamilyDefinition;
import org.amdatu.cassandra.listener.ColumnFamilyProvider;
-import org.apache.cassandra.db.Table;
+
+import java.util.List;
+
import org.apache.cassandra.thrift.CfDef;
import org.apache.cassandra.thrift.InvalidRequestException;
import org.apache.cassandra.thrift.NotFoundException;
@@ -35,6 +35,8 @@
* data is synchronized between Cassandra nodes).
*/
public class ColumnFamilyHandler {
+ private static final String SYSTEM_TABLE = "system";
+
// Service dependencies, injected by the dependency manager
private volatile LogService m_logService;
private volatile CassandraClientService m_daemonService;
@@ -50,7 +52,7 @@
if (keyspaces != null) {
for (String keyspace : keyspaces) {
// Never add ColumnFamily's to Cassandra's system
keyspace, this is a reserved keyspace
- if (!Table.SYSTEM_TABLE.equals(keyspace)) {
+ if (!SYSTEM_TABLE.equals(keyspace)) {
// Create if it does not yet exist
m_daemonService.addKeyspace(keyspace);
addOrUpdateColumnFamily(m_daemonService, keyspace,
columnFamily);
@@ -66,7 +68,7 @@
"For more information, see
http://jira.amdatu.org/jira/browse/AMDATUCASSANDRA-118";
m_logService.log(LogService.LOG_WARNING, msg);
for (String keyspaceDef : keyspaceDefinitions) {
- if (!Table.SYSTEM_TABLE.equals(keyspaceDef)) {
+ if (!SYSTEM_TABLE.equals(keyspaceDef)) {
addOrUpdateColumnFamily(m_daemonService,
keyspaceDef, columnFamily);
}
}
Modified:
trunk/amdatu-cassandra/cassandra-listener/src/test/java/org/amdatu/cassandra/test/unit/listener/ListenerTest.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-listener/src/test/java/org/amdatu/cassandra/test/unit/listener/ListenerTest.java
(original)
+++
trunk/amdatu-cassandra/cassandra-listener/src/test/java/org/amdatu/cassandra/test/unit/listener/ListenerTest.java
Fri Feb 10 09:12:57 2012
@@ -29,7 +29,6 @@
import java.nio.ByteBuffer;
-import org.apache.cassandra.db.marshal.UTF8Type;
import org.apache.cassandra.thrift.CfDef;
import org.apache.cassandra.thrift.ColumnDef;
import org.apache.cassandra.thrift.IndexType;
@@ -191,7 +190,7 @@
// Add a ColumnDefinition, should succeed
cfDef.setColumn_type(ColumnType.STANDARD.getValue());
ByteBuffer name = ByteBuffer.wrap("indexcol".getBytes("UTF-8"));
- ColumnDef cDef = new ColumnDef(name, UTF8Type.class.getName());
+ ColumnDef cDef = new ColumnDef(name,
"org.apache.cassandra.db.marshal.UTF8Type");
cDef.setIndex_type(IndexType.KEYS);
cfDef.addToColumn_metadata(cDef);
Assert.assertTrue(m_daemon.updateColumnFamily(TEST_KS, cfDef));
Modified: trunk/amdatu-cassandra/cassandra-persistencemanager-hector/pom.xml
==============================================================================
--- trunk/amdatu-cassandra/cassandra-persistencemanager-hector/pom.xml
(original)
+++ trunk/amdatu-cassandra/cassandra-persistencemanager-hector/pom.xml Fri Feb
10 09:12:57 2012
@@ -146,7 +146,7 @@
org.amdatu.cassandra.application;version="[1.0,2.0)",
org.amdatu.cassandra.persistencemanager.hector,
me.prettyprint.hector.api.*;version="[1.0,1.1)",
- org.apache.cassandra.*;version="[1.0,2.0)",
+ org.apache.cassandra.thrift.*;version="[1.0,2.0)",
org.apache.thrift.*;version="[1.0,2.0)",
!com.ibm.uvm.tools,
!com.sun.jdmk.comm,
@@ -155,6 +155,13 @@
!javax.jms,
!javax.mail,
!javax.mail.internet,
+ !org.apache.cassandra.concurrent,
+ !org.apache.cassandra.config,
+ !org.apache.cassandra.db.*,
+ !org.apache.cassandra.io.util,
+ !org.apache.cassandra.locator,
+ !org.apache.cassandra.service,
+ !org.apache.cassandra.utils,
*
</Import-Package>
<Export-Package>
Modified:
trunk/amdatu-cassandra/test-integration/base/src/main/java/org/amdatu/cassandra/test/integration/base/CassandraFixture.java
==============================================================================
---
trunk/amdatu-cassandra/test-integration/base/src/main/java/org/amdatu/cassandra/test/integration/base/CassandraFixture.java
(original)
+++
trunk/amdatu-cassandra/test-integration/base/src/main/java/org/amdatu/cassandra/test/integration/base/CassandraFixture.java
Fri Feb 10 09:12:57 2012
@@ -18,7 +18,7 @@
import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
import static org.ops4j.pax.exam.CoreOptions.wrappedBundle;
-import org.amdatu.cassandra.application.CassandraConfigurationService;
+import org.amdatu.cassandra.application.CassandraServerConfigurationService;
import org.amdatu.cassandra.client.CassandraClientConfigurationService;
import org.amdatu.core.itest.base.TestContext;
@@ -78,7 +78,7 @@
}
public void configureCassandraDaemon(TestContext testContext) throws
Exception {
- testContext.updateConfig(CassandraConfigurationService.PID,
getCassandraServerConfig());
+ testContext.updateConfig(CassandraServerConfigurationService.PID,
getCassandraServerConfig());
testContext.updateConfig(CassandraClientConfigurationService.PID,
getCassandraClientConfig());
}
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits