[rhq] Branch 'rhq-on-as7' - modules/enterprise
by Jay Shaughnessy
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/auth/test/SubjectManagerBeanTest.java | 26 +++++-----
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java | 16 +++++-
2 files changed, 27 insertions(+), 15 deletions(-)
New commits:
commit 092450d568cf8137e25a69337ea1669582dcd2df
Author: Jay Shaughnessy <jshaughn(a)jshaughn.csb>
Date: Wed Oct 31 17:44:14 2012 -0400
Get more tests running by altering BeforeXXXX/AfterXXX
stuff as needed.
diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/auth/test/SubjectManagerBeanTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/auth/test/SubjectManagerBeanTest.java
index 8426843..6d0a071 100644
--- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/auth/test/SubjectManagerBeanTest.java
+++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/auth/test/SubjectManagerBeanTest.java
@@ -27,8 +27,6 @@ import java.util.UUID;
import javax.security.auth.login.LoginException;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.rhq.core.domain.auth.Subject;
@@ -53,7 +51,7 @@ import org.rhq.enterprise.server.util.LookupUtil;
*/
@Test
public class SubjectManagerBeanTest extends AbstractEJB3Test {
-
+
private SubjectManagerLocal subjectManager;
private AuthorizationManagerLocal authorizationManager;
private RoleManagerLocal roleManager;
@@ -61,8 +59,8 @@ public class SubjectManagerBeanTest extends AbstractEJB3Test {
/**
* Prepares things for the entire test class.
*/
- @BeforeClass
- public void beforeClass() {
+ @Override
+ public void beforeMethod() {
subjectManager = LookupUtil.getSubjectManager();
authorizationManager = LookupUtil.getAuthorizationManager();
roleManager = LookupUtil.getRoleManager();
@@ -71,8 +69,8 @@ public class SubjectManagerBeanTest extends AbstractEJB3Test {
/**
* This runs after each test method. It clears out all sessions.
*/
- @AfterMethod
- public void purgeAllSessions() {
+ @Override
+ public void afterMethod() {
// create a list of all users we know our tests have used
List<String> usernames = new ArrayList<String>();
usernames.add("admin");
@@ -469,7 +467,7 @@ public class SubjectManagerBeanTest extends AbstractEJB3Test {
}
}
-
+
public void testViewUsersPermission_subjectWithViewUsersRoleCanViewOtherUsers() throws Exception {
getTransactionManager().begin();
@@ -489,7 +487,8 @@ public class SubjectManagerBeanTest extends AbstractEJB3Test {
Subject anotherSubject = new Subject("subject" + UUID.randomUUID(), true, false);
anotherSubject = subjectManager.createSubject(overlord, anotherSubject, "password");
- PageList<Subject> subjects = subjectManager.findSubjectsByCriteria(subjectWithViewUsersRole, new SubjectCriteria());
+ PageList<Subject> subjects = subjectManager.findSubjectsByCriteria(subjectWithViewUsersRole,
+ new SubjectCriteria());
Set<Subject> subjectSet = new HashSet<Subject>(subjects);
assertTrue(subjectSet.contains(subjectWithViewUsersRole));
assertTrue(subjectSet.contains(anotherSubject));
@@ -531,13 +530,15 @@ public class SubjectManagerBeanTest extends AbstractEJB3Test {
Subject subjectWithNonViewUsersRole = new Subject("subject" + UUID.randomUUID(), true, false);
subjectWithNonViewUsersRole.addRole(roleWithoutViewUsersPerm);
- subjectWithNonViewUsersRole = subjectManager.createSubject(overlord, subjectWithNonViewUsersRole, "password");
+ subjectWithNonViewUsersRole = subjectManager.createSubject(overlord, subjectWithNonViewUsersRole,
+ "password");
subjectWithNonViewUsersRole = subjectManager.loginUnauthenticated(subjectWithNonViewUsersRole.getName());
Subject anotherSubject = new Subject("subject" + UUID.randomUUID(), true, false);
anotherSubject = subjectManager.createSubject(overlord, anotherSubject, "password");
- PageList<Subject> subjects = subjectManager.findSubjectsByCriteria(subjectWithNonViewUsersRole, new SubjectCriteria());
+ PageList<Subject> subjects = subjectManager.findSubjectsByCriteria(subjectWithNonViewUsersRole,
+ new SubjectCriteria());
Set<Subject> subjectSet = new HashSet<Subject>(subjects);
assertEquals(1, subjectSet.size());
assertTrue(subjectSet.contains(subjectWithNonViewUsersRole));
@@ -559,7 +560,8 @@ public class SubjectManagerBeanTest extends AbstractEJB3Test {
Subject anotherSubject = new Subject("subject" + UUID.randomUUID(), true, false);
anotherSubject = subjectManager.createSubject(overlord, anotherSubject, "password");
- PageList<Subject> subjects = subjectManager.findSubjectsByCriteria(subjectWithNoRoles, new SubjectCriteria());
+ PageList<Subject> subjects = subjectManager.findSubjectsByCriteria(subjectWithNoRoles,
+ new SubjectCriteria());
Set<Subject> subjectSet = new HashSet<Subject>(subjects);
assertEquals(1, subjectSet.size());
assertTrue(subjectSet.contains(subjectWithNoRoles));
diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
index 755f910..a3ca64c 100644
--- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
+++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
@@ -30,7 +30,6 @@ import org.dbunit.dataset.xml.FlatXmlProducer;
import org.dbunit.operation.DatabaseOperation;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeGroups;
import org.testng.annotations.BeforeMethod;
import org.xml.sax.InputSource;
@@ -53,8 +52,10 @@ public class MetadataBeanTest extends AbstractEJB3Test {
private List<Integer> pluginIds = new ArrayList<Integer>();
-
- @BeforeGroups(groups = { "plugin.metadata" }, dependsOnGroups = { "integration.ejb3" })
+ // @BeforeGroups currently executes only as client (remote) only with Arquillian/testNg. So,
+ // we can't get DS here. Now called from BeforeMethod.
+ //
+ //@BeforeGroups(groups = { "plugin.metadata" }, dependsOnGroups = { "integration.ejb3" })
public void beforeGroups() throws Exception {
setupDB();
}
@@ -66,6 +67,12 @@ public class MetadataBeanTest extends AbstractEJB3Test {
*/
@AfterClass(alwaysRun = true, groups = { "plugin.metadata" })
void afterClass() throws Exception {
+ // Although its documented that AfterXXX don't execute in-container (only as client), in practice this is not true
+ // and we perform in-container work here.
+ if (!inContainer()) {
+ return;
+ }
+
PluginManagerLocal pluginMgr = LookupUtil.getPluginManager();
Subject overlord = LookupUtil.getSubjectManager().getOverlord();
pluginMgr.deletePlugins(overlord, pluginIds);
@@ -80,6 +87,9 @@ public class MetadataBeanTest extends AbstractEJB3Test {
return;
}
+ // @BeforeGroups currently executed only as client (remote) only with Arquillian/testNg, so call from here instead
+ beforeGroups();
+
TestBundleServerPluginService bundleService = new TestBundleServerPluginService();
prepareCustomServerPluginService(bundleService);
bundleService.startMasterPluginContainerWithoutSchedulingJobs();
11 years, 1 month
[rhq] Branch 'feature/cassandra-backend' - modules/enterprise
by John Sanda
modules/enterprise/server/server-metrics/pom.xml | 7
modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java | 58 +++-
modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java | 142 ++++------
3 files changed, 120 insertions(+), 87 deletions(-)
New commits:
commit b04b25ce4172451387636b354a83a3dd5ad5f45b
Author: John Sanda <jsanda(a)redhat.com>
Date: Wed Oct 31 17:01:25 2012 -0400
first pass at porting code to use cql for reading/writing metrics
diff --git a/modules/enterprise/server/server-metrics/pom.xml b/modules/enterprise/server/server-metrics/pom.xml
index fef9f60..f10b468 100644
--- a/modules/enterprise/server/server-metrics/pom.xml
+++ b/modules/enterprise/server/server-metrics/pom.xml
@@ -81,6 +81,13 @@
</dependency>
<dependency>
+ <groupId>org.apache-extras.cassandra-jdbc</groupId>
+ <artifactId>cassandra-jdbc</artifactId>
+ <version>1.2.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
<groupId>org.hectorclient</groupId>
<artifactId>hector-core</artifactId>
<version>1.1-1</version>
diff --git a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
index 0b4debc..bf137b7 100644
--- a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
+++ b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
@@ -28,12 +28,17 @@ package org.rhq.server.metrics;
import static me.prettyprint.hector.api.beans.AbstractComposite.ComponentEquality.EQUAL;
import static me.prettyprint.hector.api.beans.AbstractComposite.ComponentEquality.LESS_THAN_EQUAL;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
+import javax.sql.DataSource;
+
import org.joda.time.DateTime;
import org.joda.time.DateTimeComparator;
import org.joda.time.Hours;
@@ -90,6 +95,8 @@ public class MetricsServer {
private DateTimeService dateTimeService = new DateTimeService();
+ private DataSource cassandraDS;
+
// These property getters/setters are here right now primarily to facilitate
// testing.
@@ -173,6 +180,10 @@ public class MetricsServer {
this.keyspace = keyspace;
}
+ public void setCassandraDS(DataSource dataSource) {
+ cassandraDS = dataSource;
+ }
+
public List<MeasurementDataNumericHighLowComposite> findDataForContext(Subject subject, EntityContext entityContext,
MeasurementSchedule schedule, long beginTime, long endTime) {
DateTime begin = new DateTime(beginTime);
@@ -259,19 +270,46 @@ public class MetricsServer {
public void addNumericData(Set<MeasurementDataNumeric> dataSet) {
Map<Integer, DateTime> updates = new TreeMap<Integer, DateTime>();
Mutator<Integer> mutator = HFactory.createMutator(keyspace, IntegerSerializer.get());
+ Connection connection = null;
+ PreparedStatement statement = null;
- for (MeasurementDataNumeric data : dataSet) {
- updates.put(data.getScheduleId(), new DateTime(data.getTimestamp()).hourOfDay().roundFloorCopy());
- mutator.addInsertion(
- data.getScheduleId(),
- rawMetricsDataCF,
- HFactory.createColumn(data.getTimestamp(), data.getValue(), DateTimeService.SEVEN_DAYS,
- LongSerializer.get(), DoubleSerializer.get()));
- }
+ try {
+ connection = cassandraDS.getConnection();
+ String sql = "INSERT INTO raw_metrics (schedule_id, time, value) VALUES (?, ?, ?)";
+ statement = connection.prepareStatement(sql);
- mutator.execute();
+ for (MeasurementDataNumeric data : dataSet) {
+ statement.setInt(1, data.getScheduleId());
+ statement.setDate(2, new java.sql.Date(data.getTimestamp()));
+ statement.setDouble(3, data.getValue());
+
+ statement.executeUpdate();
+ //statement.addBatch();
+ }
+// statement.executeUpdate();
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ } finally {
+ if (statement != null) {
+ try {
+ statement.close();
+ } catch (SQLException e) {
+ }
+ }
+ }
- updateMetricsQueue(oneHourMetricsDataCF, updates);
+// for (MeasurementDataNumeric data : dataSet) {
+// updates.put(data.getScheduleId(), new DateTime(data.getTimestamp()).hourOfDay().roundFloorCopy());
+// mutator.addInsertion(
+// data.getScheduleId(),
+// rawMetricsDataCF,
+// HFactory.createColumn(data.getTimestamp(), data.getValue(), DateTimeService.SEVEN_DAYS,
+// LongSerializer.get(), DoubleSerializer.get()));
+// }
+//
+// mutator.execute();
+//
+// updateMetricsQueue(oneHourMetricsDataCF, updates);
}
public void calculateAggregates() {
diff --git a/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java b/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java
index 155351e..e086627 100644
--- a/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java
+++ b/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java
@@ -31,18 +31,21 @@ import static org.rhq.server.metrics.DateTimeService.ONE_MONTH;
import static org.rhq.server.metrics.DateTimeService.ONE_YEAR;
import static org.rhq.server.metrics.DateTimeService.SEVEN_DAYS;
import static org.rhq.server.metrics.DateTimeService.TWO_WEEKS;
+import static org.rhq.test.AssertUtils.assertCollectionMatchesNoOrder;
import static org.rhq.test.AssertUtils.assertPropertiesMatch;
import static org.testng.Assert.assertEquals;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.StringWriter;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import org.apache.cassandra.cql.jdbc.CassandraDataSource;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.joda.time.Chronology;
import org.joda.time.DateTime;
import org.joda.time.DateTimeField;
@@ -57,7 +60,6 @@ import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
-import org.rhq.cassandra.CLibrary;
import org.rhq.cassandra.CassandraClusterManager;
import org.rhq.cassandra.CassandraException;
import org.rhq.cassandra.ClusterInitService;
@@ -68,7 +70,6 @@ import org.rhq.core.domain.measurement.MeasurementDataNumeric;
import org.rhq.core.domain.measurement.MeasurementSchedule;
import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite;
-import org.rhq.core.util.stream.StreamUtil;
import me.prettyprint.cassandra.serializers.CompositeSerializer;
import me.prettyprint.cassandra.serializers.DoubleSerializer;
@@ -81,13 +82,11 @@ import me.prettyprint.cassandra.service.KeyIterator;
import me.prettyprint.hector.api.Cluster;
import me.prettyprint.hector.api.Keyspace;
import me.prettyprint.hector.api.Serializer;
-import me.prettyprint.hector.api.beans.ColumnSlice;
import me.prettyprint.hector.api.beans.Composite;
import me.prettyprint.hector.api.beans.HColumn;
import me.prettyprint.hector.api.factory.HFactory;
import me.prettyprint.hector.api.mutation.MutationResult;
import me.prettyprint.hector.api.mutation.Mutator;
-import me.prettyprint.hector.api.query.QueryResult;
import me.prettyprint.hector.api.query.SliceQuery;
/**
@@ -96,6 +95,10 @@ import me.prettyprint.hector.api.query.SliceQuery;
@Listeners({CassandraClusterManager.class})
public class MetricsServerTest {
+ private static final boolean ENABLED = false;
+
+ private final Log log = LogFactory.getLog(MetricsServerTest.class);
+
private final long SECOND = 1000;
private final long MINUTE = 60 * SECOND;
@@ -118,6 +121,8 @@ public class MetricsServerTest {
private Keyspace keyspace;
+ private CassandraDataSource dataSource;
+
private static class MetricsServerStub extends MetricsServer {
private DateTime currentHour;
@@ -137,49 +142,18 @@ public class MetricsServerTest {
@BeforeClass
@DeployCluster
public void deployCluster() throws CassandraException {
-// File basedir = new File("target");
-// File clusterDir = new File(basedir, "cassandra");
-//
-// FileUtil.purge(clusterDir, false);
-//
-// int numNodes = 2;
-//
-// DeploymentOptions deploymentOptions = new DeploymentOptions();
-// deploymentOptions.setClusterDir(clusterDir.getAbsolutePath());
-// deploymentOptions.setNumNodes(numNodes);
-// deploymentOptions.setLoggingLevel("DEBUG");
-//
-// BootstrapDeployer deployer = new BootstrapDeployer();
-// deployer.setDeploymentOptions(deploymentOptions);
-// deployer.deploy();
-
List<CassandraHost> hosts = asList(new CassandraHost("127.0.0.1", 9160), new CassandraHost("127.0.0.2", 9160));
ClusterInitService initService = new ClusterInitService();
initService.waitForClusterToStart(hosts);
initService.waitForSchemaAgreement("rhq", hosts);
+
+ dataSource = new CassandraDataSource("127.0.0.1", 9160, "rhq", null, null, "3.0.0");
}
@AfterClass
@ShutdownCluster
public void shutdownCluster() throws Exception {
-// File basedir = new File("target");
-// File clusterDir = new File(basedir, "cassandra");
-// killNode(new File(clusterDir, "node0"));
-// killNode(new File(clusterDir, "node1"));
- }
-
- private void killNode(File nodeDir) throws Exception {
- long pid = getPid(nodeDir);
- CLibrary.kill((int) pid, 9);
- }
-
- private long getPid(File nodeDir) throws IOException {
- File binDir = new File(nodeDir, "bin");
- StringWriter writer = new StringWriter();
- StreamUtil.copy(new FileReader(new File(binDir, "cassandra.pid")), writer);
-
- return Long.parseLong(writer.getBuffer().toString());
}
@BeforeMethod
@@ -197,7 +171,8 @@ public class MetricsServerTest {
metricsServer.setMetricsQueueCF(METRICS_WORK_QUEUE_CF);
metricsServer.setTraitsCF(TRAITS_CF);
metricsServer.setResourceTraitsCF(RESOURCE_TRAITS_CF);
- purgeDB();
+ metricsServer.setCassandraDS(dataSource);
+ //purgeDB();
}
private void purgeDB() {
@@ -218,8 +193,8 @@ public class MetricsServerTest {
return rowMutator.execute();
}
- @Test
- public void insertMultipleRawNumericDataForOneSchedule() {
+ @Test//(enabled = ENABLED)
+ public void insertMultipleRawNumericDataForOneSchedule() throws Exception {
int scheduleId = 123;
//DateTime hour0 = now.hourOfDay().roundFloorCopy().minusHours(now.hourOfDay().get());
@@ -243,39 +218,52 @@ public class MetricsServerTest {
metricsServer.addNumericData(data);
- SliceQuery<Integer, Long, Double> query = HFactory.createSliceQuery(keyspace, IntegerSerializer.get(),
- LongSerializer.get(), DoubleSerializer.get());
- query.setColumnFamily(RAW_METRIC_DATA_CF);
- query.setKey(scheduleId);
- query.setRange(null, null, false, 10);
-
- QueryResult<ColumnSlice<Long, Double>> queryResult = query.execute();
- List<HColumn<Long, Double>> actual = queryResult.get().getColumns();
+// SliceQuery<Integer, Long, Double> query = HFactory.createSliceQuery(keyspace, IntegerSerializer.get(),
+// LongSerializer.get(), DoubleSerializer.get());
+// query.setColumnFamily(RAW_METRIC_DATA_CF);
+// query.setKey(scheduleId);
+// query.setRange(null, null, false, 10);
+//
+// QueryResult<ColumnSlice<Long, Double>> queryResult = query.execute();
+// List<HColumn<Long, Double>> actual = queryResult.get().getColumns();
+//
+// List<HColumn<Long, Double>> expected = asList(
+// HFactory.createColumn(threeMinutesAgo.getMillis(), 3.2, sevenDays, LongSerializer.get(),
+// DoubleSerializer.get()),
+// HFactory.createColumn(twoMinutesAgo.getMillis(), 3.9, sevenDays, LongSerializer.get(),
+// DoubleSerializer.get()),
+// HFactory.createColumn(oneMinuteAgo.getMillis(), 2.6, sevenDays, LongSerializer.get(),
+// DoubleSerializer.get())
+// );
+//
+// for (int i = 0; i < expected.size(); ++i) {
+// assertPropertiesMatch("The returned columns do not match", expected.get(i), actual.get(i),
+// "clock");
+// }
+//
+// DateTime theHour = now().hourOfDay().roundFloorCopy();
+// Composite expectedComposite = new Composite();
+// expectedComposite.addComponent(theHour.getMillis(), LongSerializer.get());
+// expectedComposite.addComponent(scheduleId, IntegerSerializer.get());
+//
+// assert1HourMetricsQueueEquals(asList(HFactory.createColumn(expectedComposite, 0, CompositeSerializer.get(),
+// IntegerSerializer.get())));
- List<HColumn<Long, Double>> expected = asList(
- HFactory.createColumn(threeMinutesAgo.getMillis(), 3.2, sevenDays, LongSerializer.get(),
- DoubleSerializer.get()),
- HFactory.createColumn(twoMinutesAgo.getMillis(), 3.9, sevenDays, LongSerializer.get(),
- DoubleSerializer.get()),
- HFactory.createColumn(oneMinuteAgo.getMillis(), 2.6, sevenDays, LongSerializer.get(),
- DoubleSerializer.get())
- );
+ Connection connection = dataSource.getConnection();
+ Statement statement = connection.createStatement();
+ ResultSet resultSet = statement.executeQuery("SELECT * FROM raw_metrics WHERE schedule_id = " + scheduleId);
- for (int i = 0; i < expected.size(); ++i) {
- assertPropertiesMatch("The returned columns do not match", expected.get(i), actual.get(i),
- "clock");
+ Set<MeasurementDataNumeric> actual = new HashSet<MeasurementDataNumeric>();
+ while (resultSet.next()) {
+ actual.add(new MeasurementDataNumeric(resultSet.getDate(2).getTime(), resultSet.getInt(1),
+ resultSet.getDouble(3)));
}
+ resultSet.close();
- DateTime theHour = now().hourOfDay().roundFloorCopy();
- Composite expectedComposite = new Composite();
- expectedComposite.addComponent(theHour.getMillis(), LongSerializer.get());
- expectedComposite.addComponent(scheduleId, IntegerSerializer.get());
-
- assert1HourMetricsQueueEquals(asList(HFactory.createColumn(expectedComposite, 0, CompositeSerializer.get(),
- IntegerSerializer.get())));
+ assertCollectionMatchesNoOrder("Failed to retrieve raw metric data", data, actual, "name");
}
- @Test
+ @Test(enabled = ENABLED)
public void calculateAggregatesForOneScheduleWhenDBIsEmpty() {
int scheduleId = 123;
@@ -331,7 +319,7 @@ public class MetricsServerTest {
assert6HourDataEquals(scheduleId, expected6HourData);
}
- @Test
+ @Test(enabled = ENABLED)
public void aggregateRawDataDuring9thHour() {
int scheduleId = 123;
@@ -401,7 +389,7 @@ public class MetricsServerTest {
assert1HourMetricsQueueEmpty(scheduleId);
}
- @Test
+ @Test(enabled = ENABLED)
public void aggregate1HourDataDuring12thHour() {
// set up the test fixture
int scheduleId = 123;
@@ -470,7 +458,7 @@ public class MetricsServerTest {
assert24HourDataEmpty(scheduleId);
}
- @Test
+ @Test(enabled = ENABLED)
public void aggregate6HourDataDuring24thHour() {
// set up the test fixture
int scheduleId = 123;
@@ -530,7 +518,7 @@ public class MetricsServerTest {
assert24HourMetricsQueueEmpty(scheduleId);
}
- @Test
+ @Test(enabled = ENABLED)
public void findRawDataComposites() {
DateTime beginTime = now().minusHours(4);
DateTime endTime = now();
@@ -580,7 +568,7 @@ public class MetricsServerTest {
actualData.get(29));
}
- @Test
+ @Test(enabled = ENABLED)
public void find1HourDataComposites() {
DateTime beginTime = now().minusDays(11);
DateTime endTime = now();
@@ -664,7 +652,7 @@ public class MetricsServerTest {
actualData.get(29));
}
- @Test
+ @Test(enabled = ENABLED)
public void find6HourDataComposites() {
DateTime beginTime = now().minusDays(20);
DateTime endTime = now();
11 years, 1 month
[rhq] Branch 'feature/cassandra-backend' - modules/common
by John Sanda
modules/common/cassandra-common/pom.xml | 2 -
modules/common/cassandra-common/src/main/cassandra/cql/dbsetup.cql | 18 ++++++++++
modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java | 16 ++------
3 files changed, 24 insertions(+), 12 deletions(-)
New commits:
commit 6e8a1ce1899c35ff1e22ff939eaea866424faf0d
Author: John Sanda <jsanda(a)redhat.com>
Date: Wed Oct 31 16:20:00 2012 -0400
initial commit for dbsetup.cql
This commit introduces schema management using cql. BootstrapDeployer now
executes the cql script instead of the cli script to install the schema.
Schema installation/upgrade will be done differently once we have a tool in
place such as liquibase.
diff --git a/modules/common/cassandra-common/pom.xml b/modules/common/cassandra-common/pom.xml
index 7198211..97c4446 100644
--- a/modules/common/cassandra-common/pom.xml
+++ b/modules/common/cassandra-common/pom.xml
@@ -56,7 +56,7 @@
<filtering>true</filtering>
</resource>
<resource>
- <directory>src/main/cassandra/cli</directory>
+ <directory>src/main/cassandra/cql</directory>
</resource>
</resources>
diff --git a/modules/common/cassandra-common/src/main/cassandra/cql/dbsetup.cql b/modules/common/cassandra-common/src/main/cassandra/cql/dbsetup.cql
new file mode 100644
index 0000000..52cba95
--- /dev/null
+++ b/modules/common/cassandra-common/src/main/cassandra/cql/dbsetup.cql
@@ -0,0 +1,18 @@
+CREATE KEYSPACE rhq WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
+
+USE rhq;
+
+CREATE TABLE raw_metrics (
+ schedule_id int,
+ time timestamp,
+ value double,
+ PRIMARY KEY (schedule_id, time)
+);
+
+CREATE TABLE metrics_work_queue (
+ bucket varchar,
+ time timestamp,
+ schedule_id int,
+ null_col boolean,
+ PRIMARY KEY (bucket, time, schedule_id)
+);
diff --git a/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java b/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java
index 646cb59..afb157e 100644
--- a/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java
+++ b/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java
@@ -195,28 +195,22 @@ public class BootstrapDeployer {
private void updateSchema(File basedir, String host, int port) throws CassandraException {
File binDir = new File(basedir, "bin");
- File cliScript;
+ File script = new File(binDir, "cqlsh");
SystemInfo systemInfo = SystemInfoFactory.createSystemInfo();
- if (systemInfo.getOperatingSystemType() == OperatingSystemType.WINDOWS) {
- cliScript = new File(binDir, "cassandra-cli.bat");
- } else {
- cliScript = new File(binDir, "cassandra-cli");
- }
-
File dbsetupFile = null;
try {
- dbsetupFile = File.createTempFile("dbsetup.script", null);
- InputStream inputStream = getClass().getResourceAsStream("/dbsetup.script");
+ dbsetupFile = File.createTempFile("dbsetup.cql", null);
+ InputStream inputStream = getClass().getResourceAsStream("/dbsetup.cql");
FileOutputStream outputStream = new FileOutputStream(dbsetupFile);
StreamUtil.copy(inputStream, outputStream);
} catch (IOException e) {
throw new CassandraException("Failed to load schema update script", e);
}
- ProcessExecution cliExe = ProcessExecutionUtility.createProcessExecution(cliScript);
+ ProcessExecution cliExe = ProcessExecutionUtility.createProcessExecution(script);
cliExe.setWaitForCompletion(30000L);
cliExe.setCaptureOutput(true);
- cliExe.setArguments(asList("--debug", "-f", dbsetupFile.getAbsolutePath(), "-h", host, "-p", Integer.toString(port)));
+ cliExe.setArguments(asList("-3", "--debug", "-f", dbsetupFile.getAbsolutePath()));
ProcessExecutionResults results = systemInfo.executeProcess(cliExe);
String output = results.getCapturedOutput();
11 years, 1 month
[rhq] Branch 'feature/cassandra-backend' - 2 commits - modules/common
by John Sanda
modules/common/cassandra-common-itests/src/test/java/org/rhq/cassandra/common/BootstrapDeployerTest.java | 13 ++++++----
modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java | 4 ++-
modules/common/cassandra-common/src/main/resources/cassandra-1.2.0-beta1/conf/cassandra.yaml | 4 +--
modules/common/cassandra-common/src/main/resources/deploy.xml | 10 ++++++-
4 files changed, 23 insertions(+), 8 deletions(-)
New commits:
commit d9d06489d99cd33aa8f79448bf976ef72a52a91a
Author: John Sanda <jsanda(a)redhat.com>
Date: Wed Oct 31 15:20:36 2012 -0400
Updating test to set new deployment properties
diff --git a/modules/common/cassandra-common-itests/src/test/java/org/rhq/cassandra/common/BootstrapDeployerTest.java b/modules/common/cassandra-common-itests/src/test/java/org/rhq/cassandra/common/BootstrapDeployerTest.java
index aafd644..0819a51 100644
--- a/modules/common/cassandra-common-itests/src/test/java/org/rhq/cassandra/common/BootstrapDeployerTest.java
+++ b/modules/common/cassandra-common-itests/src/test/java/org/rhq/cassandra/common/BootstrapDeployerTest.java
@@ -32,6 +32,7 @@ import static org.testng.Assert.assertTrue;
import java.io.File;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@@ -60,10 +61,14 @@ public class BootstrapDeployerTest {
File clusterDir = new File(basedir, "cassandra");
int numNodes = 2;
- DeploymentOptions deploymentOptions = new DeploymentOptions();
- deploymentOptions.setClusterDir(clusterDir.getAbsolutePath());
- deploymentOptions.setNumNodes(numNodes);
- deploymentOptions.setLoggingLevel("DEBUG");
+ Properties properties = new Properties();
+ properties.setProperty("rhq.cassandra.cluster.dir", clusterDir.getAbsolutePath());
+ properties.setProperty("rhq.cassandra.logging.level", "DEBUG");
+ properties.setProperty("rhq.cassandra.cluster.num-nodes", "2");
+ properties.setProperty("rhq.cassandra.ring.delay", "1000");
+ properties.setProperty("rhq.cassandra.node.num-tokens", "256");
+
+ DeploymentOptions deploymentOptions = new DeploymentOptions(properties);
BootstrapDeployer deployer = new BootstrapDeployer();
deployer.setDeploymentOptions(deploymentOptions);
diff --git a/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java b/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java
index 19aa4f8..646cb59 100644
--- a/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java
+++ b/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java
@@ -183,7 +183,7 @@ public class BootstrapDeployer {
return;
} catch (TTransportException e) {
try {
- Thread.sleep(3000);
+ Thread.sleep(1000);
} catch (InterruptedException e1) {
}
}
commit a9efde3c65169d13f0a99cb3ef82d286dd99f8cf
Author: John Sanda <jsanda(a)redhat.com>
Date: Wed Oct 31 15:14:41 2012 -0400
do not use dashes in bundle property names
Converted the property name rhq.cassandra.node.num-tokens to
rhq.cassandra.node.num_tokens since rhq:input-property does not like dashes in
the name attribute. Also updating BootstrapDeployer to set num-tokens property
to support overrides.
diff --git a/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java b/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java
index d7efd3e..19aa4f8 100644
--- a/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java
+++ b/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java
@@ -121,6 +121,8 @@ public class BootstrapDeployer {
props.put("cassandra.ring.delay", deploymentOptions.getRingDelay());
}
+ props.put("rhq.cassandra.node.num_tokens", deploymentOptions.getNumTokens());
+
doLocalDeploy(props, bundleDir);
startNode(nodeBasedir);
if (i == 0) {
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.2.0-beta1/conf/cassandra.yaml b/modules/common/cassandra-common/src/main/resources/cassandra-1.2.0-beta1/conf/cassandra.yaml
index 377ba65..43779d6 100644
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.2.0-beta1/conf/cassandra.yaml
+++ b/modules/common/cassandra-common/src/main/resources/cassandra-1.2.0-beta1/conf/cassandra.yaml
@@ -21,7 +21,7 @@ cluster_name: @@cluster.name(a)@
#
# If you already have a cluster with 1 token per node, and wish to migrate to
# multiple tokens per node, see http://wiki.apache.org/cassandra/Operations
-# num_tokens: 256
+num_tokens: @@rhq.cassandra.node.num_tokens(a)@
# If you haven't specified num_tokens, or have set it to the default of 1 then
# you should always specify InitialToken when setting up a production
@@ -34,7 +34,7 @@ cluster_name: @@cluster.name(a)@
# the heaviest-loaded existing node. If there is no load information
# available, such as is the case with a new cluster, it will pick
# a random token, which will lead to hot spots.
-#initial_token: @@initial.token(a)@
+#initial_token:
# See http://wiki.apache.org/cassandra/HintedHandoff
hinted_handoff_enabled: true
diff --git a/modules/common/cassandra-common/src/main/resources/deploy.xml b/modules/common/cassandra-common/src/main/resources/deploy.xml
index e07cc0e..3292086 100644
--- a/modules/common/cassandra-common/src/main/resources/deploy.xml
+++ b/modules/common/cassandra-common/src/main/resources/deploy.xml
@@ -5,6 +5,14 @@
version="${rhq.cassandra.bundle.version}"
description="A bundle for deploying RHQ Cassandra nodes.">
+ <!--
+ NOTE: the name attribute of an rhq:input-property does not support using a dash.
+ There is a convention where dashes are used in property names in rhq properties files
+ in the trailing part of a property name. If an rhq:input-property has a corresponding
+ property in cassandra.properties and contains a dash, the dash will be changed to an
+ underscore in this file.
+ -->
+
<rhq:input-property name="cluster.name"
description="The name of the cluster. This is used to prevent machines in one logical cluster from joining another"
required="true"
@@ -59,7 +67,7 @@
defaultValue="127.0.0.1"
type="string"/>
- <rhq:input-property name="rhq.cassandra.node.num-tokens"
+ <rhq:input-property name="rhq.cassandra.node.num_tokens"
description="Defines the number of tokens randomly assigned to a node on the ring. The more tokens, relative to other nodes, the larger the proportion of data that this node will store. You probably want all nodes to have the same number of tokens assuming they have equal hardware capability."
required="false"
defaultValue="256"
11 years, 1 month
[rhq] Branch 'rhq-on-as7' - modules/core modules/enterprise
by Jay Shaughnessy
modules/core/domain/src/test/java/org/rhq/core/domain/test/AbstractEJB3Test.java | 5
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/RepoManagerBeanTest.java | 714 +++++-----
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java | 226 +--
3 files changed, 469 insertions(+), 476 deletions(-)
New commits:
commit 79c592d4c907d2d499ced9b0270e266169d6c5e2
Author: Jay Shaughnessy <jshaughn(a)jshaughn.csb>
Date: Wed Oct 31 15:04:44 2012 -0400
First test class passing (RepoManagerBeanTest)
- Clean up and add comments to AbstractEJB3Test
- Convert tests to use executeInTransaction (although this isn't required
but it's cleaner).
- Tweak domain version of AbstractEJB3Test to avoid Class.forName, which
is susceptible to NoClassDefFound issues
diff --git a/modules/core/domain/src/test/java/org/rhq/core/domain/test/AbstractEJB3Test.java b/modules/core/domain/src/test/java/org/rhq/core/domain/test/AbstractEJB3Test.java
index a83b0ef..d0942b1 100644
--- a/modules/core/domain/src/test/java/org/rhq/core/domain/test/AbstractEJB3Test.java
+++ b/modules/core/domain/src/test/java/org/rhq/core/domain/test/AbstractEJB3Test.java
@@ -194,8 +194,7 @@ public abstract class AbstractEJB3Test extends Arquillian {
} else if (fileName.endsWith(".class")) {
int dot = fileName.indexOf('.');
try {
- Class<?> clazz = Class.forName(packageName + "." + fileName.substring(0, dot));
- archive.addClasses(clazz);
+ archive.addClass(packageName + "." + fileName.substring(0, dot));
} catch (Exception e) {
System.out.println("WARN: Could not add class:" + e);
}
@@ -267,7 +266,7 @@ public abstract class AbstractEJB3Test extends Arquillian {
}
protected InitialContext getInitialContext() {
- // may be null if not yet injected (as of 1.0.1.Final, only injected inside @Test)
+ // may be null if not yet injected
if (null != initialContext) {
return initialContext;
}
diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/RepoManagerBeanTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/RepoManagerBeanTest.java
index 76c6686..361007c 100644
--- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/RepoManagerBeanTest.java
+++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/RepoManagerBeanTest.java
@@ -52,59 +52,36 @@ import org.rhq.enterprise.server.util.LookupUtil;
public class RepoManagerBeanTest extends AbstractEJB3Test {
- private final static boolean ENABLED = false;
+ private final static boolean ENABLED = true;
- //@Inject
- protected RepoManagerLocal repoManager;
- //@Inject
+ protected RepoManagerLocal repoManager;
protected ContentSourceManagerLocal contentSourceManager;
-
- //@Inject
protected ContentSourceMetadataManagerLocal contentSourceMetadataManager;
+ protected SubjectManagerLocal subjectManager;
private Subject overlord;
- //@Inject
- protected SubjectManagerLocal subjectManager;
-
@Override
public void beforeMethod() throws Exception {
- System.out.println("*** 0");
-
overlord = LookupUtil.getSubjectManager().getOverlord();
- System.out.println("*** 1");
prepareScheduler();
- System.out.println("*** 2");
repoManager = LookupUtil.getRepoManagerLocal();
- System.out.println("*** 3");
contentSourceManager = LookupUtil.getContentSourceManager();
- System.out.println("*** 4");
contentSourceMetadataManager = LookupUtil.getContentSourceMetadataManager();
- System.out.println("*** 5");
// start mock plugin container
@SuppressWarnings("unused")
TestContentServerPluginService pluginService = new TestContentServerPluginService(this);
- //getTransactionManager().begin();
- //System.out.println("*** 6");
}
@Override
public void afterMethod() throws Exception {
- System.out.println("*** 7");
unprepareServerPluginService();
-
- System.out.println("*** 8");
unprepareScheduler();
-
- System.out.println("*** 9");
- //getTransactionManager().rollback();
- //System.out.println("*** 10");
}
- @Test
- // (enabled = ENABLED)
+ @Test(enabled = ENABLED)
public void createABunchOfRepos() throws Exception {
executeInTransaction(new TransactionCallback() {
@@ -128,395 +105,464 @@ public class RepoManagerBeanTest extends AbstractEJB3Test {
@Test(enabled = ENABLED)
public void createDeleteRepo() throws Exception {
- Repo repo = new Repo("testCreateDeleteRepo");
- int id = repoManager.createRepo(overlord, repo).getId();
- Repo lookedUp = repoManager.getRepo(overlord, id);
- assert lookedUp != null;
- Repo lookedUp2 = repoManager.getRepoByName(lookedUp.getName()).get(0);
- assert lookedUp2 != null;
- assert id == lookedUp.getId();
- assert id == lookedUp2.getId();
-
- repoManager.deleteRepo(overlord, id);
- lookedUp = repoManager.getRepo(overlord, id);
- assert lookedUp == null;
+ executeInTransaction(new TransactionCallback() {
+
+ public void execute() throws Exception {
+
+ Repo repo = new Repo("testCreateDeleteRepo");
+ int id = repoManager.createRepo(overlord, repo).getId();
+ Repo lookedUp = repoManager.getRepo(overlord, id);
+ assert lookedUp != null;
+ Repo lookedUp2 = repoManager.getRepoByName(lookedUp.getName()).get(0);
+ assert lookedUp2 != null;
+ assert id == lookedUp.getId();
+ assert id == lookedUp2.getId();
+
+ repoManager.deleteRepo(overlord, id);
+ lookedUp = repoManager.getRepo(overlord, id);
+ assert lookedUp == null;
+ }
+ });
}
@Test(enabled = ENABLED)
public void createDeleteRepoGroup() throws Exception {
- // Setup
- EntityManager entityManager = getEntityManager();
-
- RepoGroupType groupType = new RepoGroupType("testCreateDeleteRepoGroupType");
- entityManager.persist(groupType);
- entityManager.flush();
-
- String groupName = "testCreateDeleteRepoGroup";
- RepoGroup group = repoManager.getRepoGroupByName(groupName);
- assert group == null;
-
- // Test
- group = new RepoGroup(groupName);
- group.setRepoGroupType(groupType);
- group = repoManager.createRepoGroup(overlord, group);
-
- // Verify
- int id = group.getId();
- group = repoManager.getRepoGroup(overlord, id);
- assert group != null;
- assert group.getName().equals(groupName);
-
- // Cleanup
- repoManager.deleteRepoGroup(overlord, id);
- group = repoManager.getRepoGroup(overlord, id);
- assert group == null;
-
- entityManager.remove(groupType);
+ executeInTransaction(new TransactionCallback() {
+
+ public void execute() throws Exception {
+
+ EntityManager entityManager = getEntityManager();
+
+ RepoGroupType groupType = new RepoGroupType("testCreateDeleteRepoGroupType");
+ entityManager.persist(groupType);
+ entityManager.flush();
+
+ String groupName = "testCreateDeleteRepoGroup";
+ RepoGroup group = repoManager.getRepoGroupByName(groupName);
+ assert group == null;
+
+ // Test
+ group = new RepoGroup(groupName);
+ group.setRepoGroupType(groupType);
+ group = repoManager.createRepoGroup(overlord, group);
+
+ // Verify
+ int id = group.getId();
+ group = repoManager.getRepoGroup(overlord, id);
+ assert group != null;
+ assert group.getName().equals(groupName);
+
+ // Cleanup
+ repoManager.deleteRepoGroup(overlord, id);
+ group = repoManager.getRepoGroup(overlord, id);
+ assert group == null;
+
+ entityManager.remove(groupType);
+
+ }
+ });
}
@Test(enabled = ENABLED)
public void createFindDeleteCandidateRepo() throws Exception {
- // Setup
- Repo repo = new Repo("test create candidate repo");
-
- PageList<Repo> importedRepos = repoManager.findRepos(overlord, new PageControl());
- int origSize = 0;
- if (importedRepos != null) {
- origSize = importedRepos.size();
- }
-
- // Test
- repo.setCandidate(true);
- repo = repoManager.createRepo(overlord, repo);
-
- // Verify
- try {
- assert repo.isCandidate();
-
- // Should not be returned from this call since it's a candidate repo
- importedRepos = repoManager.findRepos(overlord, new PageControl());
- assert importedRepos.size() == origSize;
- assert repoManager.getRepo(overlord, repo.getId()) != null;
- } finally {
- repoManager.deleteRepo(overlord, repo.getId());
- }
+ executeInTransaction(new TransactionCallback() {
+
+ public void execute() throws Exception {
+
+ Repo repo = new Repo("test create candidate repo");
+
+ PageList<Repo> importedRepos = repoManager.findRepos(overlord, new PageControl());
+ int origSize = 0;
+ if (importedRepos != null) {
+ origSize = importedRepos.size();
+ }
+
+ // Test
+ repo.setCandidate(true);
+ repo = repoManager.createRepo(overlord, repo);
+
+ // Verify
+ try {
+ assert repo.isCandidate();
+
+ // Should not be returned from this call since it's a candidate repo
+ importedRepos = repoManager.findRepos(overlord, new PageControl());
+ assert importedRepos.size() == origSize;
+ assert repoManager.getRepo(overlord, repo.getId()) != null;
+ } finally {
+ repoManager.deleteRepo(overlord, repo.getId());
+ }
+ }
+ });
}
@Test(enabled = ENABLED)
public void createDuplicateRepoGroup() throws Exception {
- // Setup
- EntityManager entityManager = getEntityManager();
+ executeInTransaction(new TransactionCallback() {
+
+ public void execute() throws Exception {
- RepoGroupType groupType = new RepoGroupType("testCreateDuplicateRepoGroup");
- entityManager.persist(groupType);
- entityManager.flush();
+ EntityManager entityManager = getEntityManager();
- String groupName = "testCreateDuplicateRepoGroup";
+ RepoGroupType groupType = new RepoGroupType("testCreateDuplicateRepoGroup");
+ entityManager.persist(groupType);
+ entityManager.flush();
- RepoGroup existing = new RepoGroup(groupName);
- existing.setRepoGroupType(groupType);
- repoManager.createRepoGroup(overlord, existing);
+ String groupName = "testCreateDuplicateRepoGroup";
- existing = repoManager.getRepoGroupByName(groupName);
- assert existing != null;
+ RepoGroup existing = new RepoGroup(groupName);
+ existing.setRepoGroupType(groupType);
+ repoManager.createRepoGroup(overlord, existing);
- // Test
- RepoGroup duplicate = new RepoGroup(groupName);
- duplicate.setRepoGroupType(groupType);
+ existing = repoManager.getRepoGroupByName(groupName);
+ assert existing != null;
- try {
- repoManager.createRepoGroup(overlord, existing);
- assert false;
- } catch (RepoException e) {
- // Expected
- }
+ // Test
+ RepoGroup duplicate = new RepoGroup(groupName);
+ duplicate.setRepoGroupType(groupType);
- // Cleanup
- repoManager.deleteRepoGroup(overlord, existing.getId());
- existing = repoManager.getRepoGroup(overlord, existing.getId());
- assert existing == null;
+ try {
+ repoManager.createRepoGroup(overlord, existing);
+ assert false;
+ } catch (RepoException e) {
+ // Expected
+ }
+
+ // Cleanup
+ repoManager.deleteRepoGroup(overlord, existing.getId());
+ existing = repoManager.getRepoGroup(overlord, existing.getId());
+ assert existing == null;
- entityManager.remove(groupType);
+ entityManager.remove(groupType);
+
+ }
+ });
}
@Test(enabled = ENABLED)
public void getRepoGroupByNameNoGroup() throws Exception {
- // Test
- RepoGroup group = repoManager.getRepoGroupByName("foo");
+ executeInTransaction(new TransactionCallback() {
+
+ public void execute() throws Exception {
- assert group == null;
+ RepoGroup group = repoManager.getRepoGroupByName("foo");
+
+ assert group == null;
+ }
+ });
}
@Test(enabled = ENABLED)
public void getRepoGroupTypeByName() throws Exception {
- // Setup
- EntityManager entityManager = getEntityManager();
- String name = "test-repo-type";
-
- RepoGroupType groupType = new RepoGroupType(name);
- entityManager.persist(groupType);
- entityManager.flush();
-
- // Test
- RepoGroupType type = repoManager.getRepoGroupTypeByName(overlord, name);
- assert type != null;
- assert type.getName().equals(name);
-
- // Cleanup
- type = entityManager.find(RepoGroupType.class, type.getId());
- entityManager.remove(type);
- entityManager.flush();
+ executeInTransaction(new TransactionCallback() {
+
+ public void execute() throws Exception {
+
+ EntityManager entityManager = getEntityManager();
+ String name = "test-repo-type";
+
+ RepoGroupType groupType = new RepoGroupType(name);
+ entityManager.persist(groupType);
+ entityManager.flush();
+
+ // Test
+ RepoGroupType type = repoManager.getRepoGroupTypeByName(overlord, name);
+ assert type != null;
+ assert type.getName().equals(name);
+
+ // Cleanup
+ type = entityManager.find(RepoGroupType.class, type.getId());
+ entityManager.remove(type);
+ entityManager.flush();
+ }
+ });
}
@Test(enabled = ENABLED)
public void addRepoRelationship() throws Exception {
- // Setup
- EntityManager entityManager = getEntityManager();
+ executeInTransaction(new TransactionCallback() {
+
+ public void execute() throws Exception {
- Repo repo = new Repo("repo1");
- Repo relatedRepo = new Repo("repo2");
+ EntityManager entityManager = getEntityManager();
- repo = repoManager.createRepo(overlord, repo);
- relatedRepo = repoManager.createRepo(overlord, relatedRepo);
+ Repo repo = new Repo("repo1");
+ Repo relatedRepo = new Repo("repo2");
- String relationshipTypeName = "testRelationshipType";
- RepoRelationshipType relationshipType = new RepoRelationshipType(relationshipTypeName);
- entityManager.persist(relationshipType);
- entityManager.flush();
+ repo = repoManager.createRepo(overlord, repo);
+ relatedRepo = repoManager.createRepo(overlord, relatedRepo);
- // Test
- repoManager.addRepoRelationship(overlord, repo.getId(), relatedRepo.getId(), relationshipTypeName);
+ String relationshipTypeName = "testRelationshipType";
+ RepoRelationshipType relationshipType = new RepoRelationshipType(relationshipTypeName);
+ entityManager.persist(relationshipType);
+ entityManager.flush();
- // Verify
- RepoCriteria repoCriteria = new RepoCriteria();
- repoCriteria.fetchRepoRepoGroups(true);
- repoCriteria.addFilterId(repo.getId());
+ // Test
+ repoManager.addRepoRelationship(overlord, repo.getId(), relatedRepo.getId(), relationshipTypeName);
- PageList<Repo> repoPageList = repoManager.findReposByCriteria(overlord, repoCriteria);
- assert repoPageList.size() == 1;
+ // Verify
+ RepoCriteria repoCriteria = new RepoCriteria();
+ repoCriteria.fetchRepoRepoGroups(true);
+ repoCriteria.addFilterId(repo.getId());
- Repo persistedRepo = repoPageList.get(0);
- Set<RepoRepoRelationship> relationships = persistedRepo.getRepoRepoRelationships();
- assert relationships.size() == 1;
+ PageList<Repo> repoPageList = repoManager.findReposByCriteria(overlord, repoCriteria);
+ assert repoPageList.size() == 1;
- RepoRepoRelationship relationship = relationships.iterator().next();
- assert relationship.getRepoRepoRelationshipPK().getRepo().getName().equals("repo1");
- assert relationship.getRepoRepoRelationshipPK().getRepoRelationship().getRelatedRepo().getName()
- .equals("repo2");
- assert relationship.getRepoRepoRelationshipPK().getRepoRelationship().getRepoRelationshipType().getName()
- .equals(relationshipTypeName);
+ Repo persistedRepo = repoPageList.get(0);
+ Set<RepoRepoRelationship> relationships = persistedRepo.getRepoRepoRelationships();
+ assert relationships.size() == 1;
- // Cleanup handled by rollback in tear down method
+ RepoRepoRelationship relationship = relationships.iterator().next();
+ assert relationship.getRepoRepoRelationshipPK().getRepo().getName().equals("repo1");
+ assert relationship.getRepoRepoRelationshipPK().getRepoRelationship().getRelatedRepo().getName()
+ .equals("repo2");
+ assert relationship.getRepoRepoRelationshipPK().getRepoRelationship().getRepoRelationshipType()
+ .getName().equals(relationshipTypeName);
+ }
+ });
}
@Test(enabled = ENABLED)
public void findCandidatesByContentProvider() throws Exception {
- // Setup
- String candidateRepoName = "candidate with source";
-
- // Create a content source type and a content source
- ContentSourceType type = new ContentSourceType("testGetSyncResultsListCST");
- Set<ContentSourceType> types = new HashSet<ContentSourceType>();
- types.add(type);
- contentSourceMetadataManager.registerTypes(types); // this blows away any previous existing types
- ContentSource contentSource = new ContentSource("testGetSyncResultsListCS", type);
- contentSource = contentSourceManager.simpleCreateContentSource(overlord, contentSource);
-
- // Create an imported (non-candidate) repo associated with the source
- Repo importedRepo = new Repo("imported repo");
- importedRepo.addContentSource(contentSource);
- importedRepo = repoManager.createRepo(overlord, importedRepo);
-
- // Create a candidate repo associated with that source
- Repo candidateRepo = new Repo(candidateRepoName);
- candidateRepo.setCandidate(true);
- candidateRepo.addContentSource(contentSource);
- candidateRepo = repoManager.createRepo(overlord, candidateRepo);
-
- // Test
- RepoCriteria criteria = new RepoCriteria();
- criteria.addFilterCandidate(true);
- criteria.addFilterContentSourceIds(contentSource.getId());
- criteria.fetchRepoContentSources(true);
-
- PageList<Repo> foundRepos = repoManager.findReposByCriteria(overlord, criteria);
-
- // Verify
-
- // Make sure only one of the two repos from above came back
- assert foundRepos.size() == 1;
-
- Repo foundRepo = foundRepos.get(0);
- assert foundRepo.getName().equals(candidateRepoName);
- assert foundRepo.isCandidate();
-
- // Cleanup handled by rollback in tear down method
+ executeInTransaction(new TransactionCallback() {
+
+ public void execute() throws Exception {
+
+ String candidateRepoName = "candidate with source";
+
+ // Create a content source type and a content source
+ ContentSourceType type = new ContentSourceType("testGetSyncResultsListCST");
+ Set<ContentSourceType> types = new HashSet<ContentSourceType>();
+ types.add(type);
+ contentSourceMetadataManager.registerTypes(types); // this blows away any previous existing types
+ ContentSource contentSource = new ContentSource("testGetSyncResultsListCS", type);
+ contentSource = contentSourceManager.simpleCreateContentSource(overlord, contentSource);
+
+ // Create an imported (non-candidate) repo associated with the source
+ Repo importedRepo = new Repo("imported repo");
+ importedRepo.addContentSource(contentSource);
+ importedRepo = repoManager.createRepo(overlord, importedRepo);
+
+ // Create a candidate repo associated with that source
+ Repo candidateRepo = new Repo(candidateRepoName);
+ candidateRepo.setCandidate(true);
+ candidateRepo.addContentSource(contentSource);
+ candidateRepo = repoManager.createRepo(overlord, candidateRepo);
+
+ // Test
+ RepoCriteria criteria = new RepoCriteria();
+ criteria.addFilterCandidate(true);
+ criteria.addFilterContentSourceIds(contentSource.getId());
+ criteria.fetchRepoContentSources(true);
+
+ PageList<Repo> foundRepos = repoManager.findReposByCriteria(overlord, criteria);
+
+ // Verify
+
+ // Make sure only one of the two repos from above came back
+ assert foundRepos.size() == 1;
+
+ Repo foundRepo = foundRepos.get(0);
+ assert foundRepo.getName().equals(candidateRepoName);
+ assert foundRepo.isCandidate();
+
+ }
+ });
}
@Test(enabled = ENABLED)
public void importCandidateRepo() throws Exception {
- // Setup
- Repo candidate = new Repo("create me");
- candidate.setCandidate(true);
- Repo created = repoManager.createRepo(overlord, candidate);
-
- // Test
- List<Integer> repoIds = new ArrayList<Integer>(1);
- repoIds.add(created.getId());
- repoManager.importCandidateRepo(overlord, repoIds);
-
- // Verify
- RepoCriteria repoCriteria = new RepoCriteria();
- repoCriteria.addFilterId(created.getId());
-
- PageList<Repo> repoList = repoManager.findReposByCriteria(overlord, repoCriteria);
- assert repoList.size() == 1;
-
- Repo verify = repoList.get(0);
- assert verify != null;
- assert !verify.isCandidate();
+ executeInTransaction(new TransactionCallback() {
+
+ public void execute() throws Exception {
+
+ Repo candidate = new Repo("create me");
+ candidate.setCandidate(true);
+ Repo created = repoManager.createRepo(overlord, candidate);
+
+ // Test
+ List<Integer> repoIds = new ArrayList<Integer>(1);
+ repoIds.add(created.getId());
+ repoManager.importCandidateRepo(overlord, repoIds);
+
+ // Verify
+ RepoCriteria repoCriteria = new RepoCriteria();
+ repoCriteria.addFilterId(created.getId());
+
+ PageList<Repo> repoList = repoManager.findReposByCriteria(overlord, repoCriteria);
+ assert repoList.size() == 1;
+
+ Repo verify = repoList.get(0);
+ assert verify != null;
+ assert !verify.isCandidate();
+ }
+ });
}
@Test(enabled = ENABLED)
public void importCandidateRepoBadId() throws Exception {
- // Test
- try {
- List<Integer> repoIds = new ArrayList<Integer>(1);
- repoIds.add(12345);
- repoManager.importCandidateRepo(overlord, repoIds);
- assert false;
- } catch (RepoException e) {
- // Expected
- }
+ executeInTransaction(new TransactionCallback() {
+
+ public void execute() throws Exception {
+
+ try {
+ List<Integer> repoIds = new ArrayList<Integer>(1);
+ repoIds.add(12345);
+ repoManager.importCandidateRepo(overlord, repoIds);
+ assert false;
+ } catch (RepoException e) {
+ // Expected
+ }
+ }
+ });
}
@Test(enabled = ENABLED)
public void importNonCandidateRepo() throws Exception {
- // Setup
- Repo nonCandidate = new Repo("create me");
- Repo created = repoManager.createRepo(overlord, nonCandidate);
-
- // Test
- try {
- List<Integer> repoIds = new ArrayList<Integer>(1);
- repoIds.add(created.getId());
- repoManager.importCandidateRepo(overlord, repoIds);
- assert false;
- } catch (RepoException e) {
- // Expected
- }
+ executeInTransaction(new TransactionCallback() {
+
+ public void execute() throws Exception {
+ Repo nonCandidate = new Repo("create me");
+ Repo created = repoManager.createRepo(overlord, nonCandidate);
+
+ // Test
+ try {
+ List<Integer> repoIds = new ArrayList<Integer>(1);
+ repoIds.add(created.getId());
+ repoManager.importCandidateRepo(overlord, repoIds);
+ assert false;
+ } catch (RepoException e) {
+ // Expected
+ }
+ }
+ });
}
@Test(enabled = ENABLED)
public void deleteCandidatesForContentSource() throws Exception {
- // Setup
- ContentSourceType contentSourceType = new ContentSourceType("testSourceType");
- Set<ContentSourceType> types = new HashSet<ContentSourceType>(1);
- types.add(contentSourceType);
- contentSourceMetadataManager.registerTypes(types);
-
- ContentSource source1 = new ContentSource("testSource1", contentSourceType);
- source1 = contentSourceManager.simpleCreateContentSource(overlord, source1);
-
- ContentSource source2 = new ContentSource("testSource2", contentSourceType);
- source2 = contentSourceManager.simpleCreateContentSource(overlord, source2);
-
- // -> Only has source to delete, should be deleted
- Repo repo1 = new Repo("repo1");
- repo1.setCandidate(true);
- repo1.addContentSource(source1);
-
- // -> Has different source, should not be deleted
- Repo repo2 = new Repo("repo2");
- repo2.setCandidate(true);
- repo2.addContentSource(source2);
-
- // -> Has source to delete and another source, should not be deleted
- Repo repo3 = new Repo("repo3");
- repo3.setCandidate(true);
- repo3.addContentSource(source1);
- repo3.addContentSource(source2);
-
- // -> No sources, should not be deleted
- Repo repo4 = new Repo("repo4");
- repo4.setCandidate(true);
-
- repo1 = repoManager.createRepo(overlord, repo1);
- repo2 = repoManager.createRepo(overlord, repo2);
- repo3 = repoManager.createRepo(overlord, repo3);
- repo4 = repoManager.createRepo(overlord, repo4);
-
- // Test
- repoManager.deleteCandidatesWithOnlyContentSource(overlord, source1.getId());
-
- // Verify
- assert repoManager.getRepo(overlord, repo1.getId()) == null;
- assert repoManager.getRepo(overlord, repo2.getId()) != null;
- assert repoManager.getRepo(overlord, repo3.getId()) != null;
- assert repoManager.getRepo(overlord, repo4.getId()) != null;
+ executeInTransaction(new TransactionCallback() {
+
+ public void execute() throws Exception {
+
+ ContentSourceType contentSourceType = new ContentSourceType("testSourceType");
+ Set<ContentSourceType> types = new HashSet<ContentSourceType>(1);
+ types.add(contentSourceType);
+ contentSourceMetadataManager.registerTypes(types);
+
+ ContentSource source1 = new ContentSource("testSource1", contentSourceType);
+ source1 = contentSourceManager.simpleCreateContentSource(overlord, source1);
+
+ ContentSource source2 = new ContentSource("testSource2", contentSourceType);
+ source2 = contentSourceManager.simpleCreateContentSource(overlord, source2);
+
+ // -> Only has source to delete, should be deleted
+ Repo repo1 = new Repo("repo1");
+ repo1.setCandidate(true);
+ repo1.addContentSource(source1);
+
+ // -> Has different source, should not be deleted
+ Repo repo2 = new Repo("repo2");
+ repo2.setCandidate(true);
+ repo2.addContentSource(source2);
+
+ // -> Has source to delete and another source, should not be deleted
+ Repo repo3 = new Repo("repo3");
+ repo3.setCandidate(true);
+ repo3.addContentSource(source1);
+ repo3.addContentSource(source2);
+
+ // -> No sources, should not be deleted
+ Repo repo4 = new Repo("repo4");
+ repo4.setCandidate(true);
+
+ repo1 = repoManager.createRepo(overlord, repo1);
+ repo2 = repoManager.createRepo(overlord, repo2);
+ repo3 = repoManager.createRepo(overlord, repo3);
+ repo4 = repoManager.createRepo(overlord, repo4);
+
+ // Test
+ repoManager.deleteCandidatesWithOnlyContentSource(overlord, source1.getId());
+
+ // Verify
+ assert repoManager.getRepo(overlord, repo1.getId()) == null;
+ assert repoManager.getRepo(overlord, repo2.getId()) != null;
+ assert repoManager.getRepo(overlord, repo3.getId()) != null;
+ assert repoManager.getRepo(overlord, repo4.getId()) != null;
+ }
+ });
}
@Test(enabled = ENABLED)
public void updateRepoWithProvider() throws Exception {
// See BZ 537216 for more details
- // Setup
- String newName = "newRepo-" + RandomStringUtils.randomAlphanumeric(6);
- String oldName = "testRepo-" + RandomStringUtils.randomAlphanumeric(6);
+ executeInTransaction(new TransactionCallback() {
+
+ public void execute() throws Exception {
+
+ String newName = "newRepo-" + RandomStringUtils.randomAlphanumeric(6);
+ String oldName = "testRepo-" + RandomStringUtils.randomAlphanumeric(6);
- ContentSourceType contentSourceType = new ContentSourceType("testSourceType");
+ ContentSourceType contentSourceType = new ContentSourceType("testSourceType");
- Set<ContentSourceType> types = new HashSet<ContentSourceType>(1);
- types.add(contentSourceType);
- contentSourceMetadataManager.registerTypes(types);
+ Set<ContentSourceType> types = new HashSet<ContentSourceType>(1);
+ types.add(contentSourceType);
+ contentSourceMetadataManager.registerTypes(types);
- ContentSource source = new ContentSource("testSource1", contentSourceType);
- source = contentSourceManager.simpleCreateContentSource(overlord, source);
+ ContentSource source = new ContentSource("testSource1", contentSourceType);
+ source = contentSourceManager.simpleCreateContentSource(overlord, source);
- Repo repo = new Repo(oldName);
- repo = repoManager.createRepo(overlord, repo);
+ Repo repo = new Repo(oldName);
+ repo = repoManager.createRepo(overlord, repo);
- repoManager.simpleAddContentSourcesToRepo(overlord, repo.getId(), new int[] { source.getId() });
+ repoManager.simpleAddContentSourcesToRepo(overlord, repo.getId(), new int[] { source.getId() });
- // Test
- repo.setName(newName);
- repoManager.updateRepo(overlord, repo);
+ // Test
+ repo.setName(newName);
+ repoManager.updateRepo(overlord, repo);
- // Verify
- RepoCriteria byName = new RepoCriteria();
- byName.addFilterName(newName);
- PageList<Repo> reposWithNewName = repoManager.findReposByCriteria(overlord, byName);
+ // Verify
+ RepoCriteria byName = new RepoCriteria();
+ byName.addFilterName(newName);
+ PageList<Repo> reposWithNewName = repoManager.findReposByCriteria(overlord, byName);
- assert reposWithNewName.size() == 1;
+ assert reposWithNewName.size() == 1;
- byName = new RepoCriteria();
- byName.addFilterName(oldName);
- PageList<Repo> reposWithOldName = repoManager.findReposByCriteria(overlord, byName);
+ byName = new RepoCriteria();
+ byName.addFilterName(oldName);
+ PageList<Repo> reposWithOldName = repoManager.findReposByCriteria(overlord, byName);
- assert reposWithOldName.size() == 0;
+ assert reposWithOldName.size() == 0;
+ }
+ });
}
@Test(enabled = ENABLED)
public void updateSyncSchedule() {
- Repo repo = new Repo("updateSyncSchedule");
- repo.setSyncSchedule("NOT A VALID CRON");
- boolean failed = false;
- try {
- repo = repoManager.createRepo(overlord, repo);
- } catch (RepoException e) {
- failed = true;
- }
- assert failed;
-
- failed = false;
- repo.setSyncSchedule("0 0 3 * * ?");
- try {
- repo = repoManager.createRepo(overlord, repo);
- } catch (RepoException e) {
- failed = true;
- }
- assert !failed;
- }
+ executeInTransaction(new TransactionCallback() {
+
+ public void execute() throws Exception {
+ Repo repo = new Repo("updateSyncSchedule");
+ repo.setSyncSchedule("NOT A VALID CRON");
+ boolean failed = false;
+ try {
+ repo = repoManager.createRepo(overlord, repo);
+ } catch (RepoException e) {
+ failed = true;
+ }
+ assert failed;
+
+ failed = false;
+ repo.setSyncSchedule("0 0 3 * * ?");
+ try {
+ repo = repoManager.createRepo(overlord, repo);
+ } catch (RepoException e) {
+ failed = true;
+ }
+ assert !failed;
+ }
+ });
+ }
}
\ No newline at end of file
diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
index c62b521..8064bdc 100644
--- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
+++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
@@ -5,7 +5,6 @@ import java.lang.management.ManagementFactory;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collection;
-import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Properties;
@@ -30,13 +29,12 @@ import org.jboss.shrinkwrap.api.ArchivePaths;
import org.jboss.shrinkwrap.api.Filters;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
-import org.jboss.shrinkwrap.api.exporter.ZipExporter;
import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
-import org.jboss.shrinkwrap.impl.base.exporter.zip.ZipExporterImpl;
import org.jboss.shrinkwrap.resolver.api.DependencyResolvers;
import org.jboss.shrinkwrap.resolver.api.maven.MavenDependencyResolver;
+import org.rhq.core.db.DatabaseTypeFactory;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.util.MessageDigestGenerator;
import org.rhq.core.util.exception.ThrowableUtil;
@@ -69,58 +67,40 @@ public abstract class AbstractEJB3Test extends Arquillian {
@ArquillianResource
protected InitialContext initialContext;
- // We originally deployed the jar as a JavaArchive (JAR file). But this ran into problems because
- // of the dependent 3rd party jars. There isn't an obvious way to deploy the dependent jars of a jar.
- // Also, AS7 makes it hard to put them in a globally accessibly /lib directory due to
- // its classloader isolation and module approach. So, we now deploy an EnterpriseArchive (ear)
- // where the ejb jar is deployed as a module and the 3rd party libraries are put in the ear's /lib.
+ // We originally (in 4.2.3 days) ran these tests as "unit" tests in the server/jar module using
+ // the embedded conatiner. With Arquillian it makes sense to actually deploy an EAR because
+ // we need a way to deploy dependent ears needed to support the server/jar classes. But
+ // building this jar up (as is done in core/domain) was too difficult due to the huge number
+ // of dependencies. It was easier, and probably more sensical, to use the already built rhq.ear
+ // and run as true integration tests. We do thin rhq.ear by removing all of the WAR files, and
+ // deploy only the EJB jars, and the services, which are really the objects under test.
@Deployment
protected static EnterpriseArchive getBaseDeployment() {
- // depending on the db in use, set up the necessary datasource
- String dialect = System.getProperty("hibernate.dialect");
- if (dialect == null) {
- System.out.println("!!! hibernate.dialect is not set! Assuming you want to test on postgres");
- dialect = "postgres";
- }
-
- @SuppressWarnings("unused")
- String dataSourceXml;
- if (dialect.toLowerCase().contains("postgres")) {
- dataSourceXml = "jbossas-postgres-ds.xml";
- } else {
- dataSourceXml = "jbossas-oracle-ds.xml";
- }
-
- MavenDependencyResolver jarResolver = DependencyResolvers.use(MavenDependencyResolver.class);
- //resolver.loadMetadataFromPom("pom.xml");
-
- // Create the ejb jar which will subsequently be packaged in the ear deployment
- // JavaArchive serverJar = ShrinkWrap.create(JavaArchive.class, "rhq-enterprise-server-ejb3.jar") //
- // .addAsManifestResource(dataSourceXml) // the datasource
- // .addAsManifestResource("ejb-jar.xml") // the empty ejb jar descriptor
- // .addAsManifestResource("test-persistence.xml", "persistence.xml") // the test persistence context
- // .addAsManifestResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml") // add CDI injection (needed by arquillian injection)
- // );
-
- // server jar classes
- // serverJar = addClasses(serverJar, new File("../jar/target/classes/org"), null);
- // JavaArchive serverJar = ShrinkWrap.create(JavaArchive.class, "rhq-enterprise-server-ejb3.jar");
- // JavaArchive artifact = jarResolver.artifact("org.rhq:rhq-enterprise-server:4.6.0-SNAPSHOT")
- // .resolveAs(JavaArchive.class).iterator().next();
- // serverJar.merge(artifact, Filters.exclude(".*META-INF.*"));
- // serverJar.addAsManifestResource(dataSourceXml) // the datasource
- // .addAsManifestResource("ejb-jar.xml") // the empty ejb jar descriptor
- // .addAsManifestResource("test-persistence.xml", "persistence.xml") // the test persistence context
- // .addAsManifestResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml")); // add CDI injection (needed by arquillian injection)
-
- // System.out.println("** The Deployment EJB JAR: " + serverJar.toString(true) + "\n");
-
+ //TODO: Get to work with Oracle or Postgres, currently the standalone.xml is canned and
+ // using Postgres only. This is likely to be done in pom.xml as opposed to here, so commenting
+ // out.
+ // // depending on the db in use, set up the necessary datasource
+ // String dialect = System.getProperty("hibernate.dialect");
+ // if (dialect == null) {
+ // System.out.println("!!! hibernate.dialect is not set! Assuming you want to test on postgres");
+ // dialect = "postgres";
+ // }
+ //
+ // @SuppressWarnings("unused")
+ // String dataSourceXml;
+ // if (dialect.toLowerCase().contains("postgres")) {
+ // dataSourceXml = "jbossas-postgres-ds.xml";
+ // } else {
+ // dataSourceXml = "jbossas-oracle-ds.xml";
+ // }
+
+ // deploy the test classes in their own jar, under /lib
JavaArchive testClassesJar = ShrinkWrap.create(JavaArchive.class, "test-classes.jar");
testClassesJar = addClasses(testClassesJar, new File("target/test-classes/org"), null);
- // non itests-2 RHQ classes in use by test classes
+ // add non itests-2 RHQ classes used by the test classes, as well as needed resources
testClassesJar.addClass(ThrowableUtil.class);
testClassesJar.addClass(MessageDigestGenerator.class);
testClassesJar.addClass(StreamUtil.class);
@@ -129,58 +109,36 @@ public abstract class AbstractEJB3Test extends Arquillian {
testClassesJar.addAsManifestResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml")); // add CDI injection (needed by arquillian injection);
testClassesJar.addAsResource("test-scheduler.properties");
- // create test ear
+ // create test ear by starting with rhq.ear and thinning it
MavenDependencyResolver earResolver = DependencyResolvers.use(MavenDependencyResolver.class);
// this must be named rhq.ear because the "rhq" portion is used in the jndi names
- EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "rhq.ear");
- EnterpriseArchive ear2 = earResolver.artifact("org.rhq:rhq-enterprise-server-ear:ear:4.6.0-SNAPSHOT")
+ EnterpriseArchive testEar = ShrinkWrap.create(EnterpriseArchive.class, "rhq.ear");
+ EnterpriseArchive rhqEar = earResolver.artifact("org.rhq:rhq-enterprise-server-ear:ear:4.6.0-SNAPSHOT")
.resolveAs(EnterpriseArchive.class).iterator().next();
- //ear = ear.merge(ear2, Filters.exclude(".*\\.war.*|.*application.xml.*|.*rhq-enterprise-server-ejb3.*"));
- ear = ear.merge(ear2, Filters.include("/lib.*|/rhq.*ejb3\\.jar.*|/rhq-enterprise-server-services-sar.*"));
-
- // ear.addAsModule((resolver.artifact("org.rhq:rhq-enterprise-server:4.6.0-SNAPSHOT").resolveAsFiles())[0],
- // "rhq-core-enterprise-server-ejb3.jar");
- // ear.addAsModule((resolver.artifact("org.rhq:rhq-core-domain:4.6.0-SNAPSHOT").resolveAsFiles())[0],
- // "rhq-core-domain-ejb3.jar");
- //ear.getAsType(JavaArchive.class, "rhq-enterprise-server-ejb3.jar")
- //ear = ear.addAsModule(serverJar); // the jar under test
- ear = ear.addAsLibrary(testClassesJar); // the actual test classes
- ear = ear.addAsManifestResource("jboss-deployment-structure.xml");
- ear = ear.setApplicationXML("application.xml"); // the application xml declaring the ejb jar
- //ear = ear.addAsLibrary("persistence.jar");
-
- //System.out.println("** The Deployment EAR: " + ear.toString(true) + "\n");
-
- //ear.delete("rhq-portal.war");
- //ear.delete("coregui.war");
-
- // ear.merge(resolver.artifact("org.rhq:rhq-enterprise-server-ear:4.6.0-SNAPSHOT")
- // .resolveAs(EnterpriseArchive.class).iterator().next());
- // .addAsModule(ejbJar) // the jar under test
- // .addAsLibrary(testClassesJar) // the actual test classes
- // .setApplicationXML("application.xml"); // the application xml declaring the ejb jar
-
- // Adding the 3rd party jars is not easy. There were basically two approaches I could think of:
- //
- // 1) Use the MavenDependencyResolver to figure out and add all of the test deps and put them in lib
- //
- // This immediately ran into trouble as there were way more jars sucked in than were actually necessary.
- // Furthermore, it included arquillian, shrinkwrap, jboss, etc.. lots of jars that actually caused
- // issues like locking and other horrible things due, I suppose, to just stepping all over the test env
- // set up by Arquillian. So, the next step was to try and start excluding the unwanted jars. This was
- // tedious and difficult and I didn't really get it close to working before giving up and going with
- // option 2.
- //
- // 2) Use the MavenDependencyResolver to locate and pull just the artifacts we need.
- //
- // This is annoying because it's basically duplicating the same sort of effort that we already
- // use maven to do for us. It involves running, failing on NoClassDefFound, fixing it, repeat. It
- // does pull in necessary transitive deps but sometimes it pulls in unwanted transitive deps. So,
- // we still end up having to do some exclusion filtering. Since Shrinkwrap has weak and buggy
- // filtering, we have some homegrown filtering methods below.
- // TODO: Is there any way to not have to specify the versions for the transitive deps? This is brittle as is.
-
- //load 3rd party deps explicitly
+ // merge rhq.ear into testEar but include only the EJB jars, the SAR, and the supporting libraries
+ testEar = testEar.merge(rhqEar,
+ Filters.include("/lib.*|/rhq.*ejb3\\.jar.*|/rhq-enterprise-server-services-sar.*"));
+ // remove startup beans and shutdown listeners, we don't want this to be a full server deployment. The tests
+ // start/stop what they need, typically with test services or mocks.
+ testEar.delete(ArchivePaths
+ .create("/rhq-enterprise-server-ejb3.jar/org/rhq/enterprise/server/core/StartupBean.class"));
+ testEar.delete(ArchivePaths
+ .create("/rhq-enterprise-server-ejb3.jar/org/rhq/enterprise/server/core/StartupBean$1.class"));
+ testEar.delete(ArchivePaths
+ .create("/rhq-enterprise-server-ejb3.jar/org/rhq/enterprise/server/core/StartupBeanPreparation.class"));
+ testEar.delete(ArchivePaths
+ .create("/rhq-enterprise-server-ejb3.jar/org/rhq/enterprise/server/core/ShutdownListener.class"));
+
+ // add the test classes to the deployment
+ testEar.addAsLibrary(testClassesJar);
+
+ // add the necessary AS7 dependency modules
+ testEar.addAsManifestResource("jboss-deployment-structure.xml");
+
+ // add the application xml declaring the ejb jars
+ testEar.setApplicationXML("application.xml");
+
+ // add additional 3rd party dependent jars needed to support test classes
MavenDependencyResolver resolver = DependencyResolvers.use(MavenDependencyResolver.class);
resolver.loadMetadataFromPom("pom.xml");
Collection<JavaArchive> dependencies = new HashSet<JavaArchive>();
@@ -188,26 +146,25 @@ public abstract class AbstractEJB3Test extends Arquillian {
dependencies.addAll(resolver.artifact("org.liquibase:liquibase-core").resolveAs(JavaArchive.class));
dependencies.addAll(resolver.artifact("org.rhq:test-utils").resolveAs(JavaArchive.class));
dependencies.addAll(resolver.artifact("org.rhq.helpers:perftest-support").resolveAs(JavaArchive.class));
- //dependencies.addAll(resolver.artifact("commons-io:commons-io").resolveAs(JavaArchive.class));
- //dependencies.addAll(resolver.artifact("org.unitils:unitils-testng:3.1").resolveAs(JavaArchive.class));
- //dependencies.addAll(resolver.artifact("org.rhq:rhq-core-domain").resolveAs(JavaArchive.class));
+ // exclude any transitive deps we don't want
String[] excludeFilters = { "testng.*jdk", "rhq-core-domain.*jar" };
- //
dependencies = exclude(dependencies, excludeFilters);
- ear = ear.addAsLibraries(dependencies);
- // ear.addAsModule((resolver.artifact("org.rhq:rhq-core-domain").resolveAsFiles())[0], "rhq-core-domain-ejb3.jar");
- //System.out.println("** The Deployment EAR: " + ear.toString(true) + "\n");
+ testEar.addAsLibraries(dependencies);
- try {
- ZipExporter exporter = new ZipExporterImpl(ear);
- exporter.exportTo(new File("/home/jshaughn/temp/test-ear.ear"), true);
- } catch (Exception e) {
- e.printStackTrace();
- }
+ // Print out the test EAR structure
+ // System.out.println("** The Deployment EAR: " + ear.toString(true) + "\n");
+
+ // Save the test EAR to a zip file for inspection (set file explicitly)
+ // try {
+ // ZipExporter exporter = new ZipExporterImpl(ear);
+ // exporter.exportTo(new File("/home/jshaughn/temp/test-ear.ear"), true);
+ // } catch (Exception e) {
+ // e.printStackTrace();
+ // }
- return ear;
+ return testEar;
}
/**
@@ -265,7 +222,6 @@ public abstract class AbstractEJB3Test extends Arquillian {
} else if (fileName.endsWith(".class")) {
int dot = fileName.indexOf('.');
try {
- //Class<?> clazz = Class.forName(packageName + "." + fileName.substring(0, dot));
archive.addClass(packageName + "." + fileName.substring(0, dot));
} catch (Exception e) {
System.out.println("WARN: Could not add class:" + e);
@@ -291,7 +247,24 @@ public abstract class AbstractEJB3Test extends Arquillian {
// one time, and doing it in container allows for the expected injections and context.
if (inContainer()) {
try {
+ // Make sure we set the db type for tests that may need it (normally done in StartupBean)
+ if (null == DatabaseTypeFactory.getDefaultDatabaseType()) {
+ Connection conn = null;
+ try {
+ conn = getConnection();
+ DatabaseTypeFactory.setDefaultDatabaseType(DatabaseTypeFactory.getDatabaseType(conn));
+ } catch (Exception e) {
+ System.err.println("!!! WARNING !!! cannot set default database type, some tests may fail");
+ e.printStackTrace();
+ } finally {
+ if (null != conn) {
+ conn.close();
+ }
+ }
+ }
+
beforeMethod();
+
} catch (Throwable t) {
// Arquillian is eating these, make sure they show up in some way
System.out.println("BEFORE METHOD FAILURE, TEST DID NOT RUN!!! " + t.getMessage());
@@ -345,7 +318,7 @@ public abstract class AbstractEJB3Test extends Arquillian {
}
protected InitialContext getInitialContext() {
- // may be null if not yet injected (as of 1.0.1.Final, only injected inside @Test)
+ // may be null if not yet injected
if (null != initialContext) {
return initialContext;
}
@@ -530,18 +503,6 @@ public abstract class AbstractEJB3Test extends Arquillian {
AssertJUnit.fail(message);
}
- private final long DEFAULT_OFFSET = 50;
- private long referenceTime = new Date().getTime();
-
- public Date getAnotherDate() {
- return getAnotherDate(DEFAULT_OFFSET);
- }
-
- public Date getAnotherDate(long offset) {
- referenceTime += offset;
- return new Date(referenceTime);
- }
-
/**
* If you need to test server plugins, you must first prepare the server plugin service.
* After this returns, the caller must explicitly start the PC by using the appropriate API
@@ -616,19 +577,6 @@ public abstract class AbstractEJB3Test extends Arquillian {
mbs.registerMBean(schedulerService, SchedulerServiceMBean.SCHEDULER_MBEAN_NAME);
schedulerService.startQuartzScheduler();
- // MBeanServer mbs = getPlatformMBeanServer();
- // schedulerService = MBeanServerInvocationHandler.newProxyInstance(mbs,
- // SchedulerServiceMBean.SCHEDULER_MBEAN_NAME, SchedulerServiceMBean.class, false);
- //
- // Properties quartzProps = new Properties();
- // quartzProps.load(this.getClass().getClassLoader().getResourceAsStream("test-scheduler.properties"));
- // //schedulerService = LookupUtil.getSchedulerBean();
- // //schedulerService = new SchedulerService();
- // schedulerService.setQuartzProperties(quartzProps);
- // //schedulerService.start();
- // //getJBossMBeanServer().registerMBean(schedulerService, SchedulerServiceMBean.SCHEDULER_MBEAN_NAME);
- // schedulerService.startQuartzScheduler();
- // return;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
@@ -641,7 +589,7 @@ public abstract class AbstractEJB3Test extends Arquillian {
public void unprepareScheduler(boolean beanOnly) throws Exception {
if (schedulerService != null) {
- //schedulerService.stop();
+ schedulerService.stop();
schedulerService = null;
MBeanServer mbs = getPlatformMBeanServer();
11 years, 1 month
[rhq] Branch 'jsanda/cassandra-plugin' - modules/plugins
by snegrea
modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/JMXServerComponent.java | 11 +++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
New commits:
commit d0b0040ea7aaabd38c8c414f9e6d2397372a0866
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Wed Oct 31 13:35:00 2012 -0500
One more updated for the code that attempts to reconnect to the JMX server. Before attempting to reconnect, attempt to close the existing connection to avoid thread leaks from underlying resources.
diff --git a/modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/JMXServerComponent.java b/modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/JMXServerComponent.java
index 412096d..14f43b9 100644
--- a/modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/JMXServerComponent.java
+++ b/modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/JMXServerComponent.java
@@ -132,10 +132,19 @@ public class JMXServerComponent<T extends ResourceComponent<?>> implements JMXCo
*/
private synchronized void reconnectIfDisconnected() {
if ((connectionProvider) == null || !connectionProvider.isConnected()) {
+ if (connection != null) {
+ try {
+ connection.close();
+ } catch (Exception e) {
+ log.debug("Unable to close existing EmsConnection for " + context.getResourceType() + "["
+ + context.getResourceKey() + "] due to error: " + e);
+ }
+ }
+
try {
internalStart();
} catch (Exception e) {
- log.debug("Still unable to reconnect to " + context.getResourceType() + "[" + context.getResourceKey()
+ log.debug("Unable to reconnect to " + context.getResourceType() + "[" + context.getResourceKey()
+ "] due to error: " + e);
}
}
11 years, 1 month
[rhq] Branch 'feature/cassandra-backend' - modules/common modules/enterprise
by John Sanda
modules/common/cassandra-common/src/main/java/org/rhq/cassandra/DeploymentOptions.java | 13 ++++++
modules/common/cassandra-common/src/main/resources/cassandra-1.2.0-beta1/conf/log4j-server.properties | 4 -
modules/common/cassandra-common/src/main/resources/cassandra.properties | 8 +++
modules/common/cassandra-common/src/main/resources/deploy.xml | 6 ++
modules/enterprise/server/appserver/src/main/scripts/rhq-container.build.xml | 21 ++++++++++
5 files changed, 50 insertions(+), 2 deletions(-)
New commits:
commit 08f50d7711680f38bc2898efafae2feb10b8b174
Author: John Sanda <jsanda(a)redhat.com>
Date: Wed Oct 31 14:21:27 2012 -0400
adding num-tokens and ring.delay properties to bundle recipe
Also updating container build to include num-tokens and ring.delay in
rhq-server.properties. This commit also updates the log4j-server.properties
file in the bundle so that logging levels are set according to the
rhq.cassandra.logging.level property.
diff --git a/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/DeploymentOptions.java b/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/DeploymentOptions.java
index 4bbc858..60cb9a3 100644
--- a/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/DeploymentOptions.java
+++ b/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/DeploymentOptions.java
@@ -48,6 +48,7 @@ public class DeploymentOptions {
private Boolean embedded;
private String loggingLevel;
private Long ringDelay;
+ private Integer numTokens;
public DeploymentOptions() {
init(loadProperties());
@@ -94,6 +95,8 @@ public class DeploymentOptions {
if (ringDelay != null && !ringDelay.isEmpty()) {
setRingDelay(Long.valueOf(ringDelay));
}
+
+ setNumTokens(Integer.valueOf(loadProperty("rhq.cassandra.node.num-tokens", properties)));
}
private String loadProperty(String key, Properties properties) {
@@ -194,4 +197,14 @@ public class DeploymentOptions {
}
}
+ public Integer getNumTokens() {
+ return numTokens;
+ }
+
+ public void setNumTokens(int numTokens) {
+ if (this.numTokens == null) {
+ this.numTokens = numTokens;
+ }
+ }
+
}
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.2.0-beta1/conf/log4j-server.properties b/modules/common/cassandra-common/src/main/resources/cassandra-1.2.0-beta1/conf/log4j-server.properties
index d3081e6..08ecb45 100644
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.2.0-beta1/conf/log4j-server.properties
+++ b/modules/common/cassandra-common/src/main/resources/cassandra-1.2.0-beta1/conf/log4j-server.properties
@@ -24,7 +24,7 @@ log4j.rootLogger=@@logging.level@(a),stdout,R,tracing
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d{HH:mm:ss,SSS} %m%n
-log4j.appender.stdout.Threshold=INFO
+log4j.appender.stdout.Threshold=@@logging.level(a)@
# rolling log file
log4j.appender.R=org.apache.log4j.RollingFileAppender
@@ -34,7 +34,7 @@ log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%5p [%t] %d{ISO8601} %F (line %L) %m%n
# Edit the next line to point to your logs directory
log4j.appender.R.File=@@rhq.deploy.dir@@/@@log.dir@(a)/system.log
-log4j.appender.R.Threshold=INFO
+log4j.appender.R.Threshold=@@logging.level(a)@
log4j.appender.tracing=org.apache.cassandra.tracing.TracingAppender
log4j.appender.tracing.layout=org.apache.log4j.PatternLayout
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra.properties b/modules/common/cassandra-common/src/main/resources/cassandra.properties
index 1d1247d..389d765 100644
--- a/modules/common/cassandra-common/src/main/resources/cassandra.properties
+++ b/modules/common/cassandra-common/src/main/resources/cassandra.properties
@@ -11,6 +11,14 @@ rhq.cassandra.bundle.version=1.0
# the value from the cassandra.ring_delay_ms system property
# rhq.cassandra.ring.delay
+# Defines the number of tokens randomly assigned to a node on the ring. The more tokens,
+# relative to other nodes, the larger the proportion of data that this node will store. You
+# probably want all nodes to have the same number of tokens assuming they have equal
+# hardware capability. Tokens are randomly generated with the expectation of an even
+# distribution. With that said, there can be some variation. Either increasing this value
+# or increasing the number of nodes in the cluster will help even out the distribution.
+rhq.cassandra.node.num-tokens=256
+
# The remaining properties pertain to cluster configuration and are only used in
# development and testing environments when an embedded cluster is used. These properties
# are also loaded into the container build (when the dev profile is active) in the
diff --git a/modules/common/cassandra-common/src/main/resources/deploy.xml b/modules/common/cassandra-common/src/main/resources/deploy.xml
index e92ca87..e07cc0e 100644
--- a/modules/common/cassandra-common/src/main/resources/deploy.xml
+++ b/modules/common/cassandra-common/src/main/resources/deploy.xml
@@ -59,6 +59,12 @@
defaultValue="127.0.0.1"
type="string"/>
+ <rhq:input-property name="rhq.cassandra.node.num-tokens"
+ description="Defines the number of tokens randomly assigned to a node on the ring. The more tokens, relative to other nodes, the larger the proportion of data that this node will store. You probably want all nodes to have the same number of tokens assuming they have equal hardware capability."
+ required="false"
+ defaultValue="256"
+ type="string"/>
+
<rhq:input-property name="initial.token"
description="Each Cassandra node is assigned a unique token that determines what keys it is the first replica for. If you sort all nodes' token, the range of keys each is responsible for is (PreviousToken, MyToken], that is, from the previous token (exclusive) to the node's token (inclusive). The machine with the lowest Token gets both all keys less than that token, and all keys greater than the largest token; this is called a wrapping range."
required="false"
diff --git a/modules/enterprise/server/appserver/src/main/scripts/rhq-container.build.xml b/modules/enterprise/server/appserver/src/main/scripts/rhq-container.build.xml
index b23c0a4..6f3b1c0 100644
--- a/modules/enterprise/server/appserver/src/main/scripts/rhq-container.build.xml
+++ b/modules/enterprise/server/appserver/src/main/scripts/rhq-container.build.xml
@@ -381,6 +381,12 @@
<target name="prepare-bin-dir">
<echo>*** Preparing bin dir ***</echo>
+
+ <loadproperties>
+ <zipentry zipfile="${settings.localRepository}/org/rhq/rhq-cassandra-common/${project.version}/rhq-cassandra-common-${project.version}.jar"
+ name="cassandra.properties"/>
+ </loadproperties>
+
<echo>Connection URL is ${rhq.server.database.connection-url}</echo>
<property name="rhq.bin.dir" location="${project.build.outputDirectory}/bin" />
@@ -564,6 +570,19 @@ rhq.autoinstall.public-endpoint-address=
# topology.
rhq.cassandra.cluster.seeds=
+# When a node initializes it contacts a seed and then sleeps for RING_DELAY
+# (milliseconds) to learn about other nodes in the cluster. This defaults to 30
+# seconds.
+# rhq.cassandra.ring.delay
+
+# Defines the number of tokens randomly assigned to a node on the ring. The more
+# tokens, relative to other nodes, the larger the proportion of data that this
+# node will store. You probably want all nodes to have the same number of tokens
+# assuming they have equal hardware capability. Tokens are randomly generated
+# with the expectation of an even distribution. With that said, there can be
+# some variation. Either increasing this value or increasing the number of
+# nodes in the cluster will help even out the distribution.
+rhq.cassandra.node.num-tokens=${rhq.cassandra.node.num-tokens}
</echo>
</target>
@@ -591,10 +610,12 @@ rhq.cassandra.cluster.seeds=
<copy todir="${project.build.outputDirectory}" verbose="true">
<fileset dir="src/main/dev-resources" />
</copy>
+
<loadproperties>
<zipentry zipfile="${settings.localRepository}/org/rhq/rhq-cassandra-common/${project.version}/rhq-cassandra-common-${project.version}.jar"
name="cassandra.properties"/>
</loadproperties>
+
<echo file="${project.build.outputDirectory}/bin/rhq-server.properties" append="true">
# The following properties that begin with a prefix of rhq.cassandra are ONLY for
# development/testing environments where an embedded cluster is used. These properties are
11 years, 1 month
[rhq] Branch 'release/jon3.1.x' - modules/core
by mazz
modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessExecutor.java | 92 +++++++---
modules/core/util/src/test/java/org/rhq/core/util/exec/ProcessExecTest.java | 18 -
2 files changed, 69 insertions(+), 41 deletions(-)
New commits:
commit 401c7a219876e5af9075ff09ee1bbb83cca6b884
Author: Elias Ross <elias_ross(a)apple.com>
Date: Sat Aug 18 23:03:34 2012 -0700
rhq-script-plugin does not always capture process output
Ensure output thread completes before exiting startProgram()
Use concurrent library to clean up exit code processing.
(cherry picked from commit bf4b25f421769909e886eb42f7b99c66b207b200)
diff --git a/modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessExecutor.java b/modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessExecutor.java
index ccbe045..308d9bd 100644
--- a/modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessExecutor.java
+++ b/modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessExecutor.java
@@ -33,6 +33,12 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
import org.rhq.core.util.UtilI18NResourceKeys;
@@ -45,6 +51,9 @@ import org.rhq.core.util.UtilI18NResourceKeys;
* @author John Mazzitelli
*/
public class ProcessExecutor {
+
+ private static ExecutorService threadPool = Executors.newCachedThreadPool();
+
/**
* This executes any operating system process as described in the given start command. When this method returns, it
* can be assumed that the process was launched but not necessarily finished. The caller can ask this method to
@@ -78,7 +87,6 @@ public class ProcessExecutor {
*
* @return process exit code (if the method waited for it to exit) or <code>null</code> if this method was to only
* start the process but not wait or was to wait and the wait time expired before the process exited
- *
* @throws Exception if any error occurs while trying to start the child process
*/
protected Integer startProgram(final ProcessToStart process) throws Exception {
@@ -91,47 +99,77 @@ public class ProcessExecutor {
final Process childProcess = Runtime.getRuntime().exec(cmdline, environment, workingDir);
// redirect the program's streams
- // WARNING:
- // It seems there is no way to get around a possible race condition - what if the process
- // was so fast that it exited already? We didn't get a chance to capture its output.
- // I see a unit test that periodically fails because it doesn't get any captured output when
- // it should - I think it is because of this race condition. But there is no Java API that
- // let's me redirect a process' streams before the process is told to start.
- redirectStreams(process, childProcess);
-
- final Integer[] retExitCode = new Integer[1];
+ final RedirectThreads redirect = redirectStreams(process, childProcess);
+ Integer exitCode = null;
// wait if told to - note that the default is not to wait
if (process.getWaitForExit().intValue() > 0) {
- Thread waitThread = new Thread("ExecuteProcess-" + process.getProgramTitle()) {
- public void run() {
+ Callable<Integer> call = new Callable() {
+ public Integer call() throws Exception {
+ Thread.currentThread().setName("ExecuteProcess-" + process.getProgramTitle());
try {
- int exitCode = childProcess.waitFor();
- retExitCode[0] = new Integer(exitCode);
- } catch (InterruptedException e) {
+ return childProcess.waitFor();
+ } finally {
+ // wait for I/O to finish
+ redirect.join();
}
}
};
-
- waitThread.setDaemon(true);
- waitThread.start();
+ Future<Integer> future = threadPool.submit(call);
try {
- waitThread.join(process.getWaitForExit().intValue());
+ exitCode = future.get(process.getWaitForExit().intValue(), TimeUnit.MILLISECONDS);
} catch (InterruptedException ie) {
// this might happen if the launching thread got interrupted
+ Thread.currentThread().interrupt();
+ } catch (TimeoutException e) {
+ // the documentation requires we return null
} finally {
- waitThread.interrupt();
+ future.cancel(true);
}
- if (retExitCode[0] == null) {
+ if (exitCode == null) {
// never got the exit code so the wait time must have expired, kill the process if configured to do so
if (process.isKillOnTimeout().booleanValue()) {
childProcess.destroy();
}
+ // cancel the output threads
+ redirect.interrupt();
}
}
- return retExitCode[0];
+ return exitCode;
+ }
+
+ /**
+ * Wrapper for threads used for capturing output.
+ * Call {@link #join} to wait for output to be fully captured.
+ */
+ protected static class RedirectThreads {
+
+ private final StreamRedirector stdout;
+ private final StreamRedirector stderr;
+
+ private RedirectThreads(StreamRedirector stdout, StreamRedirector stderr) {
+ this.stdout = stdout;
+ this.stderr = stderr;
+ }
+
+ /**
+ * Waits for output to be fully captured.
+ */
+ public void join() throws InterruptedException {
+ stderr.join();
+ stdout.join();
+ }
+
+ /**
+ * Interrupts these threads.
+ */
+ public void interrupt() {
+ stderr.interrupt();
+ stdout.interrupt();
+ }
+
}
/**
@@ -146,8 +184,9 @@ public class ProcessExecutor {
* @param childProcess the newly spawned child process
*
* @throws IOException if failed to pipe data to/from stdin/stdout
+ * @return RedirectThreads containing a handle to the threads redirecting output
*/
- protected void redirectStreams(ProcessToStart process, Process childProcess) throws IOException {
+ protected RedirectThreads redirectStreams(ProcessToStart process, Process childProcess) throws IOException {
// Process.getInputStream is actually the process's stdout output
// Process.getOutputStream is actually the process's stdin intput
// Process.getErrorStream is the process's stderr output
@@ -175,7 +214,6 @@ public class ProcessExecutor {
}
StreamRedirector stdoutThread = new StreamRedirector(threadNamePrefix + "-stdout", stdout, fileOutputStream);
-
StreamRedirector stderrThread = new StreamRedirector(threadNamePrefix + "-stderr", stderr, fileOutputStream);
stdoutThread.start();
@@ -201,7 +239,7 @@ public class ProcessExecutor {
stdin.close();
- return;
+ return new RedirectThreads(stdoutThread, stderrThread);
}
/**
@@ -372,7 +410,7 @@ public class ProcessExecutor {
String result = progFile.getPath();
// If executable verification has been turned off then assume the caller wants his executable "as-is".
- // Otherwise, validate and ensure a full path.
+ // Otherwise, validate and ensure a full path.
if (Boolean.TRUE.equals(process.isCheckExecutableExists())) {
if (!progFile.exists()) {
throw new FileNotFoundException(UtilI18NResourceKeys.MSG.getMsg(
@@ -453,4 +491,4 @@ public class ProcessExecutor {
String newFileName = file.getCanonicalPath() + timestamp;
file.renameTo(new File(newFileName));
}
-}
\ No newline at end of file
+}
diff --git a/modules/core/util/src/test/java/org/rhq/core/util/exec/ProcessExecTest.java b/modules/core/util/src/test/java/org/rhq/core/util/exec/ProcessExecTest.java
index 97dcdaa..49ab3f5 100644
--- a/modules/core/util/src/test/java/org/rhq/core/util/exec/ProcessExecTest.java
+++ b/modules/core/util/src/test/java/org/rhq/core/util/exec/ProcessExecTest.java
@@ -34,10 +34,8 @@ import org.testng.annotations.Test;
@Test
public class ProcessExecTest {
public void testProcessExecOutputStream() {
- int tries = 0;
-
- while (true) {
- tries++;
+ // run multiple times to ensure race condition fixed
+ for (int i = 0; i < 100; i++) {
ProcessToStart start = new ProcessToStart();
setupProgram(start);
@@ -52,16 +50,8 @@ public class ProcessExecTest {
assert results.getError() == null : "Should not have failed: " + results;
assert results.getExitCode() != null : "Should have had exit code: " + results;
- // there are some times when we can't get the output - see comments in ProcessExecutor.startProgram
- // if we failed to get the output this time, let's try again. This is just allowing that rare
- // condition to occur in our test - I know of no way via the Java API to avoid it, so let's not
- // fail our test just because it happened once (but do fail if we can't get the output after so many tries)
byte[] output = baos.toByteArray();
- if (output.length > 0) {
- return; // we did get output so everything succeeded! we can pass the test now and just return
- }
-
- if (tries >= 3) {
+ if (output.length == 0) {
assert false : "Should have had some output: " + results;
}
}
@@ -116,4 +106,4 @@ public class ProcessExecTest {
start.setArguments(new String[] { "/bin" });
}
}
-}
\ No newline at end of file
+}
11 years, 1 month
[rhq] Branch 'release/jon3.1.x' - modules/plugins
by mazz
modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/JMXDiscoveryComponent.java | 95 +++++-----
1 file changed, 50 insertions(+), 45 deletions(-)
New commits:
commit 7aa947262aba8dd3bbebeea9243165b659e11e5e
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed Oct 31 14:08:47 2012 -0400
Bug 848938 - JMX Plugin - Leaking connector thread
Ensure connectors are closed during discovery; e.g.
"Thread-2461" daemon prio=10 tid=0x000000006103c800 nid=0x5fc0 waiting on condition [0x00002aab178bb000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.sun.jmx.remote.internal.ClientCommunicatorAdmin$Checker.run(ClientCommunicatorAdmin.java:154)
(cherry picked from commit 26b37482f90fb01a6771c5c51471e2754dc3cdb4)
Conflicts:
modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/JMXDiscoveryComponent.java
diff --git a/modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/JMXDiscoveryComponent.java b/modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/JMXDiscoveryComponent.java
index f0a4f98..4ce9bc2 100644
--- a/modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/JMXDiscoveryComponent.java
+++ b/modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/JMXDiscoveryComponent.java
@@ -119,26 +119,27 @@ public class JMXDiscoveryComponent implements ResourceDiscoveryComponent, Manual
@Override
public Set<DiscoveredResourceDetails> discoverResources(ResourceDiscoveryContext context) {
- Set<DiscoveredResourceDetails> discoveredResources = new LinkedHashSet<DiscoveredResourceDetails>();
+ Set<DiscoveredResourceDetails> discoveredResources = new LinkedHashSet<DiscoveredResourceDetails>();
Map<String, List<DiscoveredResourceDetails>> duplicatesByKey = new LinkedHashMap<String, List<DiscoveredResourceDetails>>();
// Filter out JBoss, Tomcat, etc. processes, which will be represented by more specific types of Resources
// discovered by other plugins.
- List<ProcessScanResult> nonExcludedProcesses = getNonExcludedJavaProcesses(context);
+ List<ProcessScanResult> nonExcludedProcesses = getNonExcludedJavaProcesses(context);
for (ProcessScanResult process : nonExcludedProcesses) {
try {
ProcessInfo processInfo = process.getProcessInfo();
DiscoveredResourceDetails details = discoverResourceDetails(context, processInfo);
if (details != null) {
- if (discoveredResources.contains(details)) {
+ //detect discovered jmx resources that are erroneously using the same key
+ if (discoveredResources.contains(details)) {
List<DiscoveredResourceDetails> duplicates = duplicatesByKey.get(details.getResourceKey());
if (duplicates == null) {
duplicates = new ArrayList<DiscoveredResourceDetails>();
duplicatesByKey.put(details.getResourceKey(), duplicates);
}
- duplicates.add(details);
- }
+ duplicates.add(details);
+ }
discoveredResources.add(details);
}
} catch (RuntimeException re) {
@@ -150,7 +151,8 @@ public class JMXDiscoveryComponent implements ResourceDiscoveryComponent, Manual
}
}
}
-
+
+ //Log the erroneous collisions and take them out of the discoveredResource list.
for (String duplicateKey : duplicatesByKey.keySet()) {
List<DiscoveredResourceDetails> duplicates = duplicatesByKey.get(duplicateKey);
log.error("Multiple Resources with the same key (" + duplicateKey
@@ -166,7 +168,7 @@ public class JMXDiscoveryComponent implements ResourceDiscoveryComponent, Manual
private List<ProcessScanResult> getNonExcludedJavaProcesses(ResourceDiscoveryContext context) {
// This is the list of all currently running java processes.
List<ProcessScanResult> javaProcesses = context.getAutoDiscoveredProcesses();
-
+
List<ProcessScanResult> nonExcludedJavaProcesses = new ArrayList<ProcessScanResult>();
Set<String> processExcludes = getProcessExcludes();
for (ProcessScanResult javaProcess : javaProcesses) {
@@ -197,7 +199,7 @@ public class JMXDiscoveryComponent implements ResourceDiscoveryComponent, Manual
return false;
}
- protected Set<String> getProcessExcludes() {
+ protected Set<String> getProcessExcludes() {
Set<String> processExcludes;
String overrideProcessExcludes = System.getProperty(SYSPROP_RHQ_JMXPLUGIN_PROCESS_FILTERS);
if (overrideProcessExcludes != null) {
@@ -238,7 +240,7 @@ public class JMXDiscoveryComponent implements ResourceDiscoveryComponent, Manual
}
throw new RuntimeException("Failed to connect to JVM with connector address [" + connectorAddress + "].", e);
}
-
+
String key = connectorAddress;
String name = connectorAddress;
@@ -319,9 +321,17 @@ public class JMXDiscoveryComponent implements ResourceDiscoveryComponent, Manual
throw new RuntimeException("Failed to parse connector address: " + connectorAddress, e);
}
- JMXConnector jmxConnector;
+ JMXConnector jmxConnector = null;
+ Long pid;
try {
jmxConnector = connect(jmxServiceURL);
+ MBeanServerConnection mbeanServerConnection = jmxConnector.getMBeanServerConnection();
+ RuntimeMXBean runtimeMXBean = ManagementFactory.newPlatformMXBeanProxy(mbeanServerConnection,
+ ManagementFactory.RUNTIME_MXBEAN_NAME, RuntimeMXBean.class);
+ pid = getJvmPid(runtimeMXBean);
+ if (pid == null) {
+ throw new RuntimeException("Failed to determine JVM pid by parsing JVM name.");
+ }
} catch (SecurityException e) {
// Authentication failed, which most likely means the username and password are not set correctly in
// the Resource's plugin config. This is not an error, so return null.
@@ -335,19 +345,8 @@ public class JMXDiscoveryComponent implements ResourceDiscoveryComponent, Manual
log.debug("Unable to upgrade key of JVM Resource with key [" + inventoriedResource.getResourceKey()
+ "], since connecting to its JMX service URL [" + jmxServiceURL + "] failed: " + e);
return null;
- }
-
- Long pid;
- try {
- MBeanServerConnection mbeanServerConnection = jmxConnector.getMBeanServerConnection();
- RuntimeMXBean runtimeMXBean = ManagementFactory.newPlatformMXBeanProxy(mbeanServerConnection,
- ManagementFactory.RUNTIME_MXBEAN_NAME, RuntimeMXBean.class);
- pid = getJvmPid(runtimeMXBean);
- if (pid == null) {
- throw new RuntimeException("Failed to determine JVM pid by parsing JVM name.");
- }
- } catch (Exception e) {
- throw new RuntimeException("Failed to determine pid of JVM at [" + jmxServiceURL + "].", e);
+ } finally {
+ close(jmxConnector);
}
List<ProcessInfo> processes = inventoriedResource.getSystemInformation().getProcesses(
@@ -376,6 +375,13 @@ public class JMXDiscoveryComponent implements ResourceDiscoveryComponent, Manual
return null;
}
+ private void close(JMXConnector jmxConnector) {
+ try {
+ if (jmxConnector != null)
+ jmxConnector.close();
+ } catch (Exception e) {}
+ }
+
private static Long getJvmPid(RuntimeMXBean runtimeMXBean) {
Long pid;
String jvmName = runtimeMXBean.getName();
@@ -429,8 +435,8 @@ public class JMXDiscoveryComponent implements ResourceDiscoveryComponent, Manual
pluginConfig.put(new PropertySimple(CONNECTION_TYPE, J2SE5ConnectionTypeDescriptor.class.getName()));
if (jmxRemotingPort != null) {
pluginConfig.put(new PropertySimple(CONNECTOR_ADDRESS_CONFIG_PROPERTY, jmxServiceURL));
- }
-
+ }
+
return new DiscoveredResourceDetails(context.getResourceType(), key.toString(), name, version, description,
pluginConfig, process);
}
@@ -461,30 +467,29 @@ public class JMXDiscoveryComponent implements ResourceDiscoveryComponent, Manual
JMXConnector jmxConnector = null;
try {
jmxConnector = connect(jmxServiceURL);
+ return getJavaVersion(jmxConnector);
} catch (SecurityException e) {
log.warn("Unable to to authenticate to JMX service URL [" + jmxServiceURL + "]: " + e.getMessage());
} catch (IOException e) {
log.error("Failed to connect to JMX service URL [" + jmxServiceURL + "].", e);
+ } catch (Exception e) {
+ log.error("Failed to determine JVM version for process [" + process.getPid() + "] with command line [" +
+ Arrays.asList(process.getCommandLine()) + "].", e);
+ } finally {
+ close(jmxConnector);
}
- String version;
- if (jmxConnector != null) {
- try {
+ // TODO: We could exec "java -version" here.
+ return null;
+ }
- MBeanServerConnection mbeanServerConnection = jmxConnector.getMBeanServerConnection();
- RuntimeMXBean runtimeMXBean = ManagementFactory.newPlatformMXBeanProxy(mbeanServerConnection,
- ManagementFactory.RUNTIME_MXBEAN_NAME, RuntimeMXBean.class);
- version = runtimeMXBean.getSystemProperties().get(SYSPROP_JAVA_VERSION);
- if (version == null) {
- throw new IllegalStateException("System property [" + SYSPROP_JAVA_VERSION + "] is not defined.");
- }
- } catch (Exception e) {
- log.error("Failed to determine JVM version for process [" + process.getPid() + "] with command line [" +
- Arrays.asList(process.getCommandLine()) + "].", e);
- version = null;
- }
- } else {
- // TODO: We could exec "java -version" here.
- version = null;
+ protected String getJavaVersion(JMXConnector jmxConnector) throws Exception {
+ String version;
+ MBeanServerConnection mbeanServerConnection = jmxConnector.getMBeanServerConnection();
+ RuntimeMXBean runtimeMXBean = ManagementFactory.newPlatformMXBeanProxy(mbeanServerConnection,
+ ManagementFactory.RUNTIME_MXBEAN_NAME, RuntimeMXBean.class);
+ version = runtimeMXBean.getSystemProperties().get(SYSPROP_JAVA_VERSION);
+ if (version == null) {
+ throw new IllegalStateException("System property [" + SYSPROP_JAVA_VERSION + "] is not defined.");
}
return version;
}
@@ -529,7 +534,7 @@ public class JMXDiscoveryComponent implements ResourceDiscoveryComponent, Manual
String className = null;
for (int i = 1; i < process.getCommandLine().length; i++) {
String arg = process.getCommandLine()[i];
-
+
if (!arg.startsWith("-")) {
className = arg;
break;
@@ -564,4 +569,4 @@ public class JMXDiscoveryComponent implements ResourceDiscoveryComponent, Manual
return null;
}
-}
\ No newline at end of file
+}
11 years, 1 month
[rhq] Branch 'feature/cassandra-backend' - 3 commits - modules/common
by John Sanda
dev/null |binary
modules/common/cassandra-common/pom.xml | 37
modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java | 14
modules/common/cassandra-common/src/main/java/org/rhq/cassandra/DeploymentOptions.java | 38
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/CHANGES.txt | 2349 --------
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/LICENSE.txt | 209
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/NEWS.txt | 942 ---
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/NOTICE.txt | 42
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/README.txt | 113
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra | 192
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra-cli | 50
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra-cli.bat | 51
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra.bat | 116
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra.in.sh | 41
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cqlsh | 2698 ----------
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cqlshrc.sample | 35
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/json2sstable | 50
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/json2sstable.bat | 67
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/nodetool | 64
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/nodetool.bat | 50
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstable2json | 51
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstable2json.bat | 67
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstablekeys | 55
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstablekeys.bat | 61
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstableloader | 50
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstablescrub | 50
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/stop-server | 31
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/README.txt | 11
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/cassandra-env.sh | 231
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/cassandra-rackdc.properties | 20
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/cassandra-topology.properties | 41
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/cassandra.yaml | 575 --
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/commitlog_archiving.properties | 54
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/log4j-server.properties | 44
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/log4j-tools.properties | 27
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/interface/cassandra.thrift | 768 --
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/antlr-3.1.3.txt | 27
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/avro-1.3.1-dev.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/commons-cli-1.1.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/commons-codec-1.2.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/commons-collections-3.2.1.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/commons-lang-2.4.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/compress-lzf-0.8.4.txt | 11
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/concurrentlinkedhashmap-lru-1.2.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/cql-1.0.8.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/guava-r08.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/high-scale-lib-1.1.2.txt | 29
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jackson-core-asl-1.9.2.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jackson-mapper-asl-1.9.2.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jamm-0.2.2.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jetty-6.1.21.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jetty-util-6.1.21.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jline-0.9.94.txt | 33
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/json-simple-1.1.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/libthrift-0.7.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/log4j-1.2.16.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/servlet-api-2.5-20081211.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/slf4j-api-1.6.1.txt | 20
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/slf4j-log4j12-1.6.1.txt | 20
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/snakeyaml-1.6.txt | 202
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/snappy-java-1.0.3.txt | 209
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/snaptree-0.1.txt | 776 --
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/thrift-python-0.7.0.txt | 324 -
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/pylib/cqlshlib/__init__.py | 16
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/pylib/cqlshlib/cql3handling.py | 822 ---
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/pylib/cqlshlib/cqlhandling.py | 940 ---
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/pylib/cqlshlib/pylexotron.py | 494 -
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/pylib/cqlshlib/saferscanner.py | 60
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/pylib/cqlshlib/util.py | 74
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/pylib/cqlshlib/wcwidth.py | 367 -
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/pylib/setup.py | 24
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/tools/bin/cassandra-stress | 44
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/tools/bin/cassandra-stress.bat | 35
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/tools/bin/cassandra-stressd | 84
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/tools/bin/cassandra.in.sh | 45
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/tools/bin/sstablemetadata | 46
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/tools/bin/sstablemetadata.bat | 32
modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/tools/bin/token-generator | 333 -
modules/common/cassandra-common/src/main/resources/cassandra-1.2.0-beta1/conf/cassandra-env.sh | 233
modules/common/cassandra-common/src/main/resources/cassandra-1.2.0-beta1/conf/cassandra.yaml | 627 ++
modules/common/cassandra-common/src/main/resources/cassandra-1.2.0-beta1/conf/log4j-server.properties | 52
modules/common/cassandra-common/src/main/resources/cassandra-1.2.0-beta1/lib/jna-3.4.1.jar |binary
modules/common/cassandra-common/src/main/resources/cassandra-1.2.0-beta1/lib/platform-3.4.1.jar |binary
modules/common/cassandra-common/src/main/resources/cassandra.properties | 7
modules/common/cassandra-common/src/main/resources/deploy.xml | 19
85 files changed, 1001 insertions(+), 17732 deletions(-)
New commits:
commit 023afb12f7aab53e583c259340b176ff078dff1d
Author: John Sanda <jsanda(a)redhat.com>
Date: Wed Oct 31 11:59:20 2012 -0400
refactoring ant packaging scripts
A couple changes have been made to the embedded ant scripts. First, the
cassandra distro is now downloaded from the central maven repo and stored in
the local maven repo. This makes things cleaner and helps prevents having to
repeatedly downlod the distro as was the case when it was being stored in the
target directory.
The second change is to accomodate the Mac OS X work around for the snappy java
library. The distro is now unpacked in the generate-resources phase and the
snappy-mac-workaround phase now executes its ant script in the process-resources
phase. This allows for the snappy-java library replacement to occur before the
bundle zip file is generated.
diff --git a/modules/common/cassandra-common/pom.xml b/modules/common/cassandra-common/pom.xml
index 746e375..7198211 100644
--- a/modules/common/cassandra-common/pom.xml
+++ b/modules/common/cassandra-common/pom.xml
@@ -77,35 +77,42 @@
<id>setup-pkg</id>
</execution>
<execution>
- <id>create-cassandra-pkg</id>
- <phase>prepare-package</phase>
+ <id>get-cassandra</id>
+ <phase>generate-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
- <echo message="PACKAGE"/>
<property name="cassandra.download.dir"
value="${project.build.directory}/cassandra-download"/>
-
- <property name="cassandra.dir"
- value="${project.build.outputDirectory}/cassandra-${cassandra.version}"/>
-
<mkdir dir="${cassandra.download.dir}"/>
- <get src="http://archive.apache.org/dist/cassandra/1.2.0/apache-cassandra-1.2.0-bet... "
- dest="${cassandra.download.dir}/apache-cassandra-1.2.0-beta1-bin.tar.gz"
+
+ <get src="http://repo1.maven.org/maven2/org/apache/cassandra/apache-cassandra/${cas... "
+ dest="${settings.localRepository}/org/apache/cassandra/apache-cassandra/${cassandra.version}/apache-cassandra-${cassandra.version}-bin.tar.gz"
skipexisting="true"
verbose="true"/>
- <gunzip src="${cassandra.download.dir}/apache-cassandra-1.2.0-beta1-bin.tar.gz"
+ <gunzip src="${settings.localRepository}/org/apache/cassandra/apache-cassandra/${cassandra.version}/apache-cassandra-${cassandra.version}-bin.tar.gz"
dest="${cassandra.download.dir}"/>
- <untar src="${cassandra.download.dir}/apache-cassandra-1.2.0-beta1-bin.tar"
+ <untar src="${cassandra.download.dir}/apache-cassandra-${cassandra.version}-bin.tar"
dest="${cassandra.download.dir}"/>
- <move file="${cassandra.download.dir}/apache-cassandra-1.2.0-beta1"
- tofile="${project.build.outputDirectory}/cassandra-${cassandra.version}"
- overwrite="false"/>
- <delete file="${cassandra.download.dir}/apache-cassandra-1.2.0-beta1-bin.tar"/>
-
- <property name="cassandra.distro.filename" value="cassandra-${cassandra.version}.zip"/>
+ <move file="${cassandra.download.dir}/apache-cassandra-${cassandra.version}"
+ tofile="${project.build.outputDirectory}/cassandra-${cassandra.version}"/>
+ <delete dir="${cassandra.download.dir}"/>
+ </target>
+ </configuration>
+ </execution>
+ <execution>
+ <id>create-cassandra-pkg</id>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <target>
+ <property name="cassandra.dir"
+ value="${project.build.outputDirectory}/cassandra-${cassandra.version}"/>
+ <property name="cassandra.distro.filename" value="cassandra.zip"/>
<property name="cassandra.distro.zip"
value="${project.build.outputDirectory}/${cassandra.distro.filename}"/>
<zip basedir="${cassandra.dir}" destfile="${cassandra.distro.zip}"/>
@@ -211,13 +218,12 @@
<executions>
<execution>
<id>setup-pkg-mac</id>
- <phase>prepare-package</phase>
+ <phase>process-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
- <echo message="PACKAGE HACK"/>
<property name="cassandra.dir"
value="${project.build.outputDirectory}/cassandra-${cassandra.version}"/>
<property name="cassandra.lib.dir" value="${cassandra.dir}/lib"/>
commit e68c76d0d6a98359b149637802df9091158baf2f
Author: John Sanda <jsanda(a)redhat.com>
Date: Wed Oct 31 10:53:07 2012 -0400
removing beans.xml since CDI does not work yet
Deploying an artifact with beans.xml causes the entire RHQ deployment to fail.
There are some JSF related conflicts in portal-war that are the source of the
problem. Until that is resolved, we cannot deploy any beans.xml files.
diff --git a/modules/common/cassandra-common/src/main/resources/META-INF/beans.xml b/modules/common/cassandra-common/src/main/resources/META-INF/beans.xml
deleted file mode 100644
index 330c7f6..0000000
--- a/modules/common/cassandra-common/src/main/resources/META-INF/beans.xml
+++ /dev/null
@@ -1 +0,0 @@
-<beans/>
\ No newline at end of file
commit 677b2ca35f61ad3dc895696693a3e513e38e4773
Author: John Sanda <jsanda(a)redhat.com>
Date: Wed Oct 31 10:42:49 2012 -0400
upgrading cassandra bundle to cassandra 1.2.0-beta1
This commit includes some substantial changes. Previously the cassandra distro
was stored in the module source tree. The distro has been removed from the
source tree and it is now downloaded during the build if it is not already on
disk. The cassandra distro is in the central maven repo, but it is not available
as a maven artifact; consequently, we are downloading it in the ant packaging
script.
There are a number of changes and new features in cassandra 1.2.0. Because of
the new virtual nodes support, we no longer need to specify an initial token.
See http://wiki.apache.org/cassandra/VirtualNodes/Balance and cassandra.yaml
for details.
In previous versions of the bundle recipe we set the auto_bootstrap property to
false. That property is no longer in cassandra.yaml. I think it is still
recognized; however, in org.apache.cassandra.config.Config, the auto_boostrap
field is hard coded to true.
I am not sure what the ring delay defaulted to in prior releases but now it
defaults to 30 seconds. This results in a 30 second pause at start up which
is not ideal for automated tests. I have udpated cassandra-env.sh so that we
can override the ring delay for tests via the rhq.cassandra.ring.delay
property.
diff --git a/modules/common/cassandra-common/pom.xml b/modules/common/cassandra-common/pom.xml
index 3159649..746e375 100644
--- a/modules/common/cassandra-common/pom.xml
+++ b/modules/common/cassandra-common/pom.xml
@@ -13,7 +13,7 @@
<name>RHQ Cassandra Common</name>
<properties>
- <cassandra.version>1.1.5</cassandra.version>
+ <cassandra.version>1.2.0-beta1</cassandra.version>
<local.repo>${settings.localRepository}</local.repo>
</properties>
@@ -39,7 +39,7 @@
<dependency>
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra-all</artifactId>
- <version>1.1.5</version>
+ <version>${cassandra.version}</version>
</dependency>
<dependency>
@@ -84,10 +84,28 @@
</goals>
<configuration>
<target>
+ <echo message="PACKAGE"/>
+ <property name="cassandra.download.dir"
+ value="${project.build.directory}/cassandra-download"/>
+
<property name="cassandra.dir"
value="${project.build.outputDirectory}/cassandra-${cassandra.version}"/>
- <property name="cassandra.distro.filename"
- value="cassandra-${cassandra.version}.zip"/>
+
+ <mkdir dir="${cassandra.download.dir}"/>
+ <get src="http://archive.apache.org/dist/cassandra/1.2.0/apache-cassandra-1.2.0-bet... "
+ dest="${cassandra.download.dir}/apache-cassandra-1.2.0-beta1-bin.tar.gz"
+ skipexisting="true"
+ verbose="true"/>
+ <gunzip src="${cassandra.download.dir}/apache-cassandra-1.2.0-beta1-bin.tar.gz"
+ dest="${cassandra.download.dir}"/>
+ <untar src="${cassandra.download.dir}/apache-cassandra-1.2.0-beta1-bin.tar"
+ dest="${cassandra.download.dir}"/>
+ <move file="${cassandra.download.dir}/apache-cassandra-1.2.0-beta1"
+ tofile="${project.build.outputDirectory}/cassandra-${cassandra.version}"
+ overwrite="false"/>
+ <delete file="${cassandra.download.dir}/apache-cassandra-1.2.0-beta1-bin.tar"/>
+
+ <property name="cassandra.distro.filename" value="cassandra-${cassandra.version}.zip"/>
<property name="cassandra.distro.zip"
value="${project.build.outputDirectory}/${cassandra.distro.filename}"/>
<zip basedir="${cassandra.dir}" destfile="${cassandra.distro.zip}"/>
@@ -192,13 +210,14 @@
</dependencies>
<executions>
<execution>
- <id>setup-pkg</id>
+ <id>setup-pkg-mac</id>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
+ <echo message="PACKAGE HACK"/>
<property name="cassandra.dir"
value="${project.build.outputDirectory}/cassandra-${cassandra.version}"/>
<property name="cassandra.lib.dir" value="${cassandra.dir}/lib"/>
diff --git a/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java b/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java
index c3453fa..d7efd3e 100644
--- a/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java
+++ b/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/BootstrapDeployer.java
@@ -34,6 +34,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigInteger;
+import java.util.Date;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
@@ -105,7 +106,7 @@ public class BootstrapDeployer {
props.put("log.dir", "logs");
props.put("saved.caches.dir", "saved_caches");
props.put("hostname", address);
- props.put("seeds", collectionToString(seeds));
+ props.put("seeds", collectionToString(ipAddresses));
props.put("jmx.port", Integer.toString(jmxPort));
props.put("initial.token", generateToken(i, deploymentOptions.getNumNodes()));
props.put("rhq.deploy.dir", nodeBasedir.getAbsolutePath());
@@ -115,6 +116,11 @@ public class BootstrapDeployer {
props.put("rpc.address", address);
props.put("logging.level", deploymentOptions.getLoggingLevel());
+ if (deploymentOptions.getRingDelay() != null) {
+ props.put("cassandra.ring.delay.property", "-Dcassandra.ring_delay_ms=");
+ props.put("cassandra.ring.delay", deploymentOptions.getRingDelay());
+ }
+
doLocalDeploy(props, bundleDir);
startNode(nodeBasedir);
if (i == 0) {
@@ -175,12 +181,14 @@ public class BootstrapDeployer {
return;
} catch (TTransportException e) {
try {
- Thread.sleep(1000);
+ Thread.sleep(3000);
} catch (InterruptedException e1) {
}
}
}
- throw new CassandraException("Could not connect to " + host + " after " + maxRetries);
+ Date timestamp = new Date();
+ throw new CassandraException("[" + timestamp + "] Could not connect to " + host + " after " + maxRetries +
+ " tries");
}
private void updateSchema(File basedir, String host, int port) throws CassandraException {
diff --git a/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/DeploymentOptions.java b/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/DeploymentOptions.java
index e2c6edb..4bbc858 100644
--- a/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/DeploymentOptions.java
+++ b/modules/common/cassandra-common/src/main/java/org/rhq/cassandra/DeploymentOptions.java
@@ -47,6 +47,7 @@ public class DeploymentOptions {
private Boolean autoDeploy;
private Boolean embedded;
private String loggingLevel;
+ private Long ringDelay;
public DeploymentOptions() {
init(loadProperties());
@@ -83,15 +84,24 @@ public class DeploymentOptions {
setBundleFileName(properties.getProperty("rhq.cassandra.bundle.filename"));
setBundleName(properties.getProperty("rhq.cassandra.bundle.name"));
setBundleVersion(properties.getProperty("rhq.cassandra.bundle.version"));
- setClusterDir(System.getProperty("rhq.cassandra.cluster.dir",
- properties.getProperty("rhq.cassandra.cluster.dir")));
- setNumNodes(Integer.parseInt(System.getProperty("rhq.cassandra.cluster.num-nodes",
- properties.getProperty("rhq.cassandra.cluster.num-nodes"))));
- setAutoDeploy(Boolean.valueOf(properties.getProperty("rhq.cassandra.cluster.auto-deploy")));
- setEmbedded(Boolean.valueOf(System.getProperty("rhq.cassandra.cluster.is-embedded",
- properties.getProperty("rhq.cassandra.cluster.is-embedded"))));
- setLoggingLevel(System.getProperty("rhq.cassandra.logging.level",
- properties.getProperty("rhq.cassandra.logging.level")));
+ setClusterDir(loadProperty("rhq.cassandra.cluster.dir", properties));
+ setNumNodes(Integer.parseInt(loadProperty("rhq.cassandra.cluster.num-nodes", properties)));
+ setAutoDeploy(Boolean.valueOf(loadProperty("rhq.cassandra.cluster.auto-deploy", properties)));
+ setEmbedded(Boolean.valueOf(loadProperty("rhq.cassandra.cluster.is-embedded", properties)));
+ setLoggingLevel(loadProperty("rhq.cassandra.logging.level", properties));
+
+ String ringDelay = loadProperty("rhq.cassandra.ring.delay", properties);
+ if (ringDelay != null && !ringDelay.isEmpty()) {
+ setRingDelay(Long.valueOf(ringDelay));
+ }
+ }
+
+ private String loadProperty(String key, Properties properties) {
+ String value = System.getProperty(key);
+ if (value == null || value.isEmpty()) {
+ return properties.getProperty(key);
+ }
+ return value;
}
public String getBundleFileName() {
@@ -174,4 +184,14 @@ public class DeploymentOptions {
}
}
+ public Long getRingDelay() {
+ return ringDelay;
+ }
+
+ public void setRingDelay(Long ringDelay) {
+ if (this.ringDelay == null) {
+ this.ringDelay = ringDelay;
+ }
+ }
+
}
diff --git a/modules/common/cassandra-common/src/main/resources/META-INF/beans.xml b/modules/common/cassandra-common/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000..330c7f6
--- /dev/null
+++ b/modules/common/cassandra-common/src/main/resources/META-INF/beans.xml
@@ -0,0 +1 @@
+<beans/>
\ No newline at end of file
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/CHANGES.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/CHANGES.txt
deleted file mode 100644
index 61cede4..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/CHANGES.txt
+++ /dev/null
@@ -1,2349 +0,0 @@
-1.1.5
- * add SecondaryIndex.reload API (CASSANDRA-4581)
- * use millis + atomicint for commitlog segment creation instead of
- nanotime, which has issues under some hypervisors (CASSANDRA-4601)
- * fix FD leak in slice queries (CASSANDRA-4571)
- * avoid recursion in leveled compaction (CASSANDRA-4587)
- * increase stack size under Java7 to 180K
- * Log(info) schema changes (CASSANDRA-4547)
- * Change nodetool setcachecapcity to manipulate global caches (CASSANDRA-4563)
- * (cql3) fix setting compaction strategy (CASSANDRA-4597)
- * fix broken system.schema_* timestamps on system startup (CASSANDRA-4561)
- * fix wrong skip of cache saving (CASSANDRA-4533)
- * Avoid NPE when lost+found is in data dir (CASSANDRA-4572)
- * Respect five-minute flush moratorium after initial CL replay (CASSANDRA-4474)
- * Adds ntp as recommended in debian packaging (CASSANDRA-4606)
- * Configurable transport in CF Record{Reader|Writer} (CASSANDRA-4558)
- * (cql3) fix potential NPE with both equal and unequal restriction (CASSANDRA-4532)
- * (cql3) improves ORDER BY validation (CASSANDRA-4624)
- * Fix potential deadlock during counter writes (CASSANDRA-4578)
- * Fix cql error with ORDER BY when using IN (CASSANDRA-4612)
-Merged from 1.0:
- * increase Xss to 160k to accomodate latest 1.6 JVMs (CASSANDRA-4602)
- * fix toString of hint destination tokens (CASSANDRA-4568)
- * Fix multiple values for CurrentLocal NodeID (CASSANDRA-4626)
-
-
-1.1.4
- * fix offline scrub to catch >= out of order rows (CASSANDRA-4411)
- * fix cassandra-env.sh on RHEL and other non-dash-based systems
- (CASSANDRA-4494)
-Merged from 1.0:
- * (Hadoop) fix setting key length for old-style mapred api (CASSANDRA-4534)
- * (Hadoop) fix iterating through a resultset consisting entirely
- of tombstoned rows (CASSANDRA-4466)
-
-
-1.1.3
- * munmap commitlog segments before rename (CASSANDRA-4337)
- * (JMX) rename getRangeKeySample to sampleKeyRange to avoid returning
- multi-MB results as an attribute (CASSANDRA-4452)
- * flush based on data size, not throughput; overwritten columns no
- longer artificially inflate liveRatio (CASSANDRA-4399)
- * update default commitlog segment size to 32MB and total commitlog
- size to 32/1024 MB for 32/64 bit JVMs, respectively (CASSANDRA-4422)
- * avoid using global partitioner to estimate ranges in index sstables
- (CASSANDRA-4403)
- * restore pre-CASSANDRA-3862 approach to removing expired tombstones
- from row cache during compaction (CASSANDRA-4364)
- * (stress) support for CQL prepared statements (CASSANDRA-3633)
- * Correctly catch exception when Snappy cannot be loaded (CASSANDRA-4400)
- * (cql3) Support ORDER BY when IN condition is given in WHERE clause (CASSANDRA-4327)
- * (cql3) delete "component_index" column on DROP TABLE call (CASSANDRA-4420)
- * change nanoTime() to currentTimeInMillis() in schema related code (CASSANDRA-4432)
- * add a token generation tool (CASSANDRA-3709)
- * Fix LCS bug with sstable containing only 1 row (CASSANDRA-4411)
- * fix "Can't Modify Index Name" problem on CF update (CASSANDRA-4439)
- * Fix assertion error in getOverlappingSSTables during repair (CASSANDRA-4456)
- * fix nodetool's setcompactionthreshold command (CASSANDRA-4455)
- * Ensure compacted files are never used, to avoid counter overcount (CASSANDRA-4436)
-Merged from 1.0:
- * Push the validation of secondary index values to the SecondaryIndexManager (CASSANDRA-4240)
- * (Hadoop) fix iterating through a resultset consisting entirely
- of tombstoned rows (CASSANDRA-4466)
- * allow dropping columns shadowed by not-yet-expired supercolumn or row
- tombstones in PrecompactedRow (CASSANDRA-4396)
-
-
-1.1.2
- * Fix cleanup not deleting index entries (CASSANDRA-4379)
- * Use correct partitioner when saving + loading caches (CASSANDRA-4331)
- * Check schema before trying to export sstable (CASSANDRA-2760)
- * Raise a meaningful exception instead of NPE when PFS encounters
- an unconfigured node + no default (CASSANDRA-4349)
- * fix bug in sstable blacklisting with LCS (CASSANDRA-4343)
- * LCS no longer promotes tiny sstables out of L0 (CASSANDRA-4341)
- * skip tombstones during hint replay (CASSANDRA-4320)
- * fix NPE in compactionstats (CASSANDRA-4318)
- * enforce 1m min keycache for auto (CASSANDRA-4306)
- * Have DeletedColumn.isMFD always return true (CASSANDRA-4307)
- * (cql3) exeption message for ORDER BY constraints said primary filter can be
- an IN clause, which is misleading (CASSANDRA-4319)
- * (cql3) Reject (not yet supported) creation of 2ndardy indexes on tables with
- composite primary keys (CASSANDRA-4328)
- * Set JVM stack size to 160k for java 7 (CASSANDRA-4275)
- * cqlsh: add COPY command to load data from CSV flat files (CASSANDRA-4012)
- * CFMetaData.fromThrift to throw ConfigurationException upon error (CASSANDRA-4353)
- * Use CF comparator to sort indexed columns in SecondaryIndexManager
- (CASSANDRA-4365)
- * add strategy_options to the KSMetaData.toString() output (CASSANDRA-4248)
- * (cql3) fix range queries containing unqueried results (CASSANDRA-4372)
- * (cql3) allow updating column_alias types (CASSANDRA-4041)
- * (cql3) Fix deletion bug (CASSANDRA-4193)
- * Fix computation of overlapping sstable for leveled compaction (CASSANDRA-4321)
- * Improve scrub and allow to run it offline (CASSANDRA-4321)
- * Fix assertionError in StorageService.bulkLoad (CASSANDRA-4368)
- * (cqlsh) add option to authenticate to a keyspace at startup (CASSANDRA-4108)
- * (cqlsh) fix ASSUME functionality (CASSANDRA-4352)
- * Fix ColumnFamilyRecordReader to not return progress > 100% (CASSANDRA-3942)
-Merged from 1.0:
- * Set gc_grace on index CF to 0 (CASSANDRA-4314)
-
-
-1.1.1
- * allow larger cache capacities than 2GB (CASSANDRA-4150)
- * add getsstables command to nodetool (CASSANDRA-4199)
- * apply parent CF compaction settings to secondary index CFs (CASSANDRA-4280)
- * preserve commitlog size cap when recycling segments at startup
- (CASSANDRA-4201)
- * (Hadoop) fix split generation regression (CASSANDRA-4259)
- * ignore min/max compactions settings in LCS, while preserving
- behavior that min=max=0 disables autocompaction (CASSANDRA-4233)
- * log number of rows read from saved cache (CASSANDRA-4249)
- * calculate exact size required for cleanup operations (CASSANDRA-1404)
- * avoid blocking additional writes during flush when the commitlog
- gets behind temporarily (CASSANDRA-1991)
- * enable caching on index CFs based on data CF cache setting (CASSANDRA-4197)
- * warn on invalid replication strategy creation options (CASSANDRA-4046)
- * remove [Freeable]Memory finalizers (CASSANDRA-4222)
- * include tombstone size in ColumnFamily.size, which can prevent OOM
- during sudden mass delete operations by yielding a nonzero liveRatio
- (CASSANDRA-3741)
- * Open 1 sstableScanner per level for leveled compaction (CASSANDRA-4142)
- * Optimize reads when row deletion timestamps allow us to restrict
- the set of sstables we check (CASSANDRA-4116)
- * add support for commitlog archiving and point-in-time recovery
- (CASSANDRA-3690)
- * avoid generating redundant compaction tasks during streaming
- (CASSANDRA-4174)
- * add -cf option to nodetool snapshot, and takeColumnFamilySnapshot to
- StorageService mbean (CASSANDRA-556)
- * optimize cleanup to drop entire sstables where possible (CASSANDRA-4079)
- * optimize truncate when autosnapshot is disabled (CASSANDRA-4153)
- * update caches to use byte[] keys to reduce memory overhead (CASSANDRA-3966)
- * add column limit to cli (CASSANDRA-3012, 4098)
- * clean up and optimize DataOutputBuffer, used by CQL compression and
- CompositeType (CASSANDRA-4072)
- * optimize commitlog checksumming (CASSANDRA-3610)
- * identify and blacklist corrupted SSTables from future compactions
- (CASSANDRA-2261)
- * Move CfDef and KsDef validation out of thrift (CASSANDRA-4037)
- * Expose API to repair a user provided range (CASSANDRA-3912)
- * Add way to force the cassandra-cli to refresh its schema (CASSANDRA-4052)
- * Avoid having replicate on write tasks stacking up at CL.ONE (CASSANDRA-2889)
- * (cql3) Backwards compatibility for composite comparators in non-cql3-aware
- clients (CASSANDRA-4093)
- * (cql3) Fix order by for reversed queries (CASSANDRA-4160)
- * (cql3) Add ReversedType support (CASSANDRA-4004)
- * (cql3) Add timeuuid type (CASSANDRA-4194)
- * (cql3) Minor fixes (CASSANDRA-4185)
- * (cql3) Fix prepared statement in BATCH (CASSANDRA-4202)
- * (cql3) Reduce the list of reserved keywords (CASSANDRA-4186)
- * (cql3) Move max/min compaction thresholds to compaction strategy options
- (CASSANDRA-4187)
- * Fix exception during move when localhost is the only source (CASSANDRA-4200)
- * (cql3) Allow paging through non-ordered partitioner results (CASSANDRA-3771)
- * (cql3) Fix drop index (CASSANDRA-4192)
- * (cql3) Don't return range ghosts anymore (CASSANDRA-3982)
- * fix re-creating Keyspaces/ColumnFamilies with the same name as dropped
- ones (CASSANDRA-4219)
- * fix SecondaryIndex LeveledManifest save upon snapshot (CASSANDRA-4230)
- * fix missing arrayOffset in FBUtilities.hash (CASSANDRA-4250)
- * (cql3) Add name of parameters in CqlResultSet (CASSANDRA-4242)
- * (cql3) Correctly validate order by queries (CASSANDRA-4246)
- * rename stress to cassandra-stress for saner packaging (CASSANDRA-4256)
- * Fix exception on colum metadata with non-string comparator (CASSANDRA-4269)
- * Check for unknown/invalid compression options (CASSANDRA-4266)
- * (cql3) Adds simple access to column timestamp and ttl (CASSANDRA-4217)
- * (cql3) Fix range queries with secondary indexes (CASSANDRA-4257)
- * Better error messages from improper input in cli (CASSANDRA-3865)
- * Try to stop all compaction upon Keyspace or ColumnFamily drop (CASSANDRA-4221)
- * (cql3) Allow keyspace properties to contain hyphens (CASSANDRA-4278)
- * (cql3) Correctly validate keyspace access in create table (CASSANDRA-4296)
- * Avoid deadlock in migration stage (CASSANDRA-3882)
- * Take supercolumn names and deletion info into account in memtable throughput
- (CASSANDRA-4264)
- * Add back backward compatibility for old style replication factor (CASSANDRA-4294)
- * Preserve compatibility with pre-1.1 index queries (CASSANDRA-4262)
-Merged from 1.0:
- * Fix super columns bug where cache is not updated (CASSANDRA-4190)
- * fix maxTimestamp to include row tombstones (CASSANDRA-4116)
- * (CLI) properly handle quotes in create/update keyspace commands (CASSANDRA-4129)
- * Avoids possible deadlock during bootstrap (CASSANDRA-4159)
- * fix stress tool that hangs forever on timeout or error (CASSANDRA-4128)
- * stress tool to return appropriate exit code on failure (CASSANDRA-4188)
- * fix compaction NPE when out of disk space and assertions disabled
- (CASSANDRA-3985)
- * synchronize LCS getEstimatedTasks to avoid CME (CASSANDRA-4255)
- * ensure unique streaming session id's (CASSANDRA-4223)
- * kick off background compaction when min/max thresholds change
- (CASSANDRA-4279)
- * improve ability of STCS.getBuckets to deal with 100s of 1000s of
- sstables, such as when convertinb back from LCS (CASSANDRA-4287)
- * Oversize integer in CQL throws NumberFormatException (CASSANDRA-4291)
- * fix 1.0.x node join to mixed version cluster, other nodes >= 1.1 (CASSANDRA-4195)
- * Fix LCS splitting sstable base on uncompressed size (CASSANDRA-4419)
- * Push the validation of secondary index values to the SecondaryIndexManager (CASSANDRA-4240)
- * Don't purge columns during upgradesstables (CASSANDRA-4462)
- * Make cqlsh work with piping (CASSANDRA-4113)
- * Validate arguments for nodetool decommission (CASSANDRA-4061)
- * Report thrift status in nodetool info (CASSANDRA-4010)
-
-
-1.1.0-final
- * average a reduced liveRatio estimate with the previous one (CASSANDRA-4065)
- * Allow KS and CF names up to 48 characters (CASSANDRA-4157)
- * fix stress build (CASSANDRA-4140)
- * add time remaining estimate to nodetool compactionstats (CASSANDRA-4167)
- * (cql) fix NPE in cql3 ALTER TABLE (CASSANDRA-4163)
- * (cql) Add support for CL.TWO and CL.THREE in CQL (CASSANDRA-4156)
- * (cql) Fix type in CQL3 ALTER TABLE preventing update (CASSANDRA-4170)
- * (cql) Throw invalid exception from CQL3 on obsolete options (CASSANDRA-4171)
- * (cqlsh) fix recognizing uppercase SELECT keyword (CASSANDRA-4161)
- * Pig: wide row support (CASSANDRA-3909)
-Merged from 1.0:
- * avoid streaming empty files with bulk loader if sstablewriter errors out
- (CASSANDRA-3946)
-
-
-1.1-rc1
- * Include stress tool in binary builds (CASSANDRA-4103)
- * (Hadoop) fix wide row iteration when last row read was deleted
- (CASSANDRA-4154)
- * fix read_repair_chance to really default to 0.1 in the cli (CASSANDRA-4114)
- * Adds caching and bloomFilterFpChange to CQL options (CASSANDRA-4042)
- * Adds posibility to autoconfigure size of the KeyCache (CASSANDRA-4087)
- * fix KEYS index from skipping results (CASSANDRA-3996)
- * Remove sliced_buffer_size_in_kb dead option (CASSANDRA-4076)
- * make loadNewSStable preserve sstable version (CASSANDRA-4077)
- * Respect 1.0 cache settings as much as possible when upgrading
- (CASSANDRA-4088)
- * relax path length requirement for sstable files when upgrading on
- non-Windows platforms (CASSANDRA-4110)
- * fix terminination of the stress.java when errors were encountered
- (CASSANDRA-4128)
- * Move CfDef and KsDef validation out of thrift (CASSANDRA-4037)
- * Fix get_paged_slice (CASSANDRA-4136)
- * CQL3: Support slice with exclusive start and stop (CASSANDRA-3785)
-Merged from 1.0:
- * support PropertyFileSnitch in bulk loader (CASSANDRA-4145)
- * add auto_snapshot option allowing disabling snapshot before drop/truncate
- (CASSANDRA-3710)
- * allow short snitch names (CASSANDRA-4130)
-
-
-1.1-beta2
- * rename loaded sstables to avoid conflicts with local snapshots
- (CASSANDRA-3967)
- * start hint replay as soon as FD notifies that the target is back up
- (CASSANDRA-3958)
- * avoid unproductive deserializing of cached rows during compaction
- (CASSANDRA-3921)
- * fix concurrency issues with CQL keyspace creation (CASSANDRA-3903)
- * Show Effective Owership via Nodetool ring <keyspace> (CASSANDRA-3412)
- * Update ORDER BY syntax for CQL3 (CASSANDRA-3925)
- * Fix BulkRecordWriter to not throw NPE if reducer gets no map data from Hadoop (CASSANDRA-3944)
- * Fix bug with counters in super columns (CASSANDRA-3821)
- * Remove deprecated merge_shard_chance (CASSANDRA-3940)
- * add a convenient way to reset a node's schema (CASSANDRA-2963)
- * fix for intermittent SchemaDisagreementException (CASSANDRA-3884)
- * CLI `list <CF>` to limit number of columns and their order (CASSANDRA-3012)
- * ignore deprecated KsDef/CfDef/ColumnDef fields in native schema (CASSANDRA-3963)
- * CLI to report when unsupported column_metadata pair was given (CASSANDRA-3959)
- * reincarnate removed and deprecated KsDef/CfDef attributes (CASSANDRA-3953)
- * Fix race between writes and read for cache (CASSANDRA-3862)
- * perform static initialization of StorageProxy on start-up (CASSANDRA-3797)
- * support trickling fsync() on writes (CASSANDRA-3950)
- * expose counters for unavailable/timeout exceptions given to thrift clients (CASSANDRA-3671)
- * avoid quadratic startup time in LeveledManifest (CASSANDRA-3952)
- * Add type information to new schema_ columnfamilies and remove thrift
- serialization for schema (CASSANDRA-3792)
- * add missing column validator options to the CLI help (CASSANDRA-3926)
- * skip reading saved key cache if CF's caching strategy is NONE or ROWS_ONLY (CASSANDRA-3954)
- * Unify migration code (CASSANDRA-4017)
-Merged from 1.0:
- * cqlsh: guess correct version of Python for Arch Linux (CASSANDRA-4090)
- * (CLI) properly handle quotes in create/update keyspace commands (CASSANDRA-4129)
- * Avoids possible deadlock during bootstrap (CASSANDRA-4159)
- * fix stress tool that hangs forever on timeout or error (CASSANDRA-4128)
- * Fix super columns bug where cache is not updated (CASSANDRA-4190)
- * stress tool to return appropriate exit code on failure (CASSANDRA-4188)
-
-
-1.0.9
- * improve index sampling performance (CASSANDRA-4023)
- * always compact away deleted hints immediately after handoff (CASSANDRA-3955)
- * delete hints from dropped ColumnFamilies on handoff instead of
- erroring out (CASSANDRA-3975)
- * add CompositeType ref to the CLI doc for create/update column family (CASSANDRA-3980)
- * Pig: support Counter ColumnFamilies (CASSANDRA-3973)
- * Pig: Composite column support (CASSANDRA-3684)
- * Avoid NPE during repair when a keyspace has no CFs (CASSANDRA-3988)
- * Fix division-by-zero error on get_slice (CASSANDRA-4000)
- * don't change manifest level for cleanup, scrub, and upgradesstables
- operations under LeveledCompactionStrategy (CASSANDRA-3989, 4112)
- * fix race leading to super columns assertion failure (CASSANDRA-3957)
- * fix NPE on invalid CQL delete command (CASSANDRA-3755)
- * allow custom types in CLI's assume command (CASSANDRA-4081)
- * fix totalBytes count for parallel compactions (CASSANDRA-3758)
- * fix intermittent NPE in get_slice (CASSANDRA-4095)
- * remove unnecessary asserts in native code interfaces (CASSANDRA-4096)
- * Validate blank keys in CQL to avoid assertion errors (CASSANDRA-3612)
- * cqlsh: fix bad decoding of some column names (CASSANDRA-4003)
- * cqlsh: fix incorrect padding with unicode chars (CASSANDRA-4033)
- * Fix EC2 snitch incorrectly reporting region (CASSANDRA-4026)
- * Shut down thrift during decommission (CASSANDRA-4086)
- * Expose nodetool cfhistograms for 2ndary indexes (CASSANDRA-4063)
-Merged from 0.8:
- * Fix ConcurrentModificationException in gossiper (CASSANDRA-4019)
-
-
-1.1-beta1
- * (cqlsh)
- + add SOURCE and CAPTURE commands, and --file option (CASSANDRA-3479)
- + add ALTER COLUMNFAMILY WITH (CASSANDRA-3523)
- + bundle Python dependencies with Cassandra (CASSANDRA-3507)
- + added to Debian package (CASSANDRA-3458)
- + display byte data instead of erroring out on decode failure
- (CASSANDRA-3874)
- * add nodetool rebuild_index (CASSANDRA-3583)
- * add nodetool rangekeysample (CASSANDRA-2917)
- * Fix streaming too much data during move operations (CASSANDRA-3639)
- * Nodetool and CLI connect to localhost by default (CASSANDRA-3568)
- * Reduce memory used by primary index sample (CASSANDRA-3743)
- * (Hadoop) separate input/output configurations (CASSANDRA-3197, 3765)
- * avoid returning internal Cassandra classes over JMX (CASSANDRA-2805)
- * add row-level isolation via SnapTree (CASSANDRA-2893)
- * Optimize key count estimation when opening sstable on startup
- (CASSANDRA-2988)
- * multi-dc replication optimization supporting CL > ONE (CASSANDRA-3577)
- * add command to stop compactions (CASSANDRA-1740, 3566, 3582)
- * multithreaded streaming (CASSANDRA-3494)
- * removed in-tree redhat spec (CASSANDRA-3567)
- * "defragment" rows for name-based queries under STCS, again (CASSANDRA-2503)
- * Recycle commitlog segments for improved performance
- (CASSANDRA-3411, 3543, 3557, 3615)
- * update size-tiered compaction to prioritize small tiers (CASSANDRA-2407)
- * add message expiration logic to OutboundTcpConnection (CASSANDRA-3005)
- * off-heap cache to use sun.misc.Unsafe instead of JNA (CASSANDRA-3271)
- * EACH_QUORUM is only supported for writes (CASSANDRA-3272)
- * replace compactionlock use in schema migration by checking CFS.isValid
- (CASSANDRA-3116)
- * recognize that "SELECT first ... *" isn't really "SELECT *" (CASSANDRA-3445)
- * Use faster bytes comparison (CASSANDRA-3434)
- * Bulk loader is no longer a fat client, (HADOOP) bulk load output format
- (CASSANDRA-3045)
- * (Hadoop) add support for KeyRange.filter
- * remove assumption that keys and token are in bijection
- (CASSANDRA-1034, 3574, 3604)
- * always remove endpoints from delevery queue in HH (CASSANDRA-3546)
- * fix race between cf flush and its 2ndary indexes flush (CASSANDRA-3547)
- * fix potential race in AES when a repair fails (CASSANDRA-3548)
- * Remove columns shadowed by a deleted container even when we cannot purge
- (CASSANDRA-3538)
- * Improve memtable slice iteration performance (CASSANDRA-3545)
- * more efficient allocation of small bloom filters (CASSANDRA-3618)
- * Use separate writer thread in SSTableSimpleUnsortedWriter (CASSANDRA-3619)
- * fsync the directory after new sstable or commitlog segment are created (CASSANDRA-3250)
- * fix minor issues reported by FindBugs (CASSANDRA-3658)
- * global key/row caches (CASSANDRA-3143, 3849)
- * optimize memtable iteration during range scan (CASSANDRA-3638)
- * introduce 'crc_check_chance' in CompressionParameters to support
- a checksum percentage checking chance similarly to read-repair (CASSANDRA-3611)
- * a way to deactivate global key/row cache on per-CF basis (CASSANDRA-3667)
- * fix LeveledCompactionStrategy broken because of generation pre-allocation
- in LeveledManifest (CASSANDRA-3691)
- * finer-grained control over data directories (CASSANDRA-2749)
- * Fix ClassCastException during hinted handoff (CASSANDRA-3694)
- * Upgrade Thrift to 0.7 (CASSANDRA-3213)
- * Make stress.java insert operation to use microseconds (CASSANDRA-3725)
- * Allows (internally) doing a range query with a limit of columns instead of
- rows (CASSANDRA-3742)
- * Allow rangeSlice queries to be start/end inclusive/exclusive (CASSANDRA-3749)
- * Fix BulkLoader to support new SSTable layout and add stream
- throttling to prevent an NPE when there is no yaml config (CASSANDRA-3752)
- * Allow concurrent schema migrations (CASSANDRA-1391, 3832)
- * Add SnapshotCommand to trigger snapshot on remote node (CASSANDRA-3721)
- * Make CFMetaData conversions to/from thrift/native schema inverses
- (CASSANDRA_3559)
- * Add initial code for CQL 3.0-beta (CASSANDRA-3781, 3753)
- * Add wide row support for ColumnFamilyInputFormat (CASSANDRA-3264)
- * Allow extending CompositeType comparator (CASSANDRA-3657)
- * Avoids over-paging during get_count (CASSANDRA-3798)
- * Add new command to rebuild a node without (repair) merkle tree calculations
- (CASSANDRA-3483, 3922)
- * respect not only row cache capacity but caching mode when
- trying to read data (CASSANDRA-3812)
- * fix system tests (CASSANDRA-3827)
- * CQL support for altering row key type in ALTER TABLE (CASSANDRA-3781)
- * turn compression on by default (CASSANDRA-3871)
- * make hexToBytes refuse invalid input (CASSANDRA-2851)
- * Make secondary indexes CF inherit compression and compaction from their
- parent CF (CASSANDRA-3877)
- * Finish cleanup up tombstone purge code (CASSANDRA-3872)
- * Avoid NPE on aboarted stream-out sessions (CASSANDRA-3904)
- * BulkRecordWriter throws NPE for counter columns (CASSANDRA-3906)
- * Support compression using BulkWriter (CASSANDRA-3907)
-
-
-1.0.8
- * fix race between cleanup and flush on secondary index CFSes (CASSANDRA-3712)
- * avoid including non-queried nodes in rangeslice read repair
- (CASSANDRA-3843)
- * Only snapshot CF being compacted for snapshot_before_compaction
- (CASSANDRA-3803)
- * Log active compactions in StatusLogger (CASSANDRA-3703)
- * Compute more accurate compaction score per level (CASSANDRA-3790)
- * Return InvalidRequest when using a keyspace that doesn't exist
- (CASSANDRA-3764)
- * disallow user modification of System keyspace (CASSANDRA-3738)
- * allow using sstable2json on secondary index data (CASSANDRA-3738)
- * (cqlsh) add DESCRIBE COLUMNFAMILIES (CASSANDRA-3586)
- * (cqlsh) format blobs correctly and use colors to improve output
- readability (CASSANDRA-3726)
- * synchronize BiMap of bootstrapping tokens (CASSANDRA-3417)
- * show index options in CLI (CASSANDRA-3809)
- * add optional socket timeout for streaming (CASSANDRA-3838)
- * fix truncate not to leave behind non-CFS backed secondary indexes
- (CASSANDRA-3844)
- * make CLI `show schema` to use output stream directly instead
- of StringBuilder (CASSANDRA-3842)
- * remove the wait on hint future during write (CASSANDRA-3870)
- * (cqlsh) ignore missing CfDef opts (CASSANDRA-3933)
- * (cqlsh) look for cqlshlib relative to realpath (CASSANDRA-3767)
- * Fix short read protection (CASSANDRA-3934)
- * Make sure infered and actual schema match (CASSANDRA-3371)
- * Fix NPE during HH delivery (CASSANDRA-3677)
- * Don't put boostrapping node in 'hibernate' status (CASSANDRA-3737)
- * Fix double quotes in windows bat files (CASSANDRA-3744)
- * Fix bad validator lookup (CASSANDRA-3789)
- * Fix soft reset in EC2MultiRegionSnitch (CASSANDRA-3835)
- * Don't leave zombie connections with THSHA thrift server (CASSANDRA-3867)
- * (cqlsh) fix deserialization of data (CASSANDRA-3874)
- * Fix removetoken force causing an inconsistent state (CASSANDRA-3876)
- * Fix ahndling of some types with Pig (CASSANDRA-3886)
- * Don't allow to drop the system keyspace (CASSANDRA-3759)
- * Make Pig deletes disabled by default and configurable (CASSANDRA-3628)
-Merged from 0.8:
- * (Pig) fix CassandraStorage to use correct comparator in Super ColumnFamily
- case (CASSANDRA-3251)
- * fix thread safety issues in commitlog replay, primarily affecting
- systems with many (100s) of CF definitions (CASSANDRA-3751)
- * Fix relevant tomstone ignored with super columns (CASSANDRA-3875)
-
-
-1.0.7
- * fix regression in HH page size calculation (CASSANDRA-3624)
- * retry failed stream on IOException (CASSANDRA-3686)
- * allow configuring bloom_filter_fp_chance (CASSANDRA-3497)
- * attempt hint delivery every ten minutes, or when failure detector
- notifies us that a node is back up, whichever comes first. hint
- handoff throttle delay default changed to 1ms, from 50 (CASSANDRA-3554)
- * add nodetool setstreamthroughput (CASSANDRA-3571)
- * fix assertion when dropping a columnfamily with no sstables (CASSANDRA-3614)
- * more efficient allocation of small bloom filters (CASSANDRA-3618)
- * CLibrary.createHardLinkWithExec() to check for errors (CASSANDRA-3101)
- * Avoid creating empty and non cleaned writer during compaction (CASSANDRA-3616)
- * stop thrift service in shutdown hook so we can quiesce MessagingService
- (CASSANDRA-3335)
- * (CQL) compaction_strategy_options and compression_parameters for
- CREATE COLUMNFAMILY statement (CASSANDRA-3374)
- * Reset min/max compaction threshold when creating size tiered compaction
- strategy (CASSANDRA-3666)
- * Don't ignore IOException during compaction (CASSANDRA-3655)
- * Fix assertion error for CF with gc_grace=0 (CASSANDRA-3579)
- * Shutdown ParallelCompaction reducer executor after use (CASSANDRA-3711)
- * Avoid < 0 value for pending tasks in leveled compaction (CASSANDRA-3693)
- * (Hadoop) Support TimeUUID in Pig CassandraStorage (CASSANDRA-3327)
- * Check schema is ready before continuing boostrapping (CASSANDRA-3629)
- * Catch overflows during parsing of chunk_length_kb (CASSANDRA-3644)
- * Improve stream protocol mismatch errors (CASSANDRA-3652)
- * Avoid multiple thread doing HH to the same target (CASSANDRA-3681)
- * Add JMX property for rp_timeout_in_ms (CASSANDRA-2940)
- * Allow DynamicCompositeType to compare component of different types
- (CASSANDRA-3625)
- * Flush non-cfs backed secondary indexes (CASSANDRA-3659)
- * Secondary Indexes should report memory consumption (CASSANDRA-3155)
- * fix for SelectStatement start/end key are not set correctly
- when a key alias is involved (CASSANDRA-3700)
- * fix CLI `show schema` command insert of an extra comma in
- column_metadata (CASSANDRA-3714)
-Merged from 0.8:
- * avoid logging (harmless) exception when GC takes < 1ms (CASSANDRA-3656)
- * prevent new nodes from thinking down nodes are up forever (CASSANDRA-3626)
- * use correct list of replicas for LOCAL_QUORUM reads when read repair
- is disabled (CASSANDRA-3696)
- * block on flush before compacting hints (may prevent OOM) (CASSANDRA-3733)
-
-
-1.0.6
- * (CQL) fix cqlsh support for replicate_on_write (CASSANDRA-3596)
- * fix adding to leveled manifest after streaming (CASSANDRA-3536)
- * filter out unavailable cipher suites when using encryption (CASSANDRA-3178)
- * (HADOOP) add old-style api support for CFIF and CFRR (CASSANDRA-2799)
- * Support TimeUUIDType column names in Stress.java tool (CASSANDRA-3541)
- * (CQL) INSERT/UPDATE/DELETE/TRUNCATE commands should allow CF names to
- be qualified by keyspace (CASSANDRA-3419)
- * always remove endpoints from delevery queue in HH (CASSANDRA-3546)
- * fix race between cf flush and its 2ndary indexes flush (CASSANDRA-3547)
- * fix potential race in AES when a repair fails (CASSANDRA-3548)
- * fix default value validation usage in CLI SET command (CASSANDRA-3553)
- * Optimize componentsFor method for compaction and startup time
- (CASSANDRA-3532)
- * (CQL) Proper ColumnFamily metadata validation on CREATE COLUMNFAMILY
- (CASSANDRA-3565)
- * fix compression "chunk_length_kb" option to set correct kb value for
- thrift/avro (CASSANDRA-3558)
- * fix missing response during range slice repair (CASSANDRA-3551)
- * 'describe ring' moved from CLI to nodetool and available through JMX (CASSANDRA-3220)
- * add back partitioner to sstable metadata (CASSANDRA-3540)
- * fix NPE in get_count for counters (CASSANDRA-3601)
-Merged from 0.8:
- * remove invalid assertion that table was opened before dropping it
- (CASSANDRA-3580)
- * range and index scans now only send requests to enough replicas to
- satisfy requested CL + RR (CASSANDRA-3598)
- * use cannonical host for local node in nodetool info (CASSANDRA-3556)
- * remove nonlocal DC write optimization since it only worked with
- CL.ONE or CL.LOCAL_QUORUM (CASSANDRA-3577, 3585)
- * detect misuses of CounterColumnType (CASSANDRA-3422)
- * turn off string interning in json2sstable, take 2 (CASSANDRA-2189)
- * validate compression parameters on add/update of the ColumnFamily
- (CASSANDRA-3573)
- * Check for 0.0.0.0 is incorrect in CFIF (CASSANDRA-3584)
- * Increase vm.max_map_count in debian packaging (CASSANDRA-3563)
- * gossiper will never add itself to saved endpoints (CASSANDRA-3485)
-
-
-1.0.5
- * revert CASSANDRA-3407 (see CASSANDRA-3540)
- * fix assertion error while forwarding writes to local nodes (CASSANDRA-3539)
-
-
-1.0.4
- * fix self-hinting of timed out read repair updates and make hinted handoff
- less prone to OOMing a coordinator (CASSANDRA-3440)
- * expose bloom filter sizes via JMX (CASSANDRA-3495)
- * enforce RP tokens 0..2**127 (CASSANDRA-3501)
- * canonicalize paths exposed through JMX (CASSANDRA-3504)
- * fix "liveSize" stat when sstables are removed (CASSANDRA-3496)
- * add bloom filter FP rates to nodetool cfstats (CASSANDRA-3347)
- * record partitioner in sstable metadata component (CASSANDRA-3407)
- * add new upgradesstables nodetool command (CASSANDRA-3406)
- * skip --debug requirement to see common exceptions in CLI (CASSANDRA-3508)
- * fix incorrect query results due to invalid max timestamp (CASSANDRA-3510)
- * make sstableloader recognize compressed sstables (CASSANDRA-3521)
- * avoids race in OutboundTcpConnection in multi-DC setups (CASSANDRA-3530)
- * use SETLOCAL in cassandra.bat (CASANDRA-3506)
- * fix ConcurrentModificationException in Table.all() (CASSANDRA-3529)
-Merged from 0.8:
- * fix concurrence issue in the FailureDetector (CASSANDRA-3519)
- * fix array out of bounds error in counter shard removal (CASSANDRA-3514)
- * avoid dropping tombstones when they might still be needed to shadow
- data in a different sstable (CASSANDRA-2786)
-
-
-1.0.3
- * revert name-based query defragmentation aka CASSANDRA-2503 (CASSANDRA-3491)
- * fix invalidate-related test failures (CASSANDRA-3437)
- * add next-gen cqlsh to bin/ (CASSANDRA-3188, 3131, 3493)
- * (CQL) fix handling of rows with no columns (CASSANDRA-3424, 3473)
- * fix querying supercolumns by name returning only a subset of
- subcolumns or old subcolumn versions (CASSANDRA-3446)
- * automatically compute sha1 sum for uncompressed data files (CASSANDRA-3456)
- * fix reading metadata/statistics component for version < h (CASSANDRA-3474)
- * add sstable forward-compatibility (CASSANDRA-3478)
- * report compression ratio in CFSMBean (CASSANDRA-3393)
- * fix incorrect size exception during streaming of counters (CASSANDRA-3481)
- * (CQL) fix for counter decrement syntax (CASSANDRA-3418)
- * Fix race introduced by CASSANDRA-2503 (CASSANDRA-3482)
- * Fix incomplete deletion of delivered hints (CASSANDRA-3466)
- * Avoid rescheduling compactions when no compaction was executed
- (CASSANDRA-3484)
- * fix handling of the chunk_length_kb compression options (CASSANDRA-3492)
-Merged from 0.8:
- * fix updating CF row_cache_provider (CASSANDRA-3414)
- * CFMetaData.convertToThrift method to set RowCacheProvider (CASSANDRA-3405)
- * acquire compactionlock during truncate (CASSANDRA-3399)
- * fix displaying cfdef entries for super columnfamilies (CASSANDRA-3415)
- * Make counter shard merging thread safe (CASSANDRA-3178)
- * Revert CASSANDRA-2855
- * Fix bug preventing the use of efficient cross-DC writes (CASSANDRA-3472)
- * `describe ring` command for CLI (CASSANDRA-3220)
- * (Hadoop) skip empty rows when entire row is requested, redux (CASSANDRA-2855)
-
-
-1.0.2
- * "defragment" rows for name-based queries under STCS (CASSANDRA-2503)
- * Add timing information to cassandra-cli GET/SET/LIST queries (CASSANDRA-3326)
- * Only create one CompressionMetadata object per sstable (CASSANDRA-3427)
- * cleanup usage of StorageService.setMode() (CASANDRA-3388)
- * Avoid large array allocation for compressed chunk offsets (CASSANDRA-3432)
- * fix DecimalType bytebuffer marshalling (CASSANDRA-3421)
- * fix bug that caused first column in per row indexes to be ignored
- (CASSANDRA-3441)
- * add JMX call to clean (failed) repair sessions (CASSANDRA-3316)
- * fix sstableloader reference acquisition bug (CASSANDRA-3438)
- * fix estimated row size regression (CASSANDRA-3451)
- * make sure we don't return more columns than asked (CASSANDRA-3303, 3395)
-Merged from 0.8:
- * acquire compactionlock during truncate (CASSANDRA-3399)
- * fix displaying cfdef entries for super columnfamilies (CASSANDRA-3415)
-
-
-1.0.1
- * acquire references during index build to prevent delete problems
- on Windows (CASSANDRA-3314)
- * describe_ring should include datacenter/topology information (CASSANDRA-2882)
- * Thrift sockets are not properly buffered (CASSANDRA-3261)
- * performance improvement for bytebufferutil compare function (CASSANDRA-3286)
- * add system.versions ColumnFamily (CASSANDRA-3140)
- * reduce network copies (CASSANDRA-3333, 3373)
- * limit nodetool to 32MB of heap (CASSANDRA-3124)
- * (CQL) update parser to accept "timestamp" instead of "date" (CASSANDRA-3149)
- * Fix CLI `show schema` to include "compression_options" (CASSANDRA-3368)
- * Snapshot to include manifest under LeveledCompactionStrategy (CASSANDRA-3359)
- * (CQL) SELECT query should allow CF name to be qualified by keyspace (CASSANDRA-3130)
- * (CQL) Fix internal application error specifying 'using consistency ...'
- in lower case (CASSANDRA-3366)
- * fix Deflate compression when compression actually makes the data bigger
- (CASSANDRA-3370)
- * optimize UUIDGen to avoid lock contention on InetAddress.getLocalHost
- (CASSANDRA-3387)
- * tolerate index being dropped mid-mutation (CASSANDRA-3334, 3313)
- * CompactionManager is now responsible for checking for new candidates
- post-task execution, enabling more consistent leveled compaction
- (CASSANDRA-3391)
- * Cache HSHA threads (CASSANDRA-3372)
- * use CF/KS names as snapshot prefix for drop + truncate operations
- (CASSANDRA-2997)
- * Break bloom filters up to avoid heap fragmentation (CASSANDRA-2466)
- * fix cassandra hanging on jsvc stop (CASSANDRA-3302)
- * Avoid leveled compaction getting blocked on errors (CASSANDRA-3408)
- * Make reloading the compaction strategy safe (CASSANDRA-3409)
- * ignore 0.8 hints even if compaction begins before we try to purge
- them (CASSANDRA-3385)
- * remove procrun (bin\daemon) from Cassandra source tree and
- artifacts (CASSANDRA-3331)
- * make cassandra compile under JDK7 (CASSANDRA-3275)
- * remove dependency of clientutil.jar to FBUtilities (CASSANDRA-3299)
- * avoid truncation errors by using long math on long values (CASSANDRA-3364)
- * avoid clock drift on some Windows machine (CASSANDRA-3375)
- * display cache provider in cli 'describe keyspace' command (CASSANDRA-3384)
- * fix incomplete topology information in describe_ring (CASSANDRA-3403)
- * expire dead gossip states based on time (CASSANDRA-2961)
- * improve CompactionTask extensibility (CASSANDRA-3330)
- * Allow one leveled compaction task to kick off another (CASSANDRA-3363)
- * allow encryption only between datacenters (CASSANDRA-2802)
-Merged from 0.8:
- * fix truncate allowing data to be replayed post-restart (CASSANDRA-3297)
- * make iwriter final in IndexWriter to avoid NPE (CASSANDRA-2863)
- * (CQL) update grammar to require key clause in DELETE statement
- (CASSANDRA-3349)
- * (CQL) allow numeric keyspace names in USE statement (CASSANDRA-3350)
- * (Hadoop) skip empty rows when slicing the entire row (CASSANDRA-2855)
- * Fix handling of tombstone by SSTableExport/Import (CASSANDRA-3357)
- * fix ColumnIndexer to use long offsets (CASSANDRA-3358)
- * Improved CLI exceptions (CASSANDRA-3312)
- * Fix handling of tombstone by SSTableExport/Import (CASSANDRA-3357)
- * Only count compaction as active (for throttling) when they have
- successfully acquired the compaction lock (CASSANDRA-3344)
- * Display CLI version string on startup (CASSANDRA-3196)
- * (Hadoop) make CFIF try rpc_address or fallback to listen_address
- (CASSANDRA-3214)
- * (Hadoop) accept comma delimited lists of initial thrift connections
- (CASSANDRA-3185)
- * ColumnFamily min_compaction_threshold should be >= 2 (CASSANDRA-3342)
- * (Pig) add 0.8+ types and key validation type in schema (CASSANDRA-3280)
- * Fix completely removing column metadata using CLI (CASSANDRA-3126)
- * CLI `describe cluster;` output should be on separate lines for separate versions
- (CASSANDRA-3170)
- * fix changing durable_writes keyspace option during CF creation
- (CASSANDRA-3292)
- * avoid locking on update when no indexes are involved (CASSANDRA-3386)
- * fix assertionError during repair with ordered partitioners (CASSANDRA-3369)
- * correctly serialize key_validation_class for avro (CASSANDRA-3391)
- * don't expire counter tombstone after streaming (CASSANDRA-3394)
- * prevent nodes that failed to join from hanging around forever
- (CASSANDRA-3351)
- * remove incorrect optimization from slice read path (CASSANDRA-3390)
- * Fix race in AntiEntropyService (CASSANDRA-3400)
-
-
-1.0.0-final
- * close scrubbed sstable fd before deleting it (CASSANDRA-3318)
- * fix bug preventing obsolete commitlog segments from being removed
- (CASSANDRA-3269)
- * tolerate whitespace in seed CDL (CASSANDRA-3263)
- * Change default heap thresholds to max(min(1/2 ram, 1G), min(1/4 ram, 8GB))
- (CASSANDRA-3295)
- * Fix broken CompressedRandomAccessReaderTest (CASSANDRA-3298)
- * (CQL) fix type information returned for wildcard queries (CASSANDRA-3311)
- * add estimated tasks to LeveledCompactionStrategy (CASSANDRA-3322)
- * avoid including compaction cache-warming in keycache stats (CASSANDRA-3325)
- * run compaction and hinted handoff threads at MIN_PRIORITY (CASSANDRA-3308)
- * default hsha thrift server to cpu core count in rpc pool (CASSANDRA-3329)
- * add bin\daemon to binary tarball for Windows service (CASSANDRA-3331)
- * Fix places where uncompressed size of sstables was use in place of the
- compressed one (CASSANDRA-3338)
- * Fix hsha thrift server (CASSANDRA-3346)
- * Make sure repair only stream needed sstables (CASSANDRA-3345)
-
-
-1.0.0-rc2
- * Log a meaningful warning when a node receives a message for a repair session
- that doesn't exist anymore (CASSANDRA-3256)
- * test for NUMA policy support as well as numactl presence (CASSANDRA-3245)
- * Fix FD leak when internode encryption is enabled (CASSANDRA-3257)
- * Remove incorrect assertion in mergeIterator (CASSANDRA-3260)
- * FBUtilities.hexToBytes(String) to throw NumberFormatException when string
- contains non-hex characters (CASSANDRA-3231)
- * Keep SimpleSnitch proximity ordering unchanged from what the Strategy
- generates, as intended (CASSANDRA-3262)
- * remove Scrub from compactionstats when finished (CASSANDRA-3255)
- * fix counter entry in jdbc TypesMap (CASSANDRA-3268)
- * fix full queue scenario for ParallelCompactionIterator (CASSANDRA-3270)
- * fix bootstrap process (CASSANDRA-3285)
- * don't try delivering hints if when there isn't any (CASSANDRA-3176)
- * CLI documentation change for ColumnFamily `compression_options` (CASSANDRA-3282)
- * ignore any CF ids sent by client for adding CF/KS (CASSANDRA-3288)
- * remove obsolete hints on first startup (CASSANDRA-3291)
- * use correct ISortedColumns for time-optimized reads (CASSANDRA-3289)
- * Evict gossip state immediately when a token is taken over by a new IP
- (CASSANDRA-3259)
-
-
-1.0.0-rc1
- * Update CQL to generate microsecond timestamps by default (CASSANDRA-3227)
- * Fix counting CFMetadata towards Memtable liveRatio (CASSANDRA-3023)
- * Kill server on wrapped OOME such as from FileChannel.map (CASSANDRA-3201)
- * remove unnecessary copy when adding to row cache (CASSANDRA-3223)
- * Log message when a full repair operation completes (CASSANDRA-3207)
- * Fix streamOutSession keeping sstables references forever if the remote end
- dies (CASSANDRA-3216)
- * Remove dynamic_snitch boolean from example configuration (defaulting to
- true) and set default badness threshold to 0.1 (CASSANDRA-3229)
- * Base choice of random or "balanced" token on bootstrap on whether
- schema definitions were found (CASSANDRA-3219)
- * Fixes for LeveledCompactionStrategy score computation, prioritization,
- scheduling, and performance (CASSANDRA-3224, 3234)
- * parallelize sstable open at server startup (CASSANDRA-2988)
- * fix handling of exceptions writing to OutboundTcpConnection (CASSANDRA-3235)
- * Allow using quotes in "USE <keyspace>;" CLI command (CASSANDRA-3208)
- * Don't allow any cache loading exceptions to halt startup (CASSANDRA-3218)
- * Fix sstableloader --ignores option (CASSANDRA-3247)
- * File descriptor limit increased in packaging (CASSANDRA-3206)
- * Fix deadlock in commit log during flush (CASSANDRA-3253)
-
-
-1.0.0-beta1
- * removed binarymemtable (CASSANDRA-2692)
- * add commitlog_total_space_in_mb to prevent fragmented logs (CASSANDRA-2427)
- * removed commitlog_rotation_threshold_in_mb configuration (CASSANDRA-2771)
- * make AbstractBounds.normalize de-overlapp overlapping ranges (CASSANDRA-2641)
- * replace CollatingIterator, ReducingIterator with MergeIterator
- (CASSANDRA-2062)
- * Fixed the ability to set compaction strategy in cli using create column
- family command (CASSANDRA-2778)
- * clean up tmp files after failed compaction (CASSANDRA-2468)
- * restrict repair streaming to specific columnfamilies (CASSANDRA-2280)
- * don't bother persisting columns shadowed by a row tombstone (CASSANDRA-2589)
- * reset CF and SC deletion times after gc_grace (CASSANDRA-2317)
- * optimize away seek when compacting wide rows (CASSANDRA-2879)
- * single-pass streaming (CASSANDRA-2677, 2906, 2916, 3003)
- * use reference counting for deleting sstables instead of relying on GC
- (CASSANDRA-2521, 3179)
- * store hints as serialized mutations instead of pointers to data row
- (CASSANDRA-2045)
- * store hints in the coordinator node instead of in the closest replica
- (CASSANDRA-2914)
- * add row_cache_keys_to_save CF option (CASSANDRA-1966)
- * check column family validity in nodetool repair (CASSANDRA-2933)
- * use lazy initialization instead of class initialization in NodeId
- (CASSANDRA-2953)
- * add paging to get_count (CASSANDRA-2894)
- * fix "short reads" in [multi]get (CASSANDRA-2643, 3157, 3192)
- * add optional compression for sstables (CASSANDRA-47, 2994, 3001, 3128)
- * add scheduler JMX metrics (CASSANDRA-2962)
- * add block level checksum for compressed data (CASSANDRA-1717)
- * make column family backed column map pluggable and introduce unsynchronized
- ArrayList backed one to speedup reads (CASSANDRA-2843, 3165, 3205)
- * refactoring of the secondary index api (CASSANDRA-2982)
- * make CL > ONE reads wait for digest reconciliation before returning
- (CASSANDRA-2494)
- * fix missing logging for some exceptions (CASSANDRA-2061)
- * refactor and optimize ColumnFamilyStore.files(...) and Descriptor.fromFilename(String)
- and few other places responsible for work with SSTable files (CASSANDRA-3040)
- * Stop reading from sstables once we know we have the most recent columns,
- for query-by-name requests (CASSANDRA-2498)
- * Add query-by-column mode to stress.java (CASSANDRA-3064)
- * Add "install" command to cassandra.bat (CASSANDRA-292)
- * clean up KSMetadata, CFMetadata from unnecessary
- Thrift<->Avro conversion methods (CASSANDRA-3032)
- * Add timeouts to client request schedulers (CASSANDRA-3079, 3096)
- * Cli to use hashes rather than array of hashes for strategy options (CASSANDRA-3081)
- * LeveledCompactionStrategy (CASSANDRA-1608, 3085, 3110, 3087, 3145, 3154, 3182)
- * Improvements of the CLI `describe` command (CASSANDRA-2630)
- * reduce window where dropped CF sstables may not be deleted (CASSANDRA-2942)
- * Expose gossip/FD info to JMX (CASSANDRA-2806)
- * Fix streaming over SSL when compressed SSTable involved (CASSANDRA-3051)
- * Add support for pluggable secondary index implementations (CASSANDRA-3078)
- * remove compaction_thread_priority setting (CASSANDRA-3104)
- * generate hints for replicas that timeout, not just replicas that are known
- to be down before starting (CASSANDRA-2034)
- * Add throttling for internode streaming (CASSANDRA-3080)
- * make the repair of a range repair all replica (CASSANDRA-2610, 3194)
- * expose the ability to repair the first range (as returned by the
- partitioner) of a node (CASSANDRA-2606)
- * Streams Compression (CASSANDRA-3015)
- * add ability to use multiple threads during a single compaction
- (CASSANDRA-2901)
- * make AbstractBounds.normalize support overlapping ranges (CASSANDRA-2641)
- * fix of the CQL count() behavior (CASSANDRA-3068)
- * use TreeMap backed column families for the SSTable simple writers
- (CASSANDRA-3148)
- * fix inconsistency of the CLI syntax when {} should be used instead of [{}]
- (CASSANDRA-3119)
- * rename CQL type names to match expected SQL behavior (CASSANDRA-3149, 3031)
- * Arena-based allocation for memtables (CASSANDRA-2252, 3162, 3163, 3168)
- * Default RR chance to 0.1 (CASSANDRA-3169)
- * Add RowLevel support to secondary index API (CASSANDRA-3147)
- * Make SerializingCacheProvider the default if JNA is available (CASSANDRA-3183)
- * Fix backwards compatibilty for CQL memtable properties (CASSANDRA-3190)
- * Add five-minute delay before starting compactions on a restarted server
- (CASSANDRA-3181)
- * Reduce copies done for intra-host messages (CASSANDRA-1788, 3144)
- * support of compaction strategy option for stress.java (CASSANDRA-3204)
- * make memtable throughput and column count thresholds no-ops (CASSANDRA-2449)
- * Return schema information along with the resultSet in CQL (CASSANDRA-2734)
- * Add new DecimalType (CASSANDRA-2883)
- * Fix assertion error in RowRepairResolver (CASSANDRA-3156)
- * Reduce unnecessary high buffer sizes (CASSANDRA-3171)
- * Pluggable compaction strategy (CASSANDRA-1610)
- * Add new broadcast_address config option (CASSANDRA-2491)
-
-
-0.8.7
- * Kill server on wrapped OOME such as from FileChannel.map (CASSANDRA-3201)
- * Allow using quotes in "USE <keyspace>;" CLI command (CASSANDRA-3208)
- * Log message when a full repair operation completes (CASSANDRA-3207)
- * Don't allow any cache loading exceptions to halt startup (CASSANDRA-3218)
- * Fix sstableloader --ignores option (CASSANDRA-3247)
- * File descriptor limit increased in packaging (CASSANDRA-3206)
- * Log a meaningfull warning when a node receive a message for a repair session
- that doesn't exist anymore (CASSANDRA-3256)
- * Fix FD leak when internode encryption is enabled (CASSANDRA-3257)
- * FBUtilities.hexToBytes(String) to throw NumberFormatException when string
- contains non-hex characters (CASSANDRA-3231)
- * Keep SimpleSnitch proximity ordering unchanged from what the Strategy
- generates, as intended (CASSANDRA-3262)
- * remove Scrub from compactionstats when finished (CASSANDRA-3255)
- * Fix tool .bat files when CASSANDRA_HOME contains spaces (CASSANDRA-3258)
- * Force flush of status table when removing/updating token (CASSANDRA-3243)
- * Evict gossip state immediately when a token is taken over by a new IP (CASSANDRA-3259)
- * Fix bug where the failure detector can take too long to mark a host
- down (CASSANDRA-3273)
- * (Hadoop) allow wrapping ranges in queries (CASSANDRA-3137)
- * (Hadoop) check all interfaces for a match with split location
- before falling back to random replica (CASSANDRA-3211)
- * (Hadoop) Make Pig storage handle implements LoadMetadata (CASSANDRA-2777)
- * (Hadoop) Fix exception during PIG 'dump' (CASSANDRA-2810)
- * Fix stress COUNTER_GET option (CASSANDRA-3301)
- * Fix missing fields in CLI `show schema` output (CASSANDRA-3304)
- * Nodetool no longer leaks threads and closes JMX connections (CASSANDRA-3309)
- * fix truncate allowing data to be replayed post-restart (CASSANDRA-3297)
- * Move SimpleAuthority and SimpleAuthenticator to examples (CASSANDRA-2922)
- * Fix handling of tombstone by SSTableExport/Import (CASSANDRA-3357)
- * Fix transposition in cfHistograms (CASSANDRA-3222)
- * Allow using number as DC name when creating keyspace in CQL (CASSANDRA-3239)
- * Force flush of system table after updating/removing a token (CASSANDRA-3243)
-
-
-0.8.6
- * revert CASSANDRA-2388
- * change TokenRange.endpoints back to listen/broadcast address to match
- pre-1777 behavior, and add TokenRange.rpc_endpoints instead (CASSANDRA-3187)
- * avoid trying to watch cassandra-topology.properties when loaded from jar
- (CASSANDRA-3138)
- * prevent users from creating keyspaces with LocalStrategy replication
- (CASSANDRA-3139)
- * fix CLI `show schema;` to output correct keyspace definition statement
- (CASSANDRA-3129)
- * CustomTThreadPoolServer to log TTransportException at DEBUG level
- (CASSANDRA-3142)
- * allow topology sort to work with non-unique rack names between
- datacenters (CASSANDRA-3152)
- * Improve caching of same-version Messages on digest and repair paths
- (CASSANDRA-3158)
- * Randomize choice of first replica for counter increment (CASSANDRA-2890)
- * Fix using read_repair_chance instead of merge_shard_change (CASSANDRA-3202)
- * Avoid streaming data to nodes that already have it, on move as well as
- decommission (CASSANDRA-3041)
- * Fix divide by zero error in GCInspector (CASSANDRA-3164)
- * allow quoting of the ColumnFamily name in CLI `create column family`
- statement (CASSANDRA-3195)
- * Fix rolling upgrade from 0.7 to 0.8 problem (CASANDRA-3166)
- * Accomodate missing encryption_options in IncomingTcpConnection.stream
- (CASSANDRA-3212)
-
-
-0.8.5
- * fix NPE when encryption_options is unspecified (CASSANDRA-3007)
- * include column name in validation failure exceptions (CASSANDRA-2849)
- * make sure truncate clears out the commitlog so replay won't re-
- populate with truncated data (CASSANDRA-2950)
- * fix NPE when debug logging is enabled and dropped CF is present
- in a commitlog segment (CASSANDRA-3021)
- * fix cassandra.bat when CASSANDRA_HOME contains spaces (CASSANDRA-2952)
- * fix to SSTableSimpleUnsortedWriter bufferSize calculation (CASSANDRA-3027)
- * make cleanup and normal compaction able to skip empty rows
- (rows containing nothing but expired tombstones) (CASSANDRA-3039)
- * work around native memory leak in com.sun.management.GarbageCollectorMXBean
- (CASSANDRA-2868)
- * validate that column names in column_metadata are not equal to key_alias
- on create/update of the ColumnFamily and CQL 'ALTER' statement (CASSANDRA-3036)
- * return an InvalidRequestException if an indexed column is assigned
- a value larger than 64KB (CASSANDRA-3057)
- * fix of numeric-only and string column names handling in CLI "drop index"
- (CASSANDRA-3054)
- * prune index scan resultset back to original request for lazy
- resultset expansion case (CASSANDRA-2964)
- * (Hadoop) fail jobs when Cassandra node has failed but TaskTracker
- has not (CASSANDRA-2388)
- * fix dynamic snitch ignoring nodes when read_repair_chance is zero
- (CASSANDRA-2662)
- * avoid retaining references to dropped CFS objects in
- CompactionManager.estimatedCompactions (CASSANDRA-2708)
- * expose rpc timeouts per host in MessagingServiceMBean (CASSANDRA-2941)
- * avoid including cwd in classpath for deb and rpm packages (CASSANDRA-2881)
- * remove gossip state when a new IP takes over a token (CASSANDRA-3071)
- * allow sstable2json to work on index sstable files (CASSANDRA-3059)
- * always hint counters (CASSANDRA-3099)
- * fix log4j initialization in EmbeddedCassandraService (CASSANDRA-2857)
- * remove gossip state when a new IP takes over a token (CASSANDRA-3071)
- * work around native memory leak in com.sun.management.GarbageCollectorMXBean
- (CASSANDRA-2868)
- * fix UnavailableException with writes at CL.EACH_QUORM (CASSANDRA-3084)
- * fix parsing of the Keyspace and ColumnFamily names in numeric
- and string representations in CLI (CASSANDRA-3075)
- * fix corner cases in Range.differenceToFetch (CASSANDRA-3084)
- * fix ip address String representation in the ring cache (CASSANDRA-3044)
- * fix ring cache compatibility when mixing pre-0.8.4 nodes with post-
- in the same cluster (CASSANDRA-3023)
- * make repair report failure when a node participating dies (instead of
- hanging forever) (CASSANDRA-2433)
- * fix handling of the empty byte buffer by ReversedType (CASSANDRA-3111)
- * Add validation that Keyspace names are case-insensitively unique (CASSANDRA-3066)
- * catch invalid key_validation_class before instantiating UpdateColumnFamily (CASSANDRA-3102)
- * make Range and Bounds objects client-safe (CASSANDRA-3108)
- * optionally skip log4j configuration (CASSANDRA-3061)
- * bundle sstableloader with the debian package (CASSANDRA-3113)
- * don't try to build secondary indexes when there is none (CASSANDRA-3123)
- * improve SSTableSimpleUnsortedWriter speed for large rows (CASSANDRA-3122)
- * handle keyspace arguments correctly in nodetool snapshot (CASSANDRA-3038)
- * Fix SSTableImportTest on windows (CASSANDRA-3043)
- * expose compactionThroughputMbPerSec through JMX (CASSANDRA-3117)
- * log keyspace and CF of large rows being compacted
-
-
-0.8.4
- * change TokenRing.endpoints to be a list of rpc addresses instead of
- listen/broadcast addresses (CASSANDRA-1777)
- * include files-to-be-streamed in StreamInSession.getSources (CASSANDRA-2972)
- * use JAVA env var in cassandra-env.sh (CASSANDRA-2785, 2992)
- * avoid doing read for no-op replicate-on-write at CL=1 (CASSANDRA-2892)
- * refuse counter write for CL.ANY (CASSANDRA-2990)
- * switch back to only logging recent dropped messages (CASSANDRA-3004)
- * always deserialize RowMutation for counters (CASSANDRA-3006)
- * ignore saved replication_factor strategy_option for NTS (CASSANDRA-3011)
- * make sure pre-truncate CL segments are discarded (CASSANDRA-2950)
-
-
-0.8.3
- * add ability to drop local reads/writes that are going to timeout
- (CASSANDRA-2943)
- * revamp token removal process, keep gossip states for 3 days (CASSANDRA-2496)
- * don't accept extra args for 0-arg nodetool commands (CASSANDRA-2740)
- * log unavailableexception details at debug level (CASSANDRA-2856)
- * expose data_dir though jmx (CASSANDRA-2770)
- * don't include tmp files as sstable when create cfs (CASSANDRA-2929)
- * log Java classpath on startup (CASSANDRA-2895)
- * keep gossipped version in sync with actual on migration coordinator
- (CASSANDRA-2946)
- * use lazy initialization instead of class initialization in NodeId
- (CASSANDRA-2953)
- * check column family validity in nodetool repair (CASSANDRA-2933)
- * speedup bytes to hex conversions dramatically (CASSANDRA-2850)
- * Flush memtables on shutdown when durable writes are disabled
- (CASSANDRA-2958)
- * improved POSIX compatibility of start scripts (CASsANDRA-2965)
- * add counter support to Hadoop InputFormat (CASSANDRA-2981)
- * fix bug where dirty commitlog segments were removed (and avoid keeping
- segments with no post-flush activity permanently dirty) (CASSANDRA-2829)
- * fix throwing exception with batch mutation of counter super columns
- (CASSANDRA-2949)
- * ignore system tables during repair (CASSANDRA-2979)
- * throw exception when NTS is given replication_factor as an option
- (CASSANDRA-2960)
- * fix assertion error during compaction of counter CFs (CASSANDRA-2968)
- * avoid trying to create index names, when no index exists (CASSANDRA-2867)
- * don't sample the system table when choosing a bootstrap token
- (CASSANDRA-2825)
- * gossiper notifies of local state changes (CASSANDRA-2948)
- * add asynchronous and half-sync/half-async (hsha) thrift servers
- (CASSANDRA-1405)
- * fix potential use of free'd native memory in SerializingCache
- (CASSANDRA-2951)
- * prune index scan resultset back to original request for lazy
- resultset expansion case (CASSANDRA-2964)
- * (Hadoop) fail jobs when Cassandra node has failed but TaskTracker
- has not (CASSANDRA-2388)
-
-
-0.8.2
- * CQL:
- - include only one row per unique key for IN queries (CASSANDRA-2717)
- - respect client timestamp on full row deletions (CASSANDRA-2912)
- * improve thread-safety in StreamOutSession (CASSANDRA-2792)
- * allow deleting a row and updating indexed columns in it in the
- same mutation (CASSANDRA-2773)
- * Expose number of threads blocked on submitting memtable to flush
- in JMX (CASSANDRA-2817)
- * add ability to return "endpoints" to nodetool (CASSANDRA-2776)
- * Add support for multiple (comma-delimited) coordinator addresses
- to ColumnFamilyInputFormat (CASSANDRA-2807)
- * fix potential NPE while scheduling read repair for range slice
- (CASSANDRA-2823)
- * Fix race in SystemTable.getCurrentLocalNodeId (CASSANDRA-2824)
- * Correctly set default for replicate_on_write (CASSANDRA-2835)
- * improve nodetool compactionstats formatting (CASSANDRA-2844)
- * fix index-building status display (CASSANDRA-2853)
- * fix CLI perpetuating obsolete KsDef.replication_factor (CASSANDRA-2846)
- * improve cli treatment of multiline comments (CASSANDRA-2852)
- * handle row tombstones correctly in EchoedRow (CASSANDRA-2786)
- * add MessagingService.get[Recently]DroppedMessages and
- StorageService.getExceptionCount (CASSANDRA-2804)
- * fix possibility of spurious UnavailableException for LOCAL_QUORUM
- reads with dynamic snitch + read repair disabled (CASSANDRA-2870)
- * add ant-optional as dependence for the debian package (CASSANDRA-2164)
- * add option to specify limit for get_slice in the CLI (CASSANDRA-2646)
- * decrease HH page size (CASSANDRA-2832)
- * reset cli keyspace after dropping the current one (CASSANDRA-2763)
- * add KeyRange option to Hadoop inputformat (CASSANDRA-1125)
- * fix protocol versioning (CASSANDRA-2818, 2860)
- * support spaces in path to log4j configuration (CASSANDRA-2383)
- * avoid including inferred types in CF update (CASSANDRA-2809)
- * fix JMX bulkload call (CASSANDRA-2908)
- * fix updating KS with durable_writes=false (CASSANDRA-2907)
- * add simplified facade to SSTableWriter for bulk loading use
- (CASSANDRA-2911)
- * fix re-using index CF sstable names after drop/recreate (CASSANDRA-2872)
- * prepend CF to default index names (CASSANDRA-2903)
- * fix hint replay (CASSANDRA-2928)
- * Properly synchronize repair's merkle tree computation (CASSANDRA-2816)
-
-
-0.8.1
- * CQL:
- - support for insert, delete in BATCH (CASSANDRA-2537)
- - support for IN to SELECT, UPDATE (CASSANDRA-2553)
- - timestamp support for INSERT, UPDATE, and BATCH (CASSANDRA-2555)
- - TTL support (CASSANDRA-2476)
- - counter support (CASSANDRA-2473)
- - ALTER COLUMNFAMILY (CASSANDRA-1709)
- - DROP INDEX (CASSANDRA-2617)
- - add SCHEMA/TABLE as aliases for KS/CF (CASSANDRA-2743)
- - server handles wait-for-schema-agreement (CASSANDRA-2756)
- - key alias support (CASSANDRA-2480)
- * add support for comparator parameters and a generic ReverseType
- (CASSANDRA-2355)
- * add CompositeType and DynamicCompositeType (CASSANDRA-2231)
- * optimize batches containing multiple updates to the same row
- (CASSANDRA-2583)
- * adjust hinted handoff page size to avoid OOM with large columns
- (CASSANDRA-2652)
- * mark BRAF buffer invalid post-flush so we don't re-flush partial
- buffers again, especially on CL writes (CASSANDRA-2660)
- * add DROP INDEX support to CLI (CASSANDRA-2616)
- * don't perform HH to client-mode [storageproxy] nodes (CASSANDRA-2668)
- * Improve forceDeserialize/getCompactedRow encapsulation (CASSANDRA-2659)
- * Don't write CounterUpdateColumn to disk in tests (CASSANDRA-2650)
- * Add sstable bulk loading utility (CASSANDRA-1278)
- * avoid replaying hints to dropped columnfamilies (CASSANDRA-2685)
- * add placeholders for missing rows in range query pseudo-RR (CASSANDRA-2680)
- * remove no-op HHOM.renameHints (CASSANDRA-2693)
- * clone super columns to avoid modifying them during flush (CASSANDRA-2675)
- * allow writes to bypass the commitlog for certain keyspaces (CASSANDRA-2683)
- * avoid NPE when bypassing commitlog during memtable flush (CASSANDRA-2781)
- * Added support for making bootstrap retry if nodes flap (CASSANDRA-2644)
- * Added statusthrift to nodetool to report if thrift server is running (CASSANDRA-2722)
- * Fixed rows being cached if they do not exist (CASSANDRA-2723)
- * Support passing tableName and cfName to RowCacheProviders (CASSANDRA-2702)
- * close scrub file handles (CASSANDRA-2669)
- * throttle migration replay (CASSANDRA-2714)
- * optimize column serializer creation (CASSANDRA-2716)
- * Added support for making bootstrap retry if nodes flap (CASSANDRA-2644)
- * Added statusthrift to nodetool to report if thrift server is running
- (CASSANDRA-2722)
- * Fixed rows being cached if they do not exist (CASSANDRA-2723)
- * fix truncate/compaction race (CASSANDRA-2673)
- * workaround large resultsets causing large allocation retention
- by nio sockets (CASSANDRA-2654)
- * fix nodetool ring use with Ec2Snitch (CASSANDRA-2733)
- * fix inconsistency window during bootstrap (CASSANDRA-833)
- * fix removing columns and subcolumns that are supressed by a row or
- supercolumn tombstone during replica resolution (CASSANDRA-2590)
- * support sstable2json against snapshot sstables (CASSANDRA-2386)
- * remove active-pull schema requests (CASSANDRA-2715)
- * avoid marking entire list of sstables as actively being compacted
- in multithreaded compaction (CASSANDRA-2765)
- * seek back after deserializing a row to update cache with (CASSANDRA-2752)
- * avoid skipping rows in scrub for counter column family (CASSANDRA-2759)
- * fix ConcurrentModificationException in repair when dealing with 0.7 node
- (CASSANDRA-2767)
- * use threadsafe collections for StreamInSession (CASSANDRA-2766)
- * avoid infinite loop when creating merkle tree (CASSANDRA-2758)
- * avoids unmarking compacting sstable prematurely in cleanup (CASSANDRA-2769)
- * fix NPE when the commit log is bypassed (CASSANDRA-2718)
- * don't throw an exception in SS.isRPCServerRunning (CASSANDRA-2721)
- * make stress.jar executable (CASSANDRA-2744)
- * add daemon mode to java stress (CASSANDRA-2267)
- * expose the DC and rack of a node through JMX and nodetool ring (CASSANDRA-2531)
- * fix cache mbean getSize (CASSANDRA-2781)
- * Add Date, Float, Double, and Boolean types (CASSANDRA-2530)
- * Add startup flag to renew counter node id (CASSANDRA-2788)
- * add jamm agent to cassandra.bat (CASSANDRA-2787)
- * fix repair hanging if a neighbor has nothing to send (CASSANDRA-2797)
- * purge tombstone even if row is in only one sstable (CASSANDRA-2801)
- * Fix wrong purge of deleted cf during compaction (CASSANDRA-2786)
- * fix race that could result in Hadoop writer failing to throw an
- exception encountered after close() (CASSANDRA-2755)
- * fix scan wrongly throwing assertion error (CASSANDRA-2653)
- * Always use even distribution for merkle tree with RandomPartitionner
- (CASSANDRA-2841)
- * fix describeOwnership for OPP (CASSANDRA-2800)
- * ensure that string tokens do not contain commas (CASSANDRA-2762)
-
-
-0.8.0-final
- * fix CQL grammar warning and cqlsh regression from CASSANDRA-2622
- * add ant generate-cql-html target (CASSANDRA-2526)
- * update CQL consistency levels (CASSANDRA-2566)
- * debian packaging fixes (CASSANDRA-2481, 2647)
- * fix UUIDType, IntegerType for direct buffers (CASSANDRA-2682, 2684)
- * switch to native Thrift for Hadoop map/reduce (CASSANDRA-2667)
- * fix StackOverflowError when building from eclipse (CASSANDRA-2687)
- * only provide replication_factor to strategy_options "help" for
- SimpleStrategy, OldNetworkTopologyStrategy (CASSANDRA-2678, 2713)
- * fix exception adding validators to non-string columns (CASSANDRA-2696)
- * avoid instantiating DatabaseDescriptor in JDBC (CASSANDRA-2694)
- * fix potential stack overflow during compaction (CASSANDRA-2626)
- * clone super columns to avoid modifying them during flush (CASSANDRA-2675)
- * reset underlying iterator in EchoedRow constructor (CASSANDRA-2653)
-
-
-0.8.0-rc1
- * faster flushes and compaction from fixing excessively pessimistic
- rebuffering in BRAF (CASSANDRA-2581)
- * fix returning null column values in the python cql driver (CASSANDRA-2593)
- * fix merkle tree splitting exiting early (CASSANDRA-2605)
- * snapshot_before_compaction directory name fix (CASSANDRA-2598)
- * Disable compaction throttling during bootstrap (CASSANDRA-2612)
- * fix CQL treatment of > and < operators in range slices (CASSANDRA-2592)
- * fix potential double-application of counter updates on commitlog replay
- by moving replay position from header to sstable metadata (CASSANDRA-2419)
- * JDBC CQL driver exposes getColumn for access to timestamp
- * JDBC ResultSetMetadata properties added to AbstractType
- * r/m clustertool (CASSANDRA-2607)
- * add support for presenting row key as a column in CQL result sets
- (CASSANDRA-2622)
- * Don't allow {LOCAL|EACH}_QUORUM unless strategy is NTS (CASSANDRA-2627)
- * validate keyspace strategy_options during CQL create (CASSANDRA-2624)
- * fix empty Result with secondary index when limit=1 (CASSANDRA-2628)
- * Fix regression where bootstrapping a node with no schema fails
- (CASSANDRA-2625)
- * Allow removing LocationInfo sstables (CASSANDRA-2632)
- * avoid attempting to replay mutations from dropped keyspaces (CASSANDRA-2631)
- * avoid using cached position of a key when GT is requested (CASSANDRA-2633)
- * fix counting bloom filter true positives (CASSANDRA-2637)
- * initialize local ep state prior to gossip startup if needed (CASSANDRA-2638)
- * fix counter increment lost after restart (CASSANDRA-2642)
- * add quote-escaping via backslash to CLI (CASSANDRA-2623)
- * fix pig example script (CASSANDRA-2487)
- * fix dynamic snitch race in adding latencies (CASSANDRA-2618)
- * Start/stop cassandra after more important services such as mdadm in
- debian packaging (CASSANDRA-2481)
-
-
-0.8.0-beta2
- * fix NPE compacting index CFs (CASSANDRA-2528)
- * Remove checking all column families on startup for compaction candidates
- (CASSANDRA-2444)
- * validate CQL create keyspace options (CASSANDRA-2525)
- * fix nodetool setcompactionthroughput (CASSANDRA-2550)
- * move gossip heartbeat back to its own thread (CASSANDRA-2554)
- * validate cql TRUNCATE columnfamily before truncating (CASSANDRA-2570)
- * fix batch_mutate for mixed standard-counter mutations (CASSANDRA-2457)
- * disallow making schema changes to system keyspace (CASSANDRA-2563)
- * fix sending mutation messages multiple times (CASSANDRA-2557)
- * fix incorrect use of NBHM.size in ReadCallback that could cause
- reads to time out even when responses were received (CASSAMDRA-2552)
- * trigger read repair correctly for LOCAL_QUORUM reads (CASSANDRA-2556)
- * Allow configuring the number of compaction thread (CASSANDRA-2558)
- * forceUserDefinedCompaction will attempt to compact what it is given
- even if the pessimistic estimate is that there is not enough disk space;
- automatic compactions will only compact 2 or more sstables (CASSANDRA-2575)
- * refuse to apply migrations with older timestamps than the current
- schema (CASSANDRA-2536)
- * remove unframed Thrift transport option
- * include indexes in snapshots (CASSANDRA-2596)
- * improve ignoring of obsolete mutations in index maintenance (CASSANDRA-2401)
- * recognize attempt to drop just the index while leaving the column
- definition alone (CASSANDRA-2619)
-
-
-0.8.0-beta1
- * remove Avro RPC support (CASSANDRA-926)
- * support for columns that act as incr/decr counters
- (CASSANDRA-1072, 1937, 1944, 1936, 2101, 2093, 2288, 2105, 2384, 2236, 2342,
- 2454)
- * CQL (CASSANDRA-1703, 1704, 1705, 1706, 1707, 1708, 1710, 1711, 1940,
- 2124, 2302, 2277, 2493)
- * avoid double RowMutation serialization on write path (CASSANDRA-1800)
- * make NetworkTopologyStrategy the default (CASSANDRA-1960)
- * configurable internode encryption (CASSANDRA-1567, 2152)
- * human readable column names in sstable2json output (CASSANDRA-1933)
- * change default JMX port to 7199 (CASSANDRA-2027)
- * backwards compatible internal messaging (CASSANDRA-1015)
- * atomic switch of memtables and sstables (CASSANDRA-2284)
- * add pluggable SeedProvider (CASSANDRA-1669)
- * Fix clustertool to not throw exception when calling get_endpoints (CASSANDRA-2437)
- * upgrade to thrift 0.6 (CASSANDRA-2412)
- * repair works on a token range instead of full ring (CASSANDRA-2324)
- * purge tombstones from row cache (CASSANDRA-2305)
- * push replication_factor into strategy_options (CASSANDRA-1263)
- * give snapshots the same name on each node (CASSANDRA-1791)
- * remove "nodetool loadbalance" (CASSANDRA-2448)
- * multithreaded compaction (CASSANDRA-2191)
- * compaction throttling (CASSANDRA-2156)
- * add key type information and alias (CASSANDRA-2311, 2396)
- * cli no longer divides read_repair_chance by 100 (CASSANDRA-2458)
- * made CompactionInfo.getTaskType return an enum (CASSANDRA-2482)
- * add a server-wide cap on measured memtable memory usage and aggressively
- flush to keep under that threshold (CASSANDRA-2006)
- * add unified UUIDType (CASSANDRA-2233)
- * add off-heap row cache support (CASSANDRA-1969)
-
-
-0.7.5
- * improvements/fixes to PIG driver (CASSANDRA-1618, CASSANDRA-2387,
- CASSANDRA-2465, CASSANDRA-2484)
- * validate index names (CASSANDRA-1761)
- * reduce contention on Table.flusherLock (CASSANDRA-1954)
- * try harder to detect failures during streaming, cleaning up temporary
- files more reliably (CASSANDRA-2088)
- * shut down server for OOM on a Thrift thread (CASSANDRA-2269)
- * fix tombstone handling in repair and sstable2json (CASSANDRA-2279)
- * preserve version when streaming data from old sstables (CASSANDRA-2283)
- * don't start repair if a neighboring node is marked as dead (CASSANDRA-2290)
- * purge tombstones from row cache (CASSANDRA-2305)
- * Avoid seeking when sstable2json exports the entire file (CASSANDRA-2318)
- * clear Built flag in system table when dropping an index (CASSANDRA-2320)
- * don't allow arbitrary argument for stress.java (CASSANDRA-2323)
- * validate values for index predicates in get_indexed_slice (CASSANDRA-2328)
- * queue secondary indexes for flush before the parent (CASSANDRA-2330)
- * allow job configuration to set the CL used in Hadoop jobs (CASSANDRA-2331)
- * add memtable_flush_queue_size defaulting to 4 (CASSANDRA-2333)
- * Allow overriding of initial_token, storage_port and rpc_port from system
- properties (CASSANDRA-2343)
- * fix comparator used for non-indexed secondary expressions in index scan
- (CASSANDRA-2347)
- * ensure size calculation and write phase of large-row compaction use
- the same threshold for TTL expiration (CASSANDRA-2349)
- * fix race when iterating CFs during add/drop (CASSANDRA-2350)
- * add ConsistencyLevel command to CLI (CASSANDRA-2354)
- * allow negative numbers in the cli (CASSANDRA-2358)
- * hard code serialVersionUID for tokens class (CASSANDRA-2361)
- * fix potential infinite loop in ByteBufferUtil.inputStream (CASSANDRA-2365)
- * fix encoding bugs in HintedHandoffManager, SystemTable when default
- charset is not UTF8 (CASSANDRA-2367)
- * avoids having removed node reappearing in Gossip (CASSANDRA-2371)
- * fix incorrect truncation of long to int when reading columns via block
- index (CASSANDRA-2376)
- * fix NPE during stream session (CASSANDRA-2377)
- * fix race condition that could leave orphaned data files when dropping CF or
- KS (CASSANDRA-2381)
- * fsync statistics component on write (CASSANDRA-2382)
- * fix duplicate results from CFS.scan (CASSANDRA-2406)
- * add IntegerType to CLI help (CASSANDRA-2414)
- * avoid caching token-only decoratedkeys (CASSANDRA-2416)
- * convert mmap assertion to if/throw so scrub can catch it (CASSANDRA-2417)
- * don't overwrite gc log (CASSANDR-2418)
- * invalidate row cache for streamed row to avoid inconsitencies
- (CASSANDRA-2420)
- * avoid copies in range/index scans (CASSANDRA-2425)
- * make sure we don't wipe data during cleanup if the node has not join
- the ring (CASSANDRA-2428)
- * Try harder to close files after compaction (CASSANDRA-2431)
- * re-set bootstrapped flag after move finishes (CASSANDRA-2435)
- * display validation_class in CLI 'describe keyspace' (CASSANDRA-2442)
- * make cleanup compactions cleanup the row cache (CASSANDRA-2451)
- * add column fields validation to scrub (CASSANDRA-2460)
- * use 64KB flush buffer instead of in_memory_compaction_limit (CASSANDRA-2463)
- * fix backslash substitutions in CLI (CASSANDRA-2492)
- * disable cache saving for system CFS (CASSANDRA-2502)
- * fixes for verifying destination availability under hinted conditions
- so UE can be thrown intead of timing out (CASSANDRA-2514)
- * fix update of validation class in column metadata (CASSANDRA-2512)
- * support LOCAL_QUORUM, EACH_QUORUM CLs outside of NTS (CASSANDRA-2516)
- * preserve version when streaming data from old sstables (CASSANDRA-2283)
- * fix backslash substitutions in CLI (CASSANDRA-2492)
- * count a row deletion as one operation towards memtable threshold
- (CASSANDRA-2519)
- * support LOCAL_QUORUM, EACH_QUORUM CLs outside of NTS (CASSANDRA-2516)
-
-
-0.7.4
- * add nodetool join command (CASSANDRA-2160)
- * fix secondary indexes on pre-existing or streamed data (CASSANDRA-2244)
- * initialize endpoint in gossiper earlier (CASSANDRA-2228)
- * add ability to write to Cassandra from Pig (CASSANDRA-1828)
- * add rpc_[min|max]_threads (CASSANDRA-2176)
- * add CL.TWO, CL.THREE (CASSANDRA-2013)
- * avoid exporting an un-requested row in sstable2json, when exporting
- a key that does not exist (CASSANDRA-2168)
- * add incremental_backups option (CASSANDRA-1872)
- * add configurable row limit to Pig loadfunc (CASSANDRA-2276)
- * validate column values in batches as well as single-Column inserts
- (CASSANDRA-2259)
- * move sample schema from cassandra.yaml to schema-sample.txt,
- a cli scripts (CASSANDRA-2007)
- * avoid writing empty rows when scrubbing tombstoned rows (CASSANDRA-2296)
- * fix assertion error in range and index scans for CL < ALL
- (CASSANDRA-2282)
- * fix commitlog replay when flush position refers to data that didn't
- get synced before server died (CASSANDRA-2285)
- * fix fd leak in sstable2json with non-mmap'd i/o (CASSANDRA-2304)
- * reduce memory use during streaming of multiple sstables (CASSANDRA-2301)
- * purge tombstoned rows from cache after GCGraceSeconds (CASSANDRA-2305)
- * allow zero replicas in a NTS datacenter (CASSANDRA-1924)
- * make range queries respect snitch for local replicas (CASSANDRA-2286)
- * fix HH delivery when column index is larger than 2GB (CASSANDRA-2297)
- * make 2ary indexes use parent CF flush thresholds during initial build
- (CASSANDRA-2294)
- * update memtable_throughput to be a long (CASSANDRA-2158)
-
-
-0.7.3
- * Keep endpoint state until aVeryLongTime (CASSANDRA-2115)
- * lower-latency read repair (CASSANDRA-2069)
- * add hinted_handoff_throttle_delay_in_ms option (CASSANDRA-2161)
- * fixes for cache save/load (CASSANDRA-2172, -2174)
- * Handle whole-row deletions in CFOutputFormat (CASSANDRA-2014)
- * Make memtable_flush_writers flush in parallel (CASSANDRA-2178)
- * Add compaction_preheat_key_cache option (CASSANDRA-2175)
- * refactor stress.py to have only one copy of the format string
- used for creating row keys (CASSANDRA-2108)
- * validate index names for \w+ (CASSANDRA-2196)
- * Fix Cassandra cli to respect timeout if schema does not settle
- (CASSANDRA-2187)
- * fix for compaction and cleanup writing old-format data into new-version
- sstable (CASSANDRA-2211, -2216)
- * add nodetool scrub (CASSANDRA-2217, -2240)
- * fix sstable2json large-row pagination (CASSANDRA-2188)
- * fix EOFing on requests for the last bytes in a file (CASSANDRA-2213)
- * fix BufferedRandomAccessFile bugs (CASSANDRA-2218, -2241)
- * check for memtable flush_after_mins exceeded every 10s (CASSANDRA-2183)
- * fix cache saving on Windows (CASSANDRA-2207)
- * add validateSchemaAgreement call + synchronization to schema
- modification operations (CASSANDRA-2222)
- * fix for reversed slice queries on large rows (CASSANDRA-2212)
- * fat clients were writing local data (CASSANDRA-2223)
- * set DEFAULT_MEMTABLE_LIFETIME_IN_MINS to 24h
- * improve detection and cleanup of partially-written sstables
- (CASSANDRA-2206)
- * fix supercolumn de/serialization when subcolumn comparator is different
- from supercolumn's (CASSANDRA-2104)
- * fix starting up on Windows when CASSANDRA_HOME contains whitespace
- (CASSANDRA-2237)
- * add [get|set][row|key]cacheSavePeriod to JMX (CASSANDRA-2100)
- * fix Hadoop ColumnFamilyOutputFormat dropping of mutations
- when batch fills up (CASSANDRA-2255)
- * move file deletions off of scheduledtasks executor (CASSANDRA-2253)
-
-
-0.7.2
- * copy DecoratedKey.key when inserting into caches to avoid retaining
- a reference to the underlying buffer (CASSANDRA-2102)
- * format subcolumn names with subcomparator (CASSANDRA-2136)
- * fix column bloom filter deserialization (CASSANDRA-2165)
-
-
-0.7.1
- * refactor MessageDigest creation code. (CASSANDRA-2107)
- * buffer network stack to avoid inefficient small TCP messages while avoiding
- the nagle/delayed ack problem (CASSANDRA-1896)
- * check log4j configuration for changes every 10s (CASSANDRA-1525, 1907)
- * more-efficient cross-DC replication (CASSANDRA-1530, -2051, -2138)
- * avoid polluting page cache with commitlog or sstable writes
- and seq scan operations (CASSANDRA-1470)
- * add RMI authentication options to nodetool (CASSANDRA-1921)
- * make snitches configurable at runtime (CASSANDRA-1374)
- * retry hadoop split requests on connection failure (CASSANDRA-1927)
- * implement describeOwnership for BOP, COPP (CASSANDRA-1928)
- * make read repair behave as expected for ConsistencyLevel > ONE
- (CASSANDRA-982, 2038)
- * distributed test harness (CASSANDRA-1859, 1964)
- * reduce flush lock contention (CASSANDRA-1930)
- * optimize supercolumn deserialization (CASSANDRA-1891)
- * fix CFMetaData.apply to only compare objects of the same class
- (CASSANDRA-1962)
- * allow specifying specific SSTables to compact from JMX (CASSANDRA-1963)
- * fix race condition in MessagingService.targets (CASSANDRA-1959, 2094, 2081)
- * refuse to open sstables from a future version (CASSANDRA-1935)
- * zero-copy reads (CASSANDRA-1714)
- * fix copy bounds for word Text in wordcount demo (CASSANDRA-1993)
- * fixes for contrib/javautils (CASSANDRA-1979)
- * check more frequently for memtable expiration (CASSANDRA-2000)
- * fix writing SSTable column count statistics (CASSANDRA-1976)
- * fix streaming of multiple CFs during bootstrap (CASSANDRA-1992)
- * explicitly set JVM GC new generation size with -Xmn (CASSANDRA-1968)
- * add short options for CLI flags (CASSANDRA-1565)
- * make keyspace argument to "describe keyspace" in CLI optional
- when authenticated to keyspace already (CASSANDRA-2029)
- * added option to specify -Dcassandra.join_ring=false on startup
- to allow "warm spare" nodes or performing JMX maintenance before
- joining the ring (CASSANDRA-526)
- * log migrations at INFO (CASSANDRA-2028)
- * add CLI verbose option in file mode (CASSANDRA-2030)
- * add single-line "--" comments to CLI (CASSANDRA-2032)
- * message serialization tests (CASSANDRA-1923)
- * switch from ivy to maven-ant-tasks (CASSANDRA-2017)
- * CLI attempts to block for new schema to propagate (CASSANDRA-2044)
- * fix potential overflow in nodetool cfstats (CASSANDRA-2057)
- * add JVM shutdownhook to sync commitlog (CASSANDRA-1919)
- * allow nodes to be up without being part of normal traffic (CASSANDRA-1951)
- * fix CLI "show keyspaces" with null options on NTS (CASSANDRA-2049)
- * fix possible ByteBuffer race conditions (CASSANDRA-2066)
- * reduce garbage generated by MessagingService to prevent load spikes
- (CASSANDRA-2058)
- * fix math in RandomPartitioner.describeOwnership (CASSANDRA-2071)
- * fix deletion of sstable non-data components (CASSANDRA-2059)
- * avoid blocking gossip while deleting handoff hints (CASSANDRA-2073)
- * ignore messages from newer versions, keep track of nodes in gossip
- regardless of version (CASSANDRA-1970)
- * cache writing moved to CompactionManager to reduce i/o contention and
- updated to use non-cache-polluting writes (CASSANDRA-2053)
- * page through large rows when exporting to JSON (CASSANDRA-2041)
- * add flush_largest_memtables_at and reduce_cache_sizes_at options
- (CASSANDRA-2142)
- * add cli 'describe cluster' command (CASSANDRA-2127)
- * add cli support for setting username/password at 'connect' command
- (CASSANDRA-2111)
- * add -D option to Stress.java to allow reading hosts from a file
- (CASSANDRA-2149)
- * bound hints CF throughput between 32M and 256M (CASSANDRA-2148)
- * continue starting when invalid saved cache entries are encountered
- (CASSANDRA-2076)
- * add max_hint_window_in_ms option (CASSANDRA-1459)
-
-
-0.7.0-final
- * fix offsets to ByteBuffer.get (CASSANDRA-1939)
-
-
-0.7.0-rc4
- * fix cli crash after backgrounding (CASSANDRA-1875)
- * count timeouts in storageproxy latencies, and include latency
- histograms in StorageProxyMBean (CASSANDRA-1893)
- * fix CLI get recognition of supercolumns (CASSANDRA-1899)
- * enable keepalive on intra-cluster sockets (CASSANDRA-1766)
- * count timeouts towards dynamicsnitch latencies (CASSANDRA-1905)
- * Expose index-building status in JMX + cli schema description
- (CASSANDRA-1871)
- * allow [LOCAL|EACH]_QUORUM to be used with non-NetworkTopology
- replication Strategies
- * increased amount of index locks for faster commitlog replay
- * collect secondary index tombstones immediately (CASSANDRA-1914)
- * revert commitlog changes from #1780 (CASSANDRA-1917)
- * change RandomPartitioner min token to -1 to avoid collision w/
- tokens on actual nodes (CASSANDRA-1901)
- * examine the right nibble when validating TimeUUID (CASSANDRA-1910)
- * include secondary indexes in cleanup (CASSANDRA-1916)
- * CFS.scrubDataDirectories should also cleanup invalid secondary indexes
- (CASSANDRA-1904)
- * ability to disable/enable gossip on nodes to force them down
- (CASSANDRA-1108)
-
-
-0.7.0-rc3
- * expose getNaturalEndpoints in StorageServiceMBean taking byte[]
- key; RMI cannot serialize ByteBuffer (CASSANDRA-1833)
- * infer org.apache.cassandra.locator for replication strategy classes
- when not otherwise specified
- * validation that generates less garbage (CASSANDRA-1814)
- * add TTL support to CLI (CASSANDRA-1838)
- * cli defaults to bytestype for subcomparator when creating
- column families (CASSANDRA-1835)
- * unregister index MBeans when index is dropped (CASSANDRA-1843)
- * make ByteBufferUtil.clone thread-safe (CASSANDRA-1847)
- * change exception for read requests during bootstrap from
- InvalidRequest to Unavailable (CASSANDRA-1862)
- * respect row-level tombstones post-flush in range scans
- (CASSANDRA-1837)
- * ReadResponseResolver check digests against each other (CASSANDRA-1830)
- * return InvalidRequest when remove of subcolumn without supercolumn
- is requested (CASSANDRA-1866)
- * flush before repair (CASSANDRA-1748)
- * SSTableExport validates key order (CASSANDRA-1884)
- * large row support for SSTableExport (CASSANDRA-1867)
- * Re-cache hot keys post-compaction without hitting disk (CASSANDRA-1878)
- * manage read repair in coordinator instead of data source, to
- provide latency information to dynamic snitch (CASSANDRA-1873)
-
-
-0.7.0-rc2
- * fix live-column-count of slice ranges including tombstoned supercolumn
- with live subcolumn (CASSANDRA-1591)
- * rename o.a.c.internal.AntientropyStage -> AntiEntropyStage,
- o.a.c.request.Request_responseStage -> RequestResponseStage,
- o.a.c.internal.Internal_responseStage -> InternalResponseStage
- * add AbstractType.fromString (CASSANDRA-1767)
- * require index_type to be present when specifying index_name
- on ColumnDef (CASSANDRA-1759)
- * fix add/remove index bugs in CFMetadata (CASSANDRA-1768)
- * rebuild Strategy during system_update_keyspace (CASSANDRA-1762)
- * cli updates prompt to ... in continuation lines (CASSANDRA-1770)
- * support multiple Mutations per key in hadoop ColumnFamilyOutputFormat
- (CASSANDRA-1774)
- * improvements to Debian init script (CASSANDRA-1772)
- * use local classloader to check for version.properties (CASSANDRA-1778)
- * Validate that column names in column_metadata are valid for the
- defined comparator, and decode properly in cli (CASSANDRA-1773)
- * use cross-platform newlines in cli (CASSANDRA-1786)
- * add ExpiringColumn support to sstable import/export (CASSANDRA-1754)
- * add flush for each append to periodic commitlog mode; added
- periodic_without_flush option to disable this (CASSANDRA-1780)
- * close file handle used for post-flush truncate (CASSANDRA-1790)
- * various code cleanup (CASSANDRA-1793, -1794, -1795)
- * fix range queries against wrapped range (CASSANDRA-1781)
- * fix consistencylevel calculations for NetworkTopologyStrategy
- (CASSANDRA-1804)
- * cli support index type enum names (CASSANDRA-1810)
- * improved validation of column_metadata (CASSANDRA-1813)
- * reads at ConsistencyLevel > 1 throw UnavailableException
- immediately if insufficient live nodes exist (CASSANDRA-1803)
- * copy bytebuffers for local writes to avoid retaining the entire
- Thrift frame (CASSANDRA-1801)
- * fix NPE adding index to column w/o prior metadata (CASSANDRA-1764)
- * reduce fat client timeout (CASSANDRA-1730)
- * fix botched merge of CASSANDRA-1316
-
-
-0.7.0-rc1
- * fix compaction and flush races with schema updates (CASSANDRA-1715)
- * add clustertool, config-converter, sstablekeys, and schematool
- Windows .bat files (CASSANDRA-1723)
- * reject range queries received during bootstrap (CASSANDRA-1739)
- * fix wrapping-range queries on non-minimum token (CASSANDRA-1700)
- * add nodetool cfhistogram (CASSANDRA-1698)
- * limit repaired ranges to what the nodes have in common (CASSANDRA-1674)
- * index scan treats missing columns as not matching secondary
- expressions (CASSANDRA-1745)
- * Fix misuse of DataOutputBuffer.getData in AntiEntropyService
- (CASSANDRA-1729)
- * detect and warn when obsolete version of JNA is present (CASSANDRA-1760)
- * reduce fat client timeout (CASSANDRA-1730)
- * cleanup smallest CFs first to increase free temp space for larger ones
- (CASSANDRA-1811)
- * Update windows .bat files to work outside of main Cassandra
- directory (CASSANDRA-1713)
- * fix read repair regression from 0.6.7 (CASSANDRA-1727)
- * more-efficient read repair (CASSANDRA-1719)
- * fix hinted handoff replay (CASSANDRA-1656)
- * log type of dropped messages (CASSANDRA-1677)
- * upgrade to SLF4J 1.6.1
- * fix ByteBuffer bug in ExpiringColumn.updateDigest (CASSANDRA-1679)
- * fix IntegerType.getString (CASSANDRA-1681)
- * make -Djava.net.preferIPv4Stack=true the default (CASSANDRA-628)
- * add INTERNAL_RESPONSE verb to differentiate from responses related
- to client requests (CASSANDRA-1685)
- * log tpstats when dropping messages (CASSANDRA-1660)
- * include unreachable nodes in describeSchemaVersions (CASSANDRA-1678)
- * Avoid dropping messages off the client request path (CASSANDRA-1676)
- * fix jna errno reporting (CASSANDRA-1694)
- * add friendlier error for UnknownHostException on startup (CASSANDRA-1697)
- * include jna dependency in RPM package (CASSANDRA-1690)
- * add --skip-keys option to stress.py (CASSANDRA-1696)
- * improve cli handling of non-string keys and column names
- (CASSANDRA-1701, -1693)
- * r/m extra subcomparator line in cli keyspaces output (CASSANDRA-1712)
- * add read repair chance to cli "show keyspaces"
- * upgrade to ConcurrentLinkedHashMap 1.1 (CASSANDRA-975)
- * fix index scan routing (CASSANDRA-1722)
- * fix tombstoning of supercolumns in range queries (CASSANDRA-1734)
- * clear endpoint cache after updating keyspace metadata (CASSANDRA-1741)
- * fix wrapping-range queries on non-minimum token (CASSANDRA-1700)
- * truncate includes secondary indexes (CASSANDRA-1747)
- * retain reference to PendingFile sstables (CASSANDRA-1749)
- * fix sstableimport regression (CASSANDRA-1753)
- * fix for bootstrap when no non-system tables are defined (CASSANDRA-1732)
- * handle replica unavailability in index scan (CASSANDRA-1755)
- * fix service initialization order deadlock (CASSANDRA-1756)
- * multi-line cli commands (CASSANDRA-1742)
- * fix race between snapshot and compaction (CASSANDRA-1736)
- * add listEndpointsPendingHints, deleteHintsForEndpoint JMX methods
- (CASSANDRA-1551)
-
-
-0.7.0-beta3
- * add strategy options to describe_keyspace output (CASSANDRA-1560)
- * log warning when using randomly generated token (CASSANDRA-1552)
- * re-organize JMX into .db, .net, .internal, .request (CASSANDRA-1217)
- * allow nodes to change IPs between restarts (CASSANDRA-1518)
- * remember ring state between restarts by default (CASSANDRA-1518)
- * flush index built flag so we can read it before log replay (CASSANDRA-1541)
- * lock row cache updates to prevent race condition (CASSANDRA-1293)
- * remove assertion causing rare (and harmless) error messages in
- commitlog (CASSANDRA-1330)
- * fix moving nodes with no keyspaces defined (CASSANDRA-1574)
- * fix unbootstrap when no data is present in a transfer range (CASSANDRA-1573)
- * take advantage of AVRO-495 to simplify our avro IDL (CASSANDRA-1436)
- * extend authorization hierarchy to column family (CASSANDRA-1554)
- * deletion support in secondary indexes (CASSANDRA-1571)
- * meaningful error message for invalid replication strategy class
- (CASSANDRA-1566)
- * allow keyspace creation with RF > N (CASSANDRA-1428)
- * improve cli error handling (CASSANDRA-1580)
- * add cache save/load ability (CASSANDRA-1417, 1606, 1647)
- * add StorageService.getDrainProgress (CASSANDRA-1588)
- * Disallow bootstrap to an in-use token (CASSANDRA-1561)
- * Allow dynamic secondary index creation and destruction (CASSANDRA-1532)
- * log auto-guessed memtable thresholds (CASSANDRA-1595)
- * add ColumnDef support to cli (CASSANDRA-1583)
- * reduce index sample time by 75% (CASSANDRA-1572)
- * add cli support for column, strategy metadata (CASSANDRA-1578, 1612)
- * add cli support for schema modification (CASSANDRA-1584)
- * delete temp files on failed compactions (CASSANDRA-1596)
- * avoid blocking for dead nodes during removetoken (CASSANDRA-1605)
- * remove ConsistencyLevel.ZERO (CASSANDRA-1607)
- * expose in-progress compaction type in jmx (CASSANDRA-1586)
- * removed IClock & related classes from internals (CASSANDRA-1502)
- * fix removing tokens from SystemTable on decommission and removetoken
- (CASSANDRA-1609)
- * include CF metadata in cli 'show keyspaces' (CASSANDRA-1613)
- * switch from Properties to HashMap in PropertyFileSnitch to
- avoid synchronization bottleneck (CASSANDRA-1481)
- * PropertyFileSnitch configuration file renamed to
- cassandra-topology.properties
- * add cli support for get_range_slices (CASSANDRA-1088, CASSANDRA-1619)
- * Make memtable flush thresholds per-CF instead of global
- (CASSANDRA-1007, 1637)
- * add cli support for binary data without CfDef hints (CASSANDRA-1603)
- * fix building SSTable statistics post-stream (CASSANDRA-1620)
- * fix potential infinite loop in 2ary index queries (CASSANDRA-1623)
- * allow creating NTS keyspaces with no replicas configured (CASSANDRA-1626)
- * add jmx histogram of sstables accessed per read (CASSANDRA-1624)
- * remove system_rename_column_family and system_rename_keyspace from the
- client API until races can be fixed (CASSANDRA-1630, CASSANDRA-1585)
- * add cli sanity tests (CASSANDRA-1582)
- * update GC settings in cassandra.bat (CASSANDRA-1636)
- * cli support for index queries (CASSANDRA-1635)
- * cli support for updating schema memtable settings (CASSANDRA-1634)
- * cli --file option (CASSANDRA-1616)
- * reduce automatically chosen memtable sizes by 50% (CASSANDRA-1641)
- * move endpoint cache from snitch to strategy (CASSANDRA-1643)
- * fix commitlog recovery deleting the newly-created segment as well as
- the old ones (CASSANDRA-1644)
- * upgrade to Thrift 0.5 (CASSANDRA-1367)
- * renamed CL.DCQUORUM to LOCAL_QUORUM and DCQUORUMSYNC to EACH_QUORUM
- * cli truncate support (CASSANDRA-1653)
- * update GC settings in cassandra.bat (CASSANDRA-1636)
- * avoid logging when a node's ip/token is gossipped back to it (CASSANDRA-1666)
-
-
-0.7-beta2
- * always use UTF-8 for hint keys (CASSANDRA-1439)
- * remove cassandra.yaml dependency from Hadoop and Pig (CASSADRA-1322)
- * expose CfDef metadata in describe_keyspaces (CASSANDRA-1363)
- * restore use of mmap_index_only option (CASSANDRA-1241)
- * dropping a keyspace with no column families generated an error
- (CASSANDRA-1378)
- * rename RackAwareStrategy to OldNetworkTopologyStrategy, RackUnawareStrategy
- to SimpleStrategy, DatacenterShardStrategy to NetworkTopologyStrategy,
- AbstractRackAwareSnitch to AbstractNetworkTopologySnitch (CASSANDRA-1392)
- * merge StorageProxy.mutate, mutateBlocking (CASSANDRA-1396)
- * faster UUIDType, LongType comparisons (CASSANDRA-1386, 1393)
- * fix setting read_repair_chance from CLI addColumnFamily (CASSANDRA-1399)
- * fix updates to indexed columns (CASSANDRA-1373)
- * fix race condition leaving to FileNotFoundException (CASSANDRA-1382)
- * fix sharded lock hash on index write path (CASSANDRA-1402)
- * add support for GT/E, LT/E in subordinate index clauses (CASSANDRA-1401)
- * cfId counter got out of sync when CFs were added (CASSANDRA-1403)
- * less chatty schema updates (CASSANDRA-1389)
- * rename column family mbeans. 'type' will now include either
- 'IndexColumnFamilies' or 'ColumnFamilies' depending on the CFS type.
- (CASSANDRA-1385)
- * disallow invalid keyspace and column family names. This includes name that
- matches a '^\w+' regex. (CASSANDRA-1377)
- * use JNA, if present, to take snapshots (CASSANDRA-1371)
- * truncate hints if starting 0.7 for the first time (CASSANDRA-1414)
- * fix FD leak in single-row slicepredicate queries (CASSANDRA-1416)
- * allow index expressions against columns that are not part of the
- SlicePredicate (CASSANDRA-1410)
- * config-converter properly handles snitches and framed support
- (CASSANDRA-1420)
- * remove keyspace argument from multiget_count (CASSANDRA-1422)
- * allow specifying cassandra.yaml location as (local or remote) URL
- (CASSANDRA-1126)
- * fix using DynamicEndpointSnitch with NetworkTopologyStrategy
- (CASSANDRA-1429)
- * Add CfDef.default_validation_class (CASSANDRA-891)
- * fix EstimatedHistogram.max (CASSANDRA-1413)
- * quorum read optimization (CASSANDRA-1622)
- * handle zero-length (or missing) rows during HH paging (CASSANDRA-1432)
- * include secondary indexes during schema migrations (CASSANDRA-1406)
- * fix commitlog header race during schema change (CASSANDRA-1435)
- * fix ColumnFamilyStoreMBeanIterator to use new type name (CASSANDRA-1433)
- * correct filename generated by xml->yaml converter (CASSANDRA-1419)
- * add CMSInitiatingOccupancyFraction=75 and UseCMSInitiatingOccupancyOnly
- to default JVM options
- * decrease jvm heap for cassandra-cli (CASSANDRA-1446)
- * ability to modify keyspaces and column family definitions on a live cluster
- (CASSANDRA-1285)
- * support for Hadoop Streaming [non-jvm map/reduce via stdin/out]
- (CASSANDRA-1368)
- * Move persistent sstable stats from the system table to an sstable component
- (CASSANDRA-1430)
- * remove failed bootstrap attempt from pending ranges when gossip times
- it out after 1h (CASSANDRA-1463)
- * eager-create tcp connections to other cluster members (CASSANDRA-1465)
- * enumerate stages and derive stage from message type instead of
- transmitting separately (CASSANDRA-1465)
- * apply reversed flag during collation from different data sources
- (CASSANDRA-1450)
- * make failure to remove commitlog segment non-fatal (CASSANDRA-1348)
- * correct ordering of drain operations so CL.recover is no longer
- necessary (CASSANDRA-1408)
- * removed keyspace from describe_splits method (CASSANDRA-1425)
- * rename check_schema_agreement to describe_schema_versions
- (CASSANDRA-1478)
- * fix QUORUM calculation for RF > 3 (CASSANDRA-1487)
- * remove tombstones during non-major compactions when bloom filter
- verifies that row does not exist in other sstables (CASSANDRA-1074)
- * nodes that coordinated a loadbalance in the past could not be seen by
- newly added nodes (CASSANDRA-1467)
- * exposed endpoint states (gossip details) via jmx (CASSANDRA-1467)
- * ensure that compacted sstables are not included when new readers are
- instantiated (CASSANDRA-1477)
- * by default, calculate heap size and memtable thresholds at runtime (CASSANDRA-1469)
- * fix races dealing with adding/dropping keyspaces and column families in
- rapid succession (CASSANDRA-1477)
- * clean up of Streaming system (CASSANDRA-1503, 1504, 1506)
- * add options to configure Thrift socket keepalive and buffer sizes (CASSANDRA-1426)
- * make contrib CassandraServiceDataCleaner recursive (CASSANDRA-1509)
- * min, max compaction threshold are configurable and persistent
- per-ColumnFamily (CASSANDRA-1468)
- * fix replaying the last mutation in a commitlog unnecessarily
- (CASSANDRA-1512)
- * invoke getDefaultUncaughtExceptionHandler from DTPE with the original
- exception rather than the ExecutionException wrapper (CASSANDRA-1226)
- * remove Clock from the Thrift (and Avro) API (CASSANDRA-1501)
- * Close intra-node sockets when connection is broken (CASSANDRA-1528)
- * RPM packaging spec file (CASSANDRA-786)
- * weighted request scheduler (CASSANDRA-1485)
- * treat expired columns as deleted (CASSANDRA-1539)
- * make IndexInterval configurable (CASSANDRA-1488)
- * add describe_snitch to Thrift API (CASSANDRA-1490)
- * MD5 authenticator compares plain text submitted password with MD5'd
- saved property, instead of vice versa (CASSANDRA-1447)
- * JMX MessagingService pending and completed counts (CASSANDRA-1533)
- * fix race condition processing repair responses (CASSANDRA-1511)
- * make repair blocking (CASSANDRA-1511)
- * create EndpointSnitchInfo and MBean to expose rack and DC (CASSANDRA-1491)
- * added option to contrib/word_count to output results back to Cassandra
- (CASSANDRA-1342)
- * rewrite Hadoop ColumnFamilyRecordWriter to pool connections, retry to
- multiple Cassandra nodes, and smooth impact on the Cassandra cluster
- by using smaller batch sizes (CASSANDRA-1434)
- * fix setting gc_grace_seconds via CLI (CASSANDRA-1549)
- * support TTL'd index values (CASSANDRA-1536)
- * make removetoken work like decommission (CASSANDRA-1216)
- * make cli comparator-aware and improve quote rules (CASSANDRA-1523,-1524)
- * make nodetool compact and cleanup blocking (CASSANDRA-1449)
- * add memtable, cache information to GCInspector logs (CASSANDRA-1558)
- * enable/disable HintedHandoff via JMX (CASSANDRA-1550)
- * Ignore stray files in the commit log directory (CASSANDRA-1547)
- * Disallow bootstrap to an in-use token (CASSANDRA-1561)
-
-
-0.7-beta1
- * sstable versioning (CASSANDRA-389)
- * switched to slf4j logging (CASSANDRA-625)
- * add (optional) expiration time for column (CASSANDRA-699)
- * access levels for authentication/authorization (CASSANDRA-900)
- * add ReadRepairChance to CF definition (CASSANDRA-930)
- * fix heisenbug in system tests, especially common on OS X (CASSANDRA-944)
- * convert to byte[] keys internally and all public APIs (CASSANDRA-767)
- * ability to alter schema definitions on a live cluster (CASSANDRA-44)
- * renamed configuration file to cassandra.xml, and log4j.properties to
- log4j-server.properties, which must now be loaded from
- the classpath (which is how our scripts in bin/ have always done it)
- (CASSANDRA-971)
- * change get_count to require a SlicePredicate. create multi_get_count
- (CASSANDRA-744)
- * re-organized endpointsnitch implementations and added SimpleSnitch
- (CASSANDRA-994)
- * Added preload_row_cache option (CASSANDRA-946)
- * add CRC to commitlog header (CASSANDRA-999)
- * removed deprecated batch_insert and get_range_slice methods (CASSANDRA-1065)
- * add truncate thrift method (CASSANDRA-531)
- * http mini-interface using mx4j (CASSANDRA-1068)
- * optimize away copy of sliced row on memtable read path (CASSANDRA-1046)
- * replace constant-size 2GB mmaped segments and special casing for index
- entries spanning segment boundaries, with SegmentedFile that computes
- segments that always contain entire entries/rows (CASSANDRA-1117)
- * avoid reading large rows into memory during compaction (CASSANDRA-16)
- * added hadoop OutputFormat (CASSANDRA-1101)
- * efficient Streaming (no more anticompaction) (CASSANDRA-579)
- * split commitlog header into separate file and add size checksum to
- mutations (CASSANDRA-1179)
- * avoid allocating a new byte[] for each mutation on replay (CASSANDRA-1219)
- * revise HH schema to be per-endpoint (CASSANDRA-1142)
- * add joining/leaving status to nodetool ring (CASSANDRA-1115)
- * allow multiple repair sessions per node (CASSANDRA-1190)
- * optimize away MessagingService for local range queries (CASSANDRA-1261)
- * make framed transport the default so malformed requests can't OOM the
- server (CASSANDRA-475)
- * significantly faster reads from row cache (CASSANDRA-1267)
- * take advantage of row cache during range queries (CASSANDRA-1302)
- * make GCGraceSeconds a per-ColumnFamily value (CASSANDRA-1276)
- * keep persistent row size and column count statistics (CASSANDRA-1155)
- * add IntegerType (CASSANDRA-1282)
- * page within a single row during hinted handoff (CASSANDRA-1327)
- * push DatacenterShardStrategy configuration into keyspace definition,
- eliminating datacenter.properties. (CASSANDRA-1066)
- * optimize forward slices starting with '' and single-index-block name
- queries by skipping the column index (CASSANDRA-1338)
- * streaming refactor (CASSANDRA-1189)
- * faster comparison for UUID types (CASSANDRA-1043)
- * secondary index support (CASSANDRA-749 and subtasks)
- * make compaction buckets deterministic (CASSANDRA-1265)
-
-
-0.6.6
- * Allow using DynamicEndpointSnitch with RackAwareStrategy (CASSANDRA-1429)
- * remove the remaining vestiges of the unfinished DatacenterShardStrategy
- (replaced by NetworkTopologyStrategy in 0.7)
-
-
-0.6.5
- * fix key ordering in range query results with RandomPartitioner
- and ConsistencyLevel > ONE (CASSANDRA-1145)
- * fix for range query starting with the wrong token range (CASSANDRA-1042)
- * page within a single row during hinted handoff (CASSANDRA-1327)
- * fix compilation on non-sun JDKs (CASSANDRA-1061)
- * remove String.trim() call on row keys in batch mutations (CASSANDRA-1235)
- * Log summary of dropped messages instead of spamming log (CASSANDRA-1284)
- * add dynamic endpoint snitch (CASSANDRA-981)
- * fix streaming for keyspaces with hyphens in their name (CASSANDRA-1377)
- * fix errors in hard-coded bloom filter optKPerBucket by computing it
- algorithmically (CASSANDRA-1220
- * remove message deserialization stage, and uncap read/write stages
- so slow reads/writes don't block gossip processing (CASSANDRA-1358)
- * add jmx port configuration to Debian package (CASSANDRA-1202)
- * use mlockall via JNA, if present, to prevent Linux from swapping
- out parts of the JVM (CASSANDRA-1214)
-
-
-0.6.4
- * avoid queuing multiple hint deliveries for the same endpoint
- (CASSANDRA-1229)
- * better performance for and stricter checking of UTF8 column names
- (CASSANDRA-1232)
- * extend option to lower compaction priority to hinted handoff
- as well (CASSANDRA-1260)
- * log errors in gossip instead of re-throwing (CASSANDRA-1289)
- * avoid aborting commitlog replay prematurely if a flushed-but-
- not-removed commitlog segment is encountered (CASSANDRA-1297)
- * fix duplicate rows being read during mapreduce (CASSANDRA-1142)
- * failure detection wasn't closing command sockets (CASSANDRA-1221)
- * cassandra-cli.bat works on windows (CASSANDRA-1236)
- * pre-emptively drop requests that cannot be processed within RPCTimeout
- (CASSANDRA-685)
- * add ack to Binary write verb and update CassandraBulkLoader
- to wait for acks for each row (CASSANDRA-1093)
- * added describe_partitioner Thrift method (CASSANDRA-1047)
- * Hadoop jobs no longer require the Cassandra storage-conf.xml
- (CASSANDRA-1280, CASSANDRA-1047)
- * log thread pool stats when GC is excessive (CASSANDRA-1275)
- * remove gossip message size limit (CASSANDRA-1138)
- * parallelize local and remote reads during multiget, and respect snitch
- when determining whether to do local read for CL.ONE (CASSANDRA-1317)
- * fix read repair to use requested consistency level on digest mismatch,
- rather than assuming QUORUM (CASSANDRA-1316)
- * process digest mismatch re-reads in parallel (CASSANDRA-1323)
- * switch hints CF comparator to BytesType (CASSANDRA-1274)
-
-
-0.6.3
- * retry to make streaming connections up to 8 times. (CASSANDRA-1019)
- * reject describe_ring() calls on invalid keyspaces (CASSANDRA-1111)
- * fix cache size calculation for size of 100% (CASSANDRA-1129)
- * fix cache capacity only being recalculated once (CASSANDRA-1129)
- * remove hourly scan of all hints on the off chance that the gossiper
- missed a status change; instead, expose deliverHintsToEndpoint to JMX
- so it can be done manually, if necessary (CASSANDRA-1141)
- * don't reject reads at CL.ALL (CASSANDRA-1152)
- * reject deletions to supercolumns in CFs containing only standard
- columns (CASSANDRA-1139)
- * avoid preserving login information after client disconnects
- (CASSANDRA-1057)
- * prefer sun jdk to openjdk in debian init script (CASSANDRA-1174)
- * detect partioner config changes between restarts and fail fast
- (CASSANDRA-1146)
- * use generation time to resolve node token reassignment disagreements
- (CASSANDRA-1118)
- * restructure the startup ordering of Gossiper and MessageService to avoid
- timing anomalies (CASSANDRA-1160)
- * detect incomplete commit log hearders (CASSANDRA-1119)
- * force anti-entropy service to stream files on the stream stage to avoid
- sending streams out of order (CASSANDRA-1169)
- * remove inactive stream managers after AES streams files (CASSANDRA-1169)
- * allow removing entire row through batch_mutate Deletion (CASSANDRA-1027)
- * add JMX metrics for row-level bloom filter false positives (CASSANDRA-1212)
- * added a redhat init script to contrib (CASSANDRA-1201)
- * use midpoint when bootstrapping a new machine into range with not
- much data yet instead of random token (CASSANDRA-1112)
- * kill server on OOM in executor stage as well as Thrift (CASSANDRA-1226)
- * remove opportunistic repairs, when two machines with overlapping replica
- responsibilities happen to finish major compactions of the same CF near
- the same time. repairs are now fully manual (CASSANDRA-1190)
- * add ability to lower compaction priority (default is no change from 0.6.2)
- (CASSANDRA-1181)
-
-
-0.6.2
- * fix contrib/word_count build. (CASSANDRA-992)
- * split CommitLogExecutorService into BatchCommitLogExecutorService and
- PeriodicCommitLogExecutorService (CASSANDRA-1014)
- * add latency histograms to CFSMBean (CASSANDRA-1024)
- * make resolving timestamp ties deterministic by using value bytes
- as a tiebreaker (CASSANDRA-1039)
- * Add option to turn off Hinted Handoff (CASSANDRA-894)
- * fix windows startup (CASSANDRA-948)
- * make concurrent_reads, concurrent_writes configurable at runtime via JMX
- (CASSANDRA-1060)
- * disable GCInspector on non-Sun JVMs (CASSANDRA-1061)
- * fix tombstone handling in sstable rows with no other data (CASSANDRA-1063)
- * fix size of row in spanned index entries (CASSANDRA-1056)
- * install json2sstable, sstable2json, and sstablekeys to Debian package
- * StreamingService.StreamDestinations wouldn't empty itself after streaming
- finished (CASSANDRA-1076)
- * added Collections.shuffle(splits) before returning the splits in
- ColumnFamilyInputFormat (CASSANDRA-1096)
- * do not recalculate cache capacity post-compaction if it's been manually
- modified (CASSANDRA-1079)
- * better defaults for flush sorter + writer executor queue sizes
- (CASSANDRA-1100)
- * windows scripts for SSTableImport/Export (CASSANDRA-1051)
- * windows script for nodetool (CASSANDRA-1113)
- * expose PhiConvictThreshold (CASSANDRA-1053)
- * make repair of RF==1 a no-op (CASSANDRA-1090)
- * improve default JVM GC options (CASSANDRA-1014)
- * fix SlicePredicate serialization inside Hadoop jobs (CASSANDRA-1049)
- * close Thrift sockets in Hadoop ColumnFamilyRecordReader (CASSANDRA-1081)
-
-
-0.6.1
- * fix NPE in sstable2json when no excluded keys are given (CASSANDRA-934)
- * keep the replica set constant throughout the read repair process
- (CASSANDRA-937)
- * allow querying getAllRanges with empty token list (CASSANDRA-933)
- * fix command line arguments inversion in clustertool (CASSANDRA-942)
- * fix race condition that could trigger a false-positive assertion
- during post-flush discard of old commitlog segments (CASSANDRA-936)
- * fix neighbor calculation for anti-entropy repair (CASSANDRA-924)
- * perform repair even for small entropy differences (CASSANDRA-924)
- * Use hostnames in CFInputFormat to allow Hadoop's naive string-based
- locality comparisons to work (CASSANDRA-955)
- * cache read-only BufferedRandomAccessFile length to avoid
- 3 system calls per invocation (CASSANDRA-950)
- * nodes with IPv6 (and no IPv4) addresses could not join cluster
- (CASSANDRA-969)
- * Retrieve the correct number of undeleted columns, if any, from
- a supercolumn in a row that had been deleted previously (CASSANDRA-920)
- * fix index scans that cross the 2GB mmap boundaries for both mmap
- and standard i/o modes (CASSANDRA-866)
- * expose drain via nodetool (CASSANDRA-978)
-
-
-0.6.0-RC1
- * JMX drain to flush memtables and run through commit log (CASSANDRA-880)
- * Bootstrapping can skip ranges under the right conditions (CASSANDRA-902)
- * fix merging row versions in range_slice for CL > ONE (CASSANDRA-884)
- * default write ConsistencyLeven chaned from ZERO to ONE
- * fix for index entries spanning mmap buffer boundaries (CASSANDRA-857)
- * use lexical comparison if time part of TimeUUIDs are the same
- (CASSANDRA-907)
- * bound read, mutation, and response stages to fix possible OOM
- during log replay (CASSANDRA-885)
- * Use microseconds-since-epoch (UTC) in cli, instead of milliseconds
- * Treat batch_mutate Deletion with null supercolumn as "apply this predicate
- to top level supercolumns" (CASSANDRA-834)
- * Streaming destination nodes do not update their JMX status (CASSANDRA-916)
- * Fix internal RPC timeout calculation (CASSANDRA-911)
- * Added Pig loadfunc to contrib/pig (CASSANDRA-910)
-
-
-0.6.0-beta3
- * fix compaction bucketing bug (CASSANDRA-814)
- * update windows batch file (CASSANDRA-824)
- * deprecate KeysCachedFraction configuration directive in favor
- of KeysCached; move to unified-per-CF key cache (CASSANDRA-801)
- * add invalidateRowCache to ColumnFamilyStoreMBean (CASSANDRA-761)
- * send Handoff hints to natural locations to reduce load on
- remaining nodes in a failure scenario (CASSANDRA-822)
- * Add RowWarningThresholdInMB configuration option to warn before very
- large rows get big enough to threaten node stability, and -x option to
- be able to remove them with sstable2json if the warning is unheeded
- until it's too late (CASSANDRA-843)
- * Add logging of GC activity (CASSANDRA-813)
- * fix ConcurrentModificationException in commitlog discard (CASSANDRA-853)
- * Fix hardcoded row count in Hadoop RecordReader (CASSANDRA-837)
- * Add a jmx status to the streaming service and change several DEBUG
- messages to INFO (CASSANDRA-845)
- * fix classpath in cassandra-cli.bat for Windows (CASSANDRA-858)
- * allow re-specifying host, port to cassandra-cli if invalid ones
- are first tried (CASSANDRA-867)
- * fix race condition handling rpc timeout in the coordinator
- (CASSANDRA-864)
- * Remove CalloutLocation and StagingFileDirectory from storage-conf files
- since those settings are no longer used (CASSANDRA-878)
- * Parse a long from RowWarningThresholdInMB instead of an int (CASSANDRA-882)
- * Remove obsolete ControlPort code from DatabaseDescriptor (CASSANDRA-886)
- * move skipBytes side effect out of assert (CASSANDRA-899)
- * add "double getLoad" to StorageServiceMBean (CASSANDRA-898)
- * track row stats per CF at compaction time (CASSANDRA-870)
- * disallow CommitLogDirectory matching a DataFileDirectory (CASSANDRA-888)
- * default key cache size is 200k entries, changed from 10% (CASSANDRA-863)
- * add -Dcassandra-foreground=yes to cassandra.bat
- * exit if cluster name is changed unexpectedly (CASSANDRA-769)
-
-
-0.6.0-beta1/beta2
- * add batch_mutate thrift command, deprecating batch_insert (CASSANDRA-336)
- * remove get_key_range Thrift API, deprecated in 0.5 (CASSANDRA-710)
- * add optional login() Thrift call for authentication (CASSANDRA-547)
- * support fat clients using gossiper and StorageProxy to perform
- replication in-process [jvm-only] (CASSANDRA-535)
- * support mmapped I/O for reads, on by default on 64bit JVMs
- (CASSANDRA-408, CASSANDRA-669)
- * improve insert concurrency, particularly during Hinted Handoff
- (CASSANDRA-658)
- * faster network code (CASSANDRA-675)
- * stress.py moved to contrib (CASSANDRA-635)
- * row caching [must be explicitly enabled per-CF in config] (CASSANDRA-678)
- * present a useful measure of compaction progress in JMX (CASSANDRA-599)
- * add bin/sstablekeys (CASSNADRA-679)
- * add ConsistencyLevel.ANY (CASSANDRA-687)
- * make removetoken remove nodes from gossip entirely (CASSANDRA-644)
- * add ability to set cache sizes at runtime (CASSANDRA-708)
- * report latency and cache hit rate statistics with lifetime totals
- instead of average over the last minute (CASSANDRA-702)
- * support get_range_slice for RandomPartitioner (CASSANDRA-745)
- * per-keyspace replication factory and replication strategy (CASSANDRA-620)
- * track latency in microseconds (CASSANDRA-733)
- * add describe_ Thrift methods, deprecating get_string_property and
- get_string_list_property
- * jmx interface for tracking operation mode and streams in general.
- (CASSANDRA-709)
- * keep memtables in sorted order to improve range query performance
- (CASSANDRA-799)
- * use while loop instead of recursion when trimming sstables compaction list
- to avoid blowing stack in pathological cases (CASSANDRA-804)
- * basic Hadoop map/reduce support (CASSANDRA-342)
-
-
-0.5.1
- * ensure all files for an sstable are streamed to the same directory.
- (CASSANDRA-716)
- * more accurate load estimate for bootstrapping (CASSANDRA-762)
- * tolerate dead or unavailable bootstrap target on write (CASSANDRA-731)
- * allow larger numbers of keys (> 140M) in a sstable bloom filter
- (CASSANDRA-790)
- * include jvm argument improvements from CASSANDRA-504 in debian package
- * change streaming chunk size to 32MB to accomodate Windows XP limitations
- (was 64MB) (CASSANDRA-795)
- * fix get_range_slice returning results in the wrong order (CASSANDRA-781)
-
-
-0.5.0 final
- * avoid attempting to delete temporary bootstrap files twice (CASSANDRA-681)
- * fix bogus NaN in nodeprobe cfstats output (CASSANDRA-646)
- * provide a policy for dealing with single thread executors w/ a full queue
- (CASSANDRA-694)
- * optimize inner read in MessagingService, vastly improving multiple-node
- performance (CASSANDRA-675)
- * wait for table flush before streaming data back to a bootstrapping node.
- (CASSANDRA-696)
- * keep track of bootstrapping sources by table so that bootstrapping doesn't
- give the indication of finishing early (CASSANDRA-673)
-
-
-0.5.0 RC3
- * commit the correct version of the patch for CASSANDRA-663
-
-
-0.5.0 RC2 (unreleased)
- * fix bugs in converting get_range_slice results to Thrift
- (CASSANDRA-647, CASSANDRA-649)
- * expose java.util.concurrent.TimeoutException in StorageProxy methods
- (CASSANDRA-600)
- * TcpConnectionManager was holding on to disconnected connections,
- giving the false indication they were being used. (CASSANDRA-651)
- * Remove duplicated write. (CASSANDRA-662)
- * Abort bootstrap if IP is already in the token ring (CASSANDRA-663)
- * increase default commitlog sync period, and wait for last sync to
- finish before submitting another (CASSANDRA-668)
-
-
-0.5.0 RC1
- * Fix potential NPE in get_range_slice (CASSANDRA-623)
- * add CRC32 to commitlog entries (CASSANDRA-605)
- * fix data streaming on windows (CASSANDRA-630)
- * GC compacted sstables after cleanup and compaction (CASSANDRA-621)
- * Speed up anti-entropy validation (CASSANDRA-629)
- * Fix anti-entropy assertion error (CASSANDRA-639)
- * Fix pending range conflicts when bootstapping or moving
- multiple nodes at once (CASSANDRA-603)
- * Handle obsolete gossip related to node movement in the case where
- one or more nodes is down when the movement occurs (CASSANDRA-572)
- * Include dead nodes in gossip to avoid a variety of problems
- and fix HH to removed nodes (CASSANDRA-634)
- * return an InvalidRequestException for mal-formed SlicePredicates
- (CASSANDRA-643)
- * fix bug determining closest neighbor for use in multiple datacenters
- (CASSANDRA-648)
- * Vast improvements in anticompaction speed (CASSANDRA-607)
- * Speed up log replay and writes by avoiding redundant serializations
- (CASSANDRA-652)
-
-
-0.5.0 beta 2
- * Bootstrap improvements (several tickets)
- * add nodeprobe repair anti-entropy feature (CASSANDRA-193, CASSANDRA-520)
- * fix possibility of partition when many nodes restart at once
- in clusters with multiple seeds (CASSANDRA-150)
- * fix NPE in get_range_slice when no data is found (CASSANDRA-578)
- * fix potential NPE in hinted handoff (CASSANDRA-585)
- * fix cleanup of local "system" keyspace (CASSANDRA-576)
- * improve computation of cluster load balance (CASSANDRA-554)
- * added super column read/write, column count, and column/row delete to
- cassandra-cli (CASSANDRA-567, CASSANDRA-594)
- * fix returning live subcolumns of deleted supercolumns (CASSANDRA-583)
- * respect JAVA_HOME in bin/ scripts (several tickets)
- * add StorageService.initClient for fat clients on the JVM (CASSANDRA-535)
- (see contrib/client_only for an example of use)
- * make consistency_level functional in get_range_slice (CASSANDRA-568)
- * optimize key deserialization for RandomPartitioner (CASSANDRA-581)
- * avoid GCing tombstones except on major compaction (CASSANDRA-604)
- * increase failure conviction threshold, resulting in less nodes
- incorrectly (and temporarily) marked as down (CASSANDRA-610)
- * respect memtable thresholds during log replay (CASSANDRA-609)
- * support ConsistencyLevel.ALL on read (CASSANDRA-584)
- * add nodeprobe removetoken command (CASSANDRA-564)
-
-
-0.5.0 beta
- * Allow multiple simultaneous flushes, improving flush throughput
- on multicore systems (CASSANDRA-401)
- * Split up locks to improve write and read throughput on multicore systems
- (CASSANDRA-444, CASSANDRA-414)
- * More efficient use of memory during compaction (CASSANDRA-436)
- * autobootstrap option: when enabled, all non-seed nodes will attempt
- to bootstrap when started, until bootstrap successfully
- completes. -b option is removed. (CASSANDRA-438)
- * Unless a token is manually specified in the configuration xml,
- a bootstraping node will use a token that gives it half the
- keys from the most-heavily-loaded node in the cluster,
- instead of generating a random token.
- (CASSANDRA-385, CASSANDRA-517)
- * Miscellaneous bootstrap fixes (several tickets)
- * Ability to change a node's token even after it has data on it
- (CASSANDRA-541)
- * Ability to decommission a live node from the ring (CASSANDRA-435)
- * Semi-automatic loadbalancing via nodeprobe (CASSANDRA-192)
- * Add ability to set compaction thresholds at runtime via
- JMX / nodeprobe. (CASSANDRA-465)
- * Add "comment" field to ColumnFamily definition. (CASSANDRA-481)
- * Additional JMX metrics (CASSANDRA-482)
- * JSON based export and import tools (several tickets)
- * Hinted Handoff fixes (several tickets)
- * Add key cache to improve read performance (CASSANDRA-423)
- * Simplified construction of custom ReplicationStrategy classes
- (CASSANDRA-497)
- * Graphical application (Swing) for ring integrity verification and
- visualization was added to contrib (CASSANDRA-252)
- * Add DCQUORUM, DCQUORUMSYNC consistency levels and corresponding
- ReplicationStrategy / EndpointSnitch classes. Experimental.
- (CASSANDRA-492)
- * Web client interface added to contrib (CASSANDRA-457)
- * More-efficient flush for Random, CollatedOPP partitioners
- for normal writes (CASSANDRA-446) and bulk load (CASSANDRA-420)
- * Add MemtableFlushAfterMinutes, a global replacement for the old
- per-CF FlushPeriodInMinutes setting (CASSANDRA-463)
- * optimizations to slice reading (CASSANDRA-350) and supercolumn
- queries (CASSANDRA-510)
- * force binding to given listenaddress for nodes with multiple
- interfaces (CASSANDRA-546)
- * stress.py benchmarking tool improvements (several tickets)
- * optimized replica placement code (CASSANDRA-525)
- * faster log replay on restart (CASSANDRA-539, CASSANDRA-540)
- * optimized local-node writes (CASSANDRA-558)
- * added get_range_slice, deprecating get_key_range (CASSANDRA-344)
- * expose TimedOutException to thrift (CASSANDRA-563)
-
-
-0.4.2
- * Add validation disallowing null keys (CASSANDRA-486)
- * Fix race conditions in TCPConnectionManager (CASSANDRA-487)
- * Fix using non-utf8-aware comparison as a sanity check.
- (CASSANDRA-493)
- * Improve default garbage collector options (CASSANDRA-504)
- * Add "nodeprobe flush" (CASSANDRA-505)
- * remove NotFoundException from get_slice throws list (CASSANDRA-518)
- * fix get (not get_slice) of entire supercolumn (CASSANDRA-508)
- * fix null token during bootstrap (CASSANDRA-501)
-
-
-0.4.1
- * Fix FlushPeriod columnfamily configuration regression
- (CASSANDRA-455)
- * Fix long column name support (CASSANDRA-460)
- * Fix for serializing a row that only contains tombstones
- (CASSANDRA-458)
- * Fix for discarding unneeded commitlog segments (CASSANDRA-459)
- * Add SnapshotBeforeCompaction configuration option (CASSANDRA-426)
- * Fix compaction abort under insufficient disk space (CASSANDRA-473)
- * Fix reading subcolumn slice from tombstoned CF (CASSANDRA-484)
- * Fix race condition in RVH causing occasional NPE (CASSANDRA-478)
-
-
-0.4.0
- * fix get_key_range problems when a node is down (CASSANDRA-440)
- and add UnavailableException to more Thrift methods
- * Add example EndPointSnitch contrib code (several tickets)
-
-
-0.4.0 RC2
- * fix SSTable generation clash during compaction (CASSANDRA-418)
- * reject method calls with null parameters (CASSANDRA-308)
- * properly order ranges in nodeprobe output (CASSANDRA-421)
- * fix logging of certain errors on executor threads (CASSANDRA-425)
-
-
-0.4.0 RC1
- * Bootstrap feature is live; use -b on startup (several tickets)
- * Added multiget api (CASSANDRA-70)
- * fix Deadlock with SelectorManager.doProcess and TcpConnection.write
- (CASSANDRA-392)
- * remove key cache b/c of concurrency bugs in third-party
- CLHM library (CASSANDRA-405)
- * update non-major compaction logic to use two threshold values
- (CASSANDRA-407)
- * add periodic / batch commitlog sync modes (several tickets)
- * inline BatchMutation into batch_insert params (CASSANDRA-403)
- * allow setting the logging level at runtime via mbean (CASSANDRA-402)
- * change default comparator to BytesType (CASSANDRA-400)
- * add forwards-compatible ConsistencyLevel parameter to get_key_range
- (CASSANDRA-322)
- * r/m special case of blocking for local destination when writing with
- ConsistencyLevel.ZERO (CASSANDRA-399)
- * Fixes to make BinaryMemtable [bulk load interface] useful (CASSANDRA-337);
- see contrib/bmt_example for an example of using it.
- * More JMX properties added (several tickets)
- * Thrift changes (several tickets)
- - Merged _super get methods with the normal ones; return values
- are now of ColumnOrSuperColumn.
- - Similarly, merged batch_insert_super into batch_insert.
-
-
-
-0.4.0 beta
- * On-disk data format has changed to allow billions of keys/rows per
- node instead of only millions
- * Multi-keyspace support
- * Scan all sstables for all queries to avoid situations where
- different types of operation on the same ColumnFamily could
- disagree on what data was present
- * Snapshot support via JMX
- * Thrift API has changed a _lot_:
- - removed time-sorted CFs; instead, user-defined comparators
- may be defined on the column names, which are now byte arrays.
- Default comparators are provided for UTF8, Bytes, Ascii, Long (i64),
- and UUID types.
- - removed colon-delimited strings in thrift api in favor of explicit
- structs such as ColumnPath, ColumnParent, etc. Also normalized
- thrift struct and argument naming.
- - Added columnFamily argument to get_key_range.
- - Change signature of get_slice to accept starting and ending
- columns as well as an offset. (This allows use of indexes.)
- Added "ascending" flag to allow reasonably-efficient reverse
- scans as well. Removed get_slice_by_range as redundant.
- - get_key_range operates on one CF at a time
- - changed `block` boolean on insert methods to ConsistencyLevel enum,
- with options of NONE, ONE, QUORUM, and ALL.
- - added similar consistency_level parameter to read methods
- - column-name-set slice with no names given now returns zero columns
- instead of all of them. ("all" can run your server out of memory.
- use a range-based slice with a high max column count instead.)
- * Removed the web interface. Node information can now be obtained by
- using the newly introduced nodeprobe utility.
- * More JMX stats
- * Remove magic values from internals (e.g. special key to indicate
- when to flush memtables)
- * Rename configuration "table" to "keyspace"
- * Moved to crash-only design; no more shutdown (just kill the process)
- * Lots of bug fixes
-
-Full list of issues resolved in 0.4 is at https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&&pid...
-
-
-0.3.0 RC3
- * Fix potential deadlock under load in TCPConnection.
- (CASSANDRA-220)
-
-
-0.3.0 RC2
- * Fix possible data loss when server is stopped after replaying
- log but before new inserts force memtable flush.
- (CASSANDRA-204)
- * Added BUGS file
-
-
-0.3.0 RC1
- * Range queries on keys, including user-defined key collation
- * Remove support
- * Workarounds for a weird bug in JDK select/register that seems
- particularly common on VM environments. Cassandra should deploy
- fine on EC2 now
- * Much improved infrastructure: the beginnings of a decent test suite
- ("ant test" for unit tests; "nosetests" for system tests), code
- coverage reporting, etc.
- * Expanded node status reporting via JMX
- * Improved error reporting/logging on both server and client
- * Reduced memory footprint in default configuration
- * Combined blocking and non-blocking versions of insert APIs
- * Added FlushPeriodInMinutes configuration parameter to force
- flushing of infrequently-updated ColumnFamilies
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/LICENSE.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/LICENSE.txt
deleted file mode 100644
index d5c4984..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/LICENSE.txt
+++ /dev/null
@@ -1,209 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
-THIRD-PARTY DEPENDENCIES
-========================
-Convenience copies of some third-party dependencies are distributed with
-Apache Cassandra as Java jar files in lib/. Licensing information for
-these files can be found in the lib/licenses directory.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/NEWS.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/NEWS.txt
deleted file mode 100644
index ad22610..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/NEWS.txt
+++ /dev/null
@@ -1,942 +0,0 @@
-GENERAL UPGRADING ADVICE FOR ANY VERSION
-========================================
-
-Snapshotting is fast (especially if you have JNA installed) and takes
-effectively zero disk space until you start compacting the live data
-files again. Thus, best practice is to ALWAYS snapshot before any
-upgrade, just in case you need to roll back to the previous version.
-(Cassandra version X + 1 will always be able to read data files created
-by version X, but the inverse is not necessarily the case.)
-
-
-1.1.5
-=====
-
-Upgrading
----------
- - Nothing specific to this release, but please see 1.1 if you are upgrading
- from a previous version.
-
-
-1.1.4
-=====
-
-Upgrading
----------
- - Nothing specific to this release, but please see 1.1 if you are upgrading
- from a previous version.
-
-
-1.1.3
-=====
-
-Upgrading
----------
- - Running "nodetool upgradesstables" after upgrading is recommended
- if you use Counter columnfamilies.
-
-Features
---------
- - the cqlsh COPY command can now export to CSV flat files
- - added a new tools/bin/token-generator to facilitate generating evenly distributed tokens
-
-
-1.1.2
-=====
-
-Upgrading
----------
- - Nothing specific to this release, but please see 1.1 if you are upgrading
- from a previous version.
-
-Features
---------
- - cqlsh has a new COPY command to load data from CSV flat files
-
-
-1.1.1
-=====
-
-Upgrading
----------
- - Nothing specific to this release, but please see 1.1 if you are upgrading
- from a previous version.
-
-Features
---------
- - Continuous commitlog archiving and point-in-time recovery.
- See conf/commitlog_archiving.properties
- - Incremental repair by token range, exposed over JMX
-
-
-1.1
-===
-
-Upgrading
----------
- - Compression is enabled by default on newly created ColumnFamilies
- (and unchanged for ColumnFamilies created prior to upgrading).
- - If you are running a multi datacenter setup, you should upgrade to
- the latest 1.0.x (or 0.8.x) release before upgrading. Versions
- 0.8.8 and 1.0.3-1.0.5 generate cross-dc forwarding that is incompatible
- with 1.1.
- - EACH_QUORUM ConsistencyLevel is only supported for writes and will now
- throw an InvalidRequestException when used for reads. (Previous
- versions would silently perform a LOCAL_QUORUM read instead.)
- - ANY ConsistencyLevel is only supported for writes and will now
- throw an InvalidRequestException when used for reads. (Previous
- versions would silently perform a ONE read for range queries;
- single-row and multiget reads already rejected ANY.)
- - The largest mutation batch accepted by the commitlog is now 128MB.
- (In practice, batches larger than ~10MB always caused poor
- performance due to load volatility and GC promotion failures.)
- Larger batches will continue to be accepted but will not be
- durable. Consider setting durable_writes=false if you really
- want to use such large batches.
- - Make sure that global settings: key_cache_{size_in_mb, save_period}
- and row_cache_{size_in_mb, save_period} in conf/cassandra.yaml are
- used instead of per-ColumnFamily options.
- - JMX methods no longer return custom Cassandra objects. Any such methods
- will now return standard Maps, Lists, etc.
- - Hadoop input and output details are now separated. If you were
- previously using methods such as getRpcPort you now need to use
- getInputRpcPort or getOutputRpcPort depending on the circumstance.
- - CQL changes:
- + Prior to 1.1, you could use KEY as the primary key name in some
- select statements, even if the PK was actually given a different
- name. In 1.1+ you must use the defined PK name.
- - The sliced_buffer_size_in_kb option has been removed from the
- cassandra.yaml config file (this option was a no-op since 1.0).
-
-Features
---------
- - Concurrent schema updates are now supported, with any conflicts
- automatically resolved. Please note that simultaneously running
- ‘CREATE COLUMN FAMILY’ operation on the different nodes wouldn’t
- be safe until version 1.2 due to the nature of ColumnFamily
- identifier generation, for more details see CASSANDRA-3794.
- - The CQL language has undergone a major revision, CQL3, the
- highlights of which are covered at [1]. CQL3 is not
- backwards-compatibile with CQL2, so we've introduced a
- set_cql_version Thrift method to specify which version you want.
- (The default remains CQL2 at least until Cassandra 1.2.) cqlsh
- adds a --cql3 flag to enable this.
- [1] http://www.datastax.com/dev/blog/schema-in-cassandra-1-1
- - Row-level isolation: multi-column updates to a single row have
- always been *atomic* (either all will be applied, or none)
- thanks to the CommitLog, but until 1.1 they were not *isolated*
- -- a reader may see mixed old and new values while the update
- happens.
- - Finer-grained control over data directories, allowing a ColumnFamily to
- be pinned to specfic volume, e.g. one backed by SSD.
- - The bulk loader is not longer a fat client; it can be run from an
- existing machine in a cluster.
- - A new write survey mode has been added, similar to bootstrap (enabled via
- -Dcassandra.write_survey=true), but the node will not automatically join
- the cluster. This is useful for cases such as testing different
- compaction strategies with live traffic without affecting the cluster.
- - Key and row caches are now global, similar to the global memtable
- threshold. Manual tuning of cache sizes per-columnfamily is no longer
- required.
- - Off-heap caches no longer require JNA, and will work out of the box
- on Windows as well as Unix platforms.
- - Streaming is now multithreaded.
- - Compactions may now be aborted via JMX or nodetool.
- - The stress tool is not new in 1.1, but it is newly included in
- binary builds as well as the source tree
- - Hadoop: a new BulkOutputFormat is included which will directly write
- SSTables locally and then stream them into the cluster.
- YOU SHOULD USE BulkOutputFormat BY DEFAULT. ColumnFamilyOutputFormat
- is still around in case for some strange reason you want results
- trickling out over Thrift, but BulkOutputFormat is significantly
- more efficient.
- - Hadoop: KeyRange.filter is now supported with ColumnFamilyInputFormat,
- allowing index expressions to be evaluated server-side to reduce
- the amount of data sent to Hadoop.
- - Hadoop: ColumnFamilyRecordReader has a wide-row mode, enabled via
- a boolean parameter to setInputColumnFamily, that pages through
- data column-at-a-time instead of row-at-a-time.
- - Pig: can use the wide-row Hadoop support, by setting PIG_WIDEROW_INPUT
- to true. This will produce each row's columns in a bag.
-
-
-
-1.0.8
-=====
-
-Upgrading
----------
- - Nothing specific to 1.0.8
-
-Other
------
- - Allow configuring socket timeout for streaming
-
-
-1.0.7
-=====
-
-Upgrading
----------
- - Nothing specific to 1.0.7, please report to instruction for 1.0.6
-
-Other
------
- - Adds new setstreamthroughput to nodetool to configure streaming
- throttling
- - Adds JMX property to get/set rpc_timeout_in_ms at runtime
- - Allow configuring (per-CF) bloom_filter_fp_chance
-
-
-1.0.6
-=====
-
-Upgrading
----------
- - This release fixes an issue related to the chunk_length_kb option for
- compressed sstables. If you use compression on some column families, it
- is recommended after the upgrade to check the value for this option on
- these column families (the default value is 64). In case the option would
- not be set correctly, you should update the column family definition,
- setting the right value and then run scrub on the column family.
- - Please report to instruction for 1.0.5 if coming from an older version.
-
-
-1.0.5
-=====
-
-Upgrading
----------
- - 1.0.5 comes to fix two important regression of 1.0.4. So all information
- concerning 1.0.4 are valid for this release, but please avoids upgrading
- to 1.0.4.
-
-
-1.0.4
-=====
-
-Upgrading
----------
- - Nothing specific to 1.0.4 but please see the 1.0 upgrading section if
- upgrading from a version prior to 1.0.0
-
-Features
---------
- - A new upgradesstables command has been added to nodetool. It is very
- similar to scrub but without the ability to discard corrupted rows (and
- as a consequence it does not snapshot automatically before). This new
- command is to be prefered to scrub in all cases where sstables should be
- rewritten to the current format for upgrade purposes.
-
-JMX
----
- - The path for the data, commit log and saved cache directories exposed
- through JMX
- - The in-memory bloom filter sizes are now exposed through JMX
-
-
-1.0.3
-=====
-
-Upgrading
----------
- - Nothing specific to 1.0.3 but please see the 1.0 upgrading section if
- upgrading from a version prior to 1.0.0
-
-Features
---------
- - For non compressed sstables (compressed sstable already include more
- fine grained checsums), a sha1 for the full sstable is now automatically
- created (in a fix with suffix -Digest.sha1). It can be used to check the
- sstable integrity with sha1sum.
-
-
-1.0.2
-=====
-
-Upgrading
----------
- - Nothing specific to 1.0.2 but please see the 1.0 upgrading section if
- upgrading from a version prior to 1.0.0
-
-Features
---------
- - Cassandra CLI queries now have timing information
-
-
-1.0.1
-=====
-
-Upgrading
----------
- - If upgrading from a version prior to 1.0.0, please see the 1.0 Upgrading
- section
- - For running on Windows as a Service, procrun is no longer discributed
- with Cassandra, see README.txt for more information on how to download
- it if necessary.
- - The name given to snapshots directories have been improved for human
- readability. If you had scripts relying on it, you may need to update
- them.
-
-
-1.0
-===
-
-Upgrading
----------
- - Upgrading from version 0.7.1+ or 0.8.2+ can be done with a rolling
- restart, one node at a time. (0.8.0 or 0.8.1 are NOT network-compatible
- with 1.0: upgrade to the most recent 0.8 release first.)
- You do not need to bring down the whole cluster at once.
- - After upgrading, run nodetool scrub against each node before running
- repair, moving nodes, or adding new ones.
- - CQL inserts/updates now generate microsecond resolution timestamps
- by default, instead of millisecond. THIS MEANS A ROLLING UPGRADE COULD
- MIX milliseconds and microseconds, with clients talking to servers
- generating milliseconds unable to overwrite the larger microsecond
- timestamps. If you are using CQL and this is important for your
- application, you can either perform a non-rolling upgrade to 1.0, or
- update your application first to use explicit timestamps with the "USING
- timestamp=X" syntax.
- - The BinaryMemtable bulk-load interface has been removed (use the
- sstableloader tool instead).
- - The compaction_thread_priority setting has been removed from
- cassandra.yaml (use compaction_throughput_mb_per_sec to throttle
- compaction instead).
- - CQL types bytea and date were renamed to blob and timestamp, respectively,
- to conform with SQL norms. CQL type int is now a 4-byte int, not 8
- (which is still available as bigint).
- - Cassandra 1.0 uses arena allocation to reduce old generation
- fragmentation. This means there is a minimum overhead of 1MB
- per ColumnFamily plus 1MB per index.
- - The SimpleAuthenticator and SimpleAuthority classes have been moved to
- the example directory (and are thus not available from the binary
- distribution). They never provided actual security and in their current
- state are only meant as examples.
-
-Features
---------
- - SSTable compression is supported through the 'compression_options'
- parameter when creating/updating a column family. For instance, you can
- create a column family Cf using compression (through the Snappy library)
- in the CLI with:
- create column family Cf with compression_options={sstable_compression: SnappyCompressor}
- SSTable compression is not activated by default but can be activated or
- deactivated at any time.
- - Compressed SSTable blocks are checksummed to protect against bitrot
- - New LevelDB-inspired compaction algorithm can be enabled by setting the
- Columnfamily compaction_strategy=LeveledCompactionStrategy option.
- Leveled compaction means you only need to keep a few MB of space free for
- compaction instead of (in the worst case) 50%.
- - Ability to use multiple threads during a single compaction. See
- multithreaded_compaction in cassandra.yaml for more details.
- - Windows Service ("cassandra.bat install" to enable)
- - A dead node may be replaced in a single step by starting a new node
- with -Dcassandra.replace_token=<token>. More details can be found at
- http://wiki.apache.org/cassandra/Operations#Replacing_a_Dead_Node
- - It is now possible to repair only the first range returned by the
- partitioner for a node with `nodetool repair -pr`. It makes it
- easier/possible to repair a full cluster without any work duplication by
- running this command on every node of the cluster.
-
-New data types
---------------
- - decimal
-
-Other
------
- - Hinted Handoff has two major improvements:
- - Hint replay is much more efficient thanks to a change in the data model
- - Hints are created for all replicas that do not ack a write. (Formerly,
- only replicas known to be down when the write started were hinted.)
- This means that running with read repair completely off is much more
- viable than before, and the default read_repair_chance is reduced from 1.0
- ("always repair") to 0.1 ("repair 10% of the time").
- - The old per-ColumnFamily memtable thresholds
- (memtable_throughput_in_mb, memtable_operations_in_millions,
- memtable_flush_after_mins) are ignored, in favor of the global
- memtable_total_space_in_mb and commitlog_total_space_in_mb settings.
- This does not affect client compatibility -- the old options are
- still allowed, but have no effect. These options may be removed
- entirely in a future release.
- - Backlogged compactions will begin five minutes after startup. The 0.8
- behavior of never starting compaction until a flush happens is usually
- not what is desired, but a short grace period is useful to allow caches
- to warm up first.
- - The deletion of compacted data files is not performed during Garbage
- Collection anymore. This means compacted files will now be deleted
- without delay.
-
-
-0.8.5
-=====
-
-Features
---------
- - SSTables copied to a data directory can be loaded by a live node through
- nodetool refresh (may be handy to load snapshots).
- - The configured compaction throughput is exposed through JMX.
-
-Other
------
- - The sstableloader is now bundled with the debian package.
- - Repair detects when a participating node is dead and fails instead of
- hanging forever.
-
-
-0.8.4
-=====
-
-Upgrading
----------
- - Nothing specific to 0.8.4
-
-Other
------
- - This release comes to fix a bug in counter that could lead to
- (important) over-count.
- - It also fixes a slight upgrade regression from 0.8.3. It is thus advised
- to jump directly to 0.8.4 if upgrading from before 0.8.3.
-
-
-0.8.3
-=====
-
-Upgrading
----------
- - Token removal has been revamped. Removing tokens in a mixed cluster with
- 0.8.3 will not work, so the entire cluster will need to be running 0.8.3
- first, except for the dead node.
-
-Features
---------
- - It is now possible to use thrift asynchronous and
- half-synchronous/half-asynchronous servers (see cassandra.yaml for more
- details).
- - It is now possible to access counter columns through Hadoop.
-
-Other
------
- - This release fix a regression of 0.8 that can make commit log segment to
- be deleted even though not all data it contains has been flushed.
- Upgrades from 0.8.* is very much encouraged.
-
-
-0.8.2
-=====
-
-Upgrading
----------
- - 0.8.0 and 0.8.1 shipped with a bug that was setting the
- replicate_on_write option for counter column families to false (this
- option has no effect on non-counter column family). This is an unsafe
- default and 0.8.2 correct this, the default for replicate_on_write is
- now true. It is advised to update your counter column family definitions
- if replicate_on_write was uncorrectly set to false (before or after
- upgrade).
-
-
-0.8.1
-=====
-
-Upgrading
----------
- - 0.8.1 is backwards compatible with 0.8, upgrade can be achieved by a
- simple rolling restart.
- - If upgrading for earlier version (0.7), please refer to the 0.8 section
- for instructions.
-
-Features
---------
- - Numerous additions/improvements to CQL (support for counters, TTL, batch
- inserts/deletes, index dropping, ...).
- - Add two new AbstractTypes (comparator) to support compound keys
- (CompositeType and DynamicCompositeType), as well as a ReverseType to
- reverse the order of any existing comparator.
- - New option to bypass the commit log on some keyspaces (for advanced
- users).
-
-Tools
------
- - Add new data bulk loading utility (sstableloader).
-
-
-0.8
-===
-
-Upgrading
----------
- - Upgrading from version 0.7.1 or later can be done with a rolling
- restart, one node at a time. You do not need to bring down the
- whole cluster at once.
- - After upgrading, run nodetool scrub against each node before running
- repair, moving nodes, or adding new ones.
- - Running nodetool drain before shutting down the 0.7 node is
- recommended but not required. (Skipping this will result in
- replay of entire commitlog, so it will take longer to restart but
- is otherwise harmless.)
- - 0.8 is fully API-compatible with 0.7. You can continue
- to use your 0.7 clients.
- - Avro record classes used in map/reduce and Hadoop streaming code have
- been removed. Map/reduce can be switched to Thrift by changing
- org.apache.cassandra.avro in import statements to
- org.apache.cassandra.thrift (no class names change). Streaming support
- has been removed for the time being.
- - The loadbalance command has been removed from nodetool. For similar
- behavior, decommission then rebootstrap with empty initial_token.
- - Thrift unframed mode has been removed.
- - The addition of key_validation_class means the cli will assume keys
- are bytes, instead of strings, in the absence of other information.
- See http://wiki.apache.org/cassandra/FAQ#cli_keys for more details.
-
-
-Features
---------
- - added CQL client API and JDBC/DBAPI2-compliant drivers for Java and
- Python, respectively (see: drivers/ subdirectory and doc/cql)
- - added distributed Counters feature;
- see http://wiki.apache.org/cassandra/Counters
- - optional intranode encryption; see comments around 'encryption_options'
- in cassandra.yaml
- - compaction multithreading and rate-limiting; see
- 'concurrent_compactors' and 'compaction_throughput_mb_per_sec' in
- cassandra.yaml
- - cassandra will limit total memtable memory usage to 1/3 of the heap
- by default. This can be ajusted or disabled with the
- memtable_total_space_in_mb option. The old per-ColumnFamily
- throughput, operations, and age settings are still respected but
- will be removed in a future major release once we are satisfied that
- memtable_total_space_in_mb works adequately.
-
-Tools
------
- - stress and py_stress moved from contrib/ to tools/
- - clustertool was removed (see
- https://issues.apache.org/jira/browse/CASSANDRA-2607 for examples
- of how to script nodetool across the cluster instead)
-
-Other
------
- - In the past, sstable2json would write column names and values as
- hex strings, and now creates human readable values based on the
- comparator/validator. As a result, JSON dumps created with
- older versions of sstable2json are no longer compatible with
- json2sstable, and imports must be made with a configuration that
- is identical to the export.
- - manually-forced compactions ("nodetool compact") will do nothing
- if only a single SSTable remains for a ColumnFamily. To force it
- to compact that anyway (which will free up space if there are
- a lot of expired tombstones), use the new forceUserDefinedCompaction
- JMX method on CompactionManager.
- - most of contrib/ (which was not part of the binary releases)
- has been moved either to examples/ or tools/. We plan to move the
- rest for 0.8.1.
-
-JMX
----
- - By default, JMX now listens on port 7199.
-
-
-0.7.6
-=====
-
-Upgrading
----------
- - Nothing specific to 0.7.6, but see 0.7.3 Upgrading if upgrading
- from earlier than 0.7.1.
-
-
-0.7.5
-=====
-
-Upgrading
----------
- - Nothing specific to 0.7.5, but see 0.7.3 Upgrading if upgrading
- from earlier than 0.7.1.
-
-Changes
--------
- - system_update_column_family no longer snapshots before applying
- the schema change. (_update_keyspace never did. _drop_keyspace
- and _drop_column_family continue to snapshot.)
- - added memtable_flush_queue_size option to cassandra.yaml to
- avoid blocking writes when multiple column families (or a colum
- family with indexes) are flushed at the same time.
- - allow overriding initial_token, storage_port and rpc_port using
- system properties
-
-
-0.7.4
-=====
-
-Upgrading
----------
- - Nothing specific to 0.7.4, but see 0.7.3 Upgrading if upgrading
- from earlier than 0.7.1.
-
-Features
---------
- - Output to Pig is now supported as well as input
-
-
-0.7.3
-=====
-
-Upgrading
----------
- - 0.7.1 and 0.7.2 shipped with a bug that caused incorrect row-level
- bloom filters to be generated when compacting sstables generated
- with earlier versions. This would manifest in IOExceptions during
- column name-based queries. 0.7.3 provides "nodetool scrub" to
- rebuild sstables with correct bloom filters, with no data lost.
- (If your cluster was never on 0.7.0 or earlier, you don't have to
- worry about this.) Note that nodetool scrub will snapshot your
- data files before rebuilding, just in case.
-
-
-0.7.1
-=====
-
-Upgrading
----------
- - 0.7.1 is completely backwards compatible with 0.7.0. Just restart
- each node with the new version, one at a time. (The cluster does
- not all need to be upgraded simultaneously.)
-
-Features
---------
- - added flush_largest_memtables_at and reduce_cache_sizes_at options
- to cassandra.yaml as an escape valve for memory pressure
- - added option to specify -Dcassandra.join_ring=false on startup
- to allow "warm spare" nodes or performing JMX maintenance before
- joining the ring
-
-Performance
------------
- - Disk writes and sequential scans avoid polluting page cache
- (requires JNA to be enabled)
- - Cassandra performs writes efficiently across datacenters by
- sending a single copy of the mutation and having the recipient
- forward that to other replicas in its datacenter.
- - Improved network buffering
- - Reduced lock contention on memtable flush
- - Optimized supercolumn deserialization
- - Zero-copy reads from mmapped sstable files
- - Explicitly set higher JVM new generation size
- - Reduced i/o contention during saving of caches
-
-
-0.7.0
-=====
-
-Features
---------
- - Secondary indexes (indexes on column values) are now supported
- - Row size limit increased from 2GB to 2 billion columns. rows
- are no longer read into memory during compaction.
- - Keyspace and ColumnFamily definitions may be added and modified live
- - Streaming data for repair or node movement no longer requires
- anticompaction step first
- - NetworkTopologyStrategy (formerly DatacenterShardStrategy) is ready for
- use, enabling ConsistencyLevel.DCQUORUM and DCQUORUMSYNC. See comments
- in `cassandra.yaml.`
- - Optional per-Column time-to-live field allows expiring data without
- have to issue explicit remove commands
- - `truncate` thrift method allows clearing an entire ColumnFamily at once
- - Hadoop OutputFormat and Streaming [non-jvm map/reduce via stdin/out]
- support
- - Up to 8x faster reads from row cache
- - A new ByteOrderedPartitioner supports bytes keys with arbitrary content,
- and orders keys by their byte value. This should be used in new
- deployments instead of OrderPreservingPartitioner.
- - Optional round-robin scheduling between keyspaces for multitenant
- clusters
- - Dynamic endpoint snitch mitigates the impact of impaired nodes
- - New `IntegerType`, faster than LongType and allows integers of
- both less and more bits than Long's 64
- - A revamped authentication system that decouples authorization and
- allows finer-grained control of resources.
-
-Upgrading
----------
- The Thrift API has changed in incompatible ways; see below, and refer
- to http://wiki.apache.org/cassandra/ClientOptions for a list of
- higher-level clients that have been updated to support the 0.7 API.
-
- The Cassandra inter-node protocol is incompatible with 0.6.x
- releases (and with 0.7 beta1), meaning you will have to bring your
- cluster down prior to upgrading: you cannot mix 0.6 and 0.7 nodes.
-
- The hints schema was changed from 0.6 to 0.7. Cassandra automatically
- snapshots and then truncates the hints column family as part of
- starting up 0.7 for the first time.
-
- Keyspace and ColumnFamily definitions are stored in the system
- keyspace, rather than the configuration file.
-
- The process to upgrade is:
- 1) run "nodetool drain" on _each_ 0.6 node. When drain finishes (log
- message "Node is drained" appears), stop the process.
- 2) Convert your storage-conf.xml to the new cassandra.yaml using
- "bin/config-converter".
- 3) Rename any of your keyspace or column family names that do not adhere
- to the '^\w+' regex convention.
- 4) Start up your cluster with the 0.7 version.
- 5) Initialize your Keyspace and ColumnFamily definitions using
- "bin/schematool <host> <jmxport> import". _You only need to do
- this to one node_.
-
-Thrift API
-----------
- - The Cassandra server now defaults to framed mode, rather than
- unframed. Unframed is obsolete and will be removed in the next
- major release.
- - The Cassandra Thrift interface file has been updated for Thrift 0.5.
- If you are compiling your own client code from the interface, you
- will need to upgrade the Thrift compiler to match.
- - Row keys are now bytes: keys stored by versions prior to 0.7.0 will be
- returned as UTF-8 encoded bytes. OrderPreservingPartitioner and
- CollatingOrderPreservingPartitioner continue to expect that keys contain
- UTF-8 encoded strings, but RandomPartitioner now works on any key data.
- - keyspace parameters have been replaced with the per-connection
- set_keyspace method.
- - The return type for login() is now AccessLevel.
- - The get_string_property() method has been removed.
- - The get_string_list_property() method has been removed.
-
-Configuraton
-------------
- - Configuration file renamed to cassandra.yaml and log4j.properties to
- log4j-server.properties
- - PropertyFileSnitch configuration file renamed to
- cassandra-topology.properties
- - The ThriftAddress and ThriftPort directives have been renamed to
- RPCAddress and RPCPort respectively.
- - EndPointSnitch was renamed to RackInferringSnitch. A new SimpleSnitch
- has been added.
- - RackUnawareStrategy and RackAwareStrategy have been renamed to
- SimpleStrategy and OldNetworkTopologyStrategy, respectively.
- - RowWarningThresholdInMB replaced with in_memory_compaction_limit_in_mb
- - GCGraceSeconds is now per-ColumnFamily instead of global
- - Keyspace and column family names that do not confirm to a '^\w+' regex
- are considered illegal.
- - Keyspace and column family definitions will need to be loaded via
- "bin/schematool <host> <jmxport> import". _You only need to do this to
- one node_.
- - In addition to an authenticator, an authority must be configured as
- well. Users of SimpleAuthenticator should use SimpleAuthority for this
- value (the default is AllowAllAuthority, which corresponds with
- AllowAllAuthenticator).
- - The format of access.properties has changed, see the sample configuration
- conf/access.properties for documentation on the new format.
-
-
-JMX
----
- - StreamingService moved from o.a.c.streaming to o.a.c.service
- - GMFD renamed to GOSSIP_STAGE
- - {Min,Mean,Max}RowCompactedSize renamed to {Min,Mean,Max}RowSize
- since it no longer has to wait til compaction to be computed
-
-Other
------
- - If extending AbstractType, make sure you follow the singleton pattern
- followed by Cassandra core AbstractType classes: provide a public
- static final variable called 'instance'.
-
-
-0.6.6
-=====
-
-Upgrading
----------
- - As part of the cache-saving feature, a third directory
- (along with data and commitlog) has been added to the config
- file. You will need to set and create this directory
- when restarting your node into 0.6.6.
-
-
-0.6.1
-=====
-
-Upgrading
----------
- - We try to keep minor versions 100% compatible (data format,
- commitlog format, network format) within the major series, but
- we introduced a network-level incompatibility in 0.6.1.
- Thus, if you are upgrading from 0.6.0 to any higher version
- (0.6.1, 0.6.2, etc.) then you will need to restart your entire
- cluster with the new version, instead of being able to do a
- rolling restart.
-
-
-0.6.0
-=====
-
-Features
---------
- - row caching: configure with the RowsCached attribute in
- ColumnFamily definition
- - Hadoop map/reduce support: see contrib/word_count for an example
- - experimental authentication support, described under
- Authenticator in storage.conf
-
-Configuraton
-------------
- - MemtableSizeInMB has been replaced by MemtableThroughputInMB which
- triggers a memtable flush when the specified amount of data has
- been written, including overwrites.
- - MemtableObjectCountInMillions has been replaced by the
- MemtableOperationsInMillions directive which causes a memtable flush
- to occur after the specified number of operations.
- - Like MemtableSizeInMB, BinaryMemtableSizeInMB has been replaced by
- BinaryMemtableThroughputInMB.
- - Replication factor is now per-keyspace, rather than global.
- - KeysCachedFraction is deprecated in favor of KeysCached
- - RowWarningThresholdInMB added, to warn before very large rows
- get big enough to threaten node stability
-
-Thrift API
-----------
- - removed deprecated get_key_range method
- - added batch_mutate meethod
- - deprecated multiget and batch_insert methods in favor of
- multiget_slice and batch_mutate, respectively
- - added ConsistencyLevel.ANY, for when you want write
- availability even when it may not be readable immediately.
- Unlike CL.ZERO, though, it will throw an exception if
- it cannot be written *somewhere*.
-
-JMX metrics
------------
- - read and write statistics are reported as lifetime totals,
- instead of averages over the last minute. average-since-last
- requested are also available for convenience.
- - cache hit rate statistics are now available from JMX under
- org.apache.cassandra.db.Caches
- - compaction JMX metrics are moved to
- org.apache.cassandra.db.CompactionManager. PendingTasks is now
- a much better estimate of compactions remaining, and the
- progress of the current compaction has been added.
- - commitlog JMX metrics are moved to org.apache.cassandra.db.Commitlog
- - progress of data streaming during bootstrap, loadbalance, or other
- data migration, is available under
- org.apache.cassandra.streaming.StreamingService.
- See http://wiki.apache.org/cassandra/Streaming for details.
-
-Installation/Upgrade
---------------------
- - 0.6 network traffic is not compatible with earlier versions. You
- will need to shut down all your nodes at once, upgrade, then restart.
-
-
-
-0.5.0
-=====
-
-0. The commitlog format has changed (but sstable format has not).
- When upgrading from 0.4, empty the commitlog either by running
- bin/nodeprobe flush on each machine and waiting for the flush to finish,
- or simply remove the commitlog directory if you only have test data.
- (If more writes come in after the flush command, starting 0.5 will error
- out; if that happens, just go back to 0.4 and flush again.)
- The format changed twice: from 0.4 to beta1, and from beta2 to RC1.
-
-.5 The gossip protocol has changed, meaning 0.5 nodes cannot coexist
- in a cluster of 0.4 nodes or vice versa; you must upgrade your
- whole cluster at the same time.
-
-1. Bootstrap, move, load balancing, and active repair have been added.
- See http://wiki.apache.org/cassandra/Operations . When upgrading
- from 0.4, leave autobootstrap set to false for the first restart
- of your old nodes.
-
-2. Performance improvements across the board, especially on the write
- path (over 100% improvement in stress.py throughput).
-
-3. Configuration:
- - Added "comment" field to ColumnFamily definition.
- - Added MemtableFlushAfterMinutes, a global replacement for the
- old per-CF FlushPeriodInMinutes setting
- - Key cache settings
-
-4. Thrift:
- - Added get_range_slice, deprecating get_key_range
-
-
-
-0.4.2
-=====
-
-1. Improve default garbage collector options significantly --
- throughput will be 30% higher or more.
-
-
-
-0.4.1
-=====
-
-1. SnapshotBeforeCompaction configuration option allows snapshotting
- before each compaction, which allows rolling back to any version
- of the data.
-
-
-
-0.4.0
-=====
-
-1. On-disk data format has changed to allow billions of keys/rows per
- node instead of only millions. The new format is incompatible with 0.3;
- see 0.3 notes below for how to import data from a 0.3 install.
-
-2. Cassandra now supports multiple keyspaces. Typically you will have
- one keyspace per application, allowing applications to be able to
- create and modify ColumnFamilies at will without worrying about
- collisions with others in the same cluster.
-
-3. Many Thrift API changes and documentation. See
- http://wiki.apache.org/cassandra/API
-
-4. Removed the web interface in favor of JMX and bin/nodeprobe, which
- has significantly enhanced functionality.
-
-5. Renamed configuration "<Table>" to "<Keyspace>".
-
-6. Added commitlog fsync; see "<CommitLogSync>" in configuration.
-
-
-
-0.3.0
-=====
-
-1. With enough and large enough keys in a ColumnFamily, Cassandra will
- run out of memory trying to perform compactions (data file merges).
- The size of what is stored in memory is (S + 16) * (N + M) where S
- is the size of the key (usually 2 bytes per character), N is the
- number of keys and M, is the map overhead (which can be guestimated
- at around 32 bytes per key).
- So, if you have 10-character keys and 1GB of headroom in your heap
- space for compaction, you can expect to store about 17M keys
- before running into problems.
- See https://issues.apache.org/jira/browse/CASSANDRA-208
-
-2. Because fixing #1 requires a data file format change, 0.4 will not
- be binary-compatible with 0.3 data files. A client-side upgrade
- can be done relatively easily with the following algorithm:
- for key in old_client.get_key_range(everything):
- columns = old_client.get_slice or get_slice_super(key, all columns)
- new_client.batch_insert or batch_insert_super(key, columns)
- The inner loop can be trivially parallelized for speed.
-
-3. Commitlog does not fsync before reporting a write successful.
- Using blocking writes mitigates this to some degree, since all
- nodes that were part of the write quorum would have to fail
- before sync for data to be lost.
- See https://issues.apache.org/jira/browse/CASSANDRA-182
-
-Additionally, row size (that is, all the data associated with a single
-key in a given ColumnFamily) is limited by available memory, because
-compaction deserializes each row before merging.
-
-See https://issues.apache.org/jira/browse/CASSANDRA-16
-
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/NOTICE.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/NOTICE.txt
deleted file mode 100644
index da1ca02..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/NOTICE.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-Apache Cassandra
-Copyright 2009, 2010 The Apache Software Foundation
-
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/ ).
-
-Some alternate data structures provided by high-scale-lib from
-http://sourceforge.net/projects/high-scale-lib/.
-Written by Cliff Click and released as Public Domain.
-
-Some alternate data structures provided by concurrentlinkedhashmap
-from http://code.google.com/p/concurrentlinkedhashmap/ .
-Copyright 2009 Benjamin Manes
-
-Alternative collection types provided by google-collections from
-http://code.google.com/p/google-collections/.
-Copyright (C) 2007 Google Inc.
-
-JSON (de)serialization provided by jackson (http://jackson.codehaus.org ).
-Copyright (C) 2010 Tatu Saloranta and others.
-
-Alternative JSON (de)serialization by json-simple from
-(http://code.google.com/p/json-simple).
-Copyright (C) 2009 Fang Yidong and Chris Nokleberg
-
-This product includes the Jetty HTTP server
-(http://jetty.codehaus.org/jetty/).
-Copyright 1995-2006 Mort Bay Consulting Pty Ltd
-
-YAML support provided by snakeyaml (http://code.google.com/p/snakeyaml/ ).
-Copyright (c) 2008-2010 Andrey Somov
-
-Compression support provided by snappy-java (http://code.google.com/p/snappy-java/ )
-Written by Taro L. Saito.
-
-Streaming compression support provided by ning-compress
-(https://github.com/ning/compress)
-Copyright 2009-2010 Ning, Inc.
-
-Alternative map implementation provided by SnapTree
-(https://github.com/nbronson/snaptree)
-Written by Nathan G. Bronson et al.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/README.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/README.txt
deleted file mode 100644
index 3985a98..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/README.txt
+++ /dev/null
@@ -1,113 +0,0 @@
-Cassandra is a highly scalable, eventually consistent, distributed, structured
-key-value store.
-
-
-Project description
--------------------
-
-Cassandra brings together the distributed systems technologies from Dynamo
-and the data model from Google's BigTable. Like Dynamo, Cassandra is
-eventually consistent. Like BigTable, Cassandra provides a ColumnFamily-based
-data model richer than typical key/value systems.
-
-For more information see http://cassandra.apache.org/
-
-Requirements
-------------
- * Java >= 1.6 (OpenJDK and Sun have been tested)
-
-Getting started
----------------
-
-This short guide will walk you through getting a basic one node cluster up
-and running, and demonstrate some simple reads and writes.
-
- * tar -zxvf apache-cassandra-$VERSION.tar.gz
- * cd apache-cassandra-$VERSION
- * sudo mkdir -p /var/log/cassandra
- * sudo chown -R `whoami` /var/log/cassandra
- * sudo mkdir -p /var/lib/cassandra
- * sudo chown -R `whoami` /var/lib/cassandra
-
-Note: The sample configuration files in conf/ determine the file-system
-locations Cassandra uses for logging and data storage. You are free to
-change these to suit your own environment and adjust the path names
-used here accordingly.
-
-Now that we're ready, let's start it up!
-
- * bin/cassandra -f
-
-Unix: Running the startup script with the -f argument will cause
-Cassandra to remain in the foreground and log to standard out.
-
-Windows: bin\cassandra.bat runs in the foreground by default. To
-install Cassandra as a Windows service, download Procrun from
-http://commons.apache.org/daemon/procrun.html, set the PRUNSRV
-environment variable to the full path of prunsrv (e.g.,
-C:\procrun\prunsrv.exe), and run "bin\cassandra.bat install".
-Similarly, "uninstall" will remove the service.
-
-Now let's try to read and write some data using the command line client.
-
- * bin/cassandra-cli --host localhost
-
-The command line client is interactive so if everything worked you should
-be sitting in front of a prompt...
-
- Connected to: "Test Cluster" on localhost/9160
- Welcome to cassandra CLI.
-
- Type 'help;' or '?' for help. Type 'quit;' or 'exit;' to quit.
- [default@unknown]
-
-As the banner says, you can use 'help;' or '?' to see what the CLI has to
-offer, and 'quit;' or 'exit;' when you've had enough fun. But lets try
-something slightly more interesting...
-
- [default@unknown] create keyspace Keyspace1;
- ece86bde-dc55-11df-8240-e700f669bcfc
- [default@unknown] use Keyspace1;
- Authenticated to keyspace: Keyspace1
- [default@Keyspace1] create column family Users with comparator=UTF8Type and default_validation_class=UTF8Type and key_validation_class=UTF8Type;
- 737c7a71-dc56-11df-8240-e700f669bcfc
-
- [default@KS1] set Users[jsmith][first] = 'John';
- Value inserted.
- [default@KS1] set Users[jsmith][last] = 'Smith';
- Value inserted.
- [default@KS1] set Users[jsmith][age] = long(42);
- Value inserted.
- [default@KS1] get Users[jsmith];
- => (column=last, value=Smith, timestamp=1287604215498000)
- => (column=first, value=John, timestamp=1287604214111000)
- => (column=age, value=42, timestamp=1287604216661000)
- Returned 3 results.
-
-If your session looks similar to what's above, congrats, your single node
-cluster is operational! But what exactly was all of that? Let's break it
-down into pieces and see.
-
- set Users[jsmith][first] = 'John';
- \ \ \ \
- \ \_ key \ \_ value
- \ \_ column
- \_ column family
-
-Data stored in Cassandra is associated with a column family (Users),
-which in turn is associated with a keyspace (Keyspace1). In the example
-above, we set the value 'John' in the 'first' column for key 'jsmith'.
-
-For more information on the Cassandra data model be sure to checkout
-http://wiki.apache.org/cassandra/DataModel
-
-Wondering where to go from here?
-
- * The wiki (http://wiki.apache.org/cassandra/ ) is the
- best source for additional information.
- * Join us in #cassandra on irc.freenode.net and ask questions.
- * Subscribe to the Users mailing list by sending a mail to
- user-subscribe(a)cassandra.apache.org
-
-
-
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra
deleted file mode 100755
index f20fc76..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra
+++ /dev/null
@@ -1,192 +0,0 @@
-#!/bin/sh
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-# OPTIONS:
-# -f: start in foreground
-# -p <filename>: log the pid to a file (useful to kill it later)
-# -v: print version string and exit
-
-# CONTROLLING STARTUP:
-#
-# This script relies on few environment variables to determine startup
-# behavior, those variables are:
-#
-# CLASSPATH -- A Java classpath containing everything necessary to run.
-# JVM_OPTS -- Additional arguments to the JVM for heap size, etc
-# CASSANDRA_CONF -- Directory containing Cassandra configuration files.
-#
-# As a convenience, a fragment of shell is sourced in order to set one or
-# more of these variables. This so-called `include' can be placed in a
-# number of locations and will be searched for in order. The lowest
-# priority search path is the same directory as the startup script, and
-# since this is the location of the sample in the project tree, it should
-# almost work Out Of The Box.
-#
-# Any serious use-case though will likely require customization of the
-# include. For production installations, it is recommended that you copy
-# the sample to one of /usr/share/cassandra/cassandra.in.sh,
-# /usr/local/share/cassandra/cassandra.in.sh, or
-# /opt/cassandra/cassandra.in.sh and make your modifications there.
-#
-# Another option is to specify the full path to the include file in the
-# environment. For example:
-#
-# $ CASSANDRA_INCLUDE=/path/to/in.sh cassandra -p /var/run/cass.pid
-#
-# Note: This is particularly handy for running multiple instances on a
-# single installation, or for quick tests.
-#
-# Finally, developers and enthusiasts who frequently run from an SVN
-# checkout, and do not want to locally modify bin/cassandra.in.sh, can put
-# a customized include file at ~/.cassandra.in.sh.
-#
-# If you would rather configure startup entirely from the environment, you
-# can disable the include by exporting an empty CASSANDRA_INCLUDE, or by
-# ensuring that no include files exist in the aforementioned search list.
-# Be aware that you will be entirely responsible for populating the needed
-# environment variables.
-
-# NB: Developers should be aware that this script should remain compatible with
-# POSIX sh and Solaris sh. This means, in particular, no $(( )) and no $( ).
-
-# If an include wasn't specified in the environment, then search for one...
-if [ "x$CASSANDRA_INCLUDE" = "x" ]; then
- # Locations (in order) to use when searching for an include file.
- for include in /usr/share/cassandra/cassandra.in.sh \
- /usr/local/share/cassandra/cassandra.in.sh \
- /opt/cassandra/cassandra.in.sh \
- "$HOME/.cassandra.in.sh" \
- "`dirname $0`/cassandra.in.sh"; do
- if [ -r "$include" ]; then
- . "$include"
- break
- fi
- done
-# ...otherwise, source the specified include.
-elif [ -r "$CASSANDRA_INCLUDE" ]; then
- . "$CASSANDRA_INCLUDE"
-fi
-
-# Use JAVA_HOME if set, otherwise look for java in PATH
-if [ -n "$JAVA_HOME" ]; then
- JAVA="$JAVA_HOME/bin/java"
-else
- JAVA=java
-fi
-
-# If numactl is available, use it. For Cassandra, the priority is to
-# avoid disk I/O. Even for the purpose of CPU efficiency, we don't
-# really have CPU<->data affinity anyway. Also, empirically test that numactl
-# works before trying to use it (CASSANDRA-3245).
-NUMACTL_ARGS="--interleave=all"
-if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/null
-then
- NUMACTL="numactl $NUMACTL_ARGS"
-else
- NUMACTL=""
-fi
-
-if [ -z "$CASSANDRA_CONF" -o -z "$CLASSPATH" ]; then
- echo "You must set the CASSANDRA_CONF and CLASSPATH vars" >&2
- exit 1
-fi
-
-if [ -f "$CASSANDRA_CONF/cassandra-env.sh" ]; then
- . "$CASSANDRA_CONF/cassandra-env.sh"
-fi
-
-# Special-case path variables.
-case "`uname`" in
- CYGWIN*)
- CLASSPATH=`cygpath -p -w "$CLASSPATH"`
- CASSANDRA_CONF=`cygpath -p -w "$CASSANDRA_CONF"`
- ;;
-esac
-
-launch_service()
-{
- pidpath=$1
- foreground=$2
- props=$3
- class=$4
- cassandra_parms="-Dlog4j.configuration=log4j-server.properties -Dlog4j.defaultInitOverride=true"
-
- if [ "x$pidpath" != "x" ]; then
- cassandra_parms="$cassandra_parms -Dcassandra-pidfile=$pidpath"
- fi
-
- # The cassandra-foreground option will tell CassandraDaemon not
- # to close stdout/stderr, but it's up to us not to background.
- if [ "x$foreground" != "x" ]; then
- cassandra_parms="$cassandra_parms -Dcassandra-foreground=yes"
- exec $NUMACTL "$JAVA" $JVM_OPTS $cassandra_parms -cp "$CLASSPATH" $props "$class"
- # Startup CassandraDaemon, background it, and write the pid.
- else
- exec $NUMACTL "$JAVA" $JVM_OPTS $cassandra_parms -cp "$CLASSPATH" $props "$class" <&- &
- [ ! -z "$pidpath" ] && printf "%d" $! > "$pidpath"
- true
- fi
-
- return $?
-}
-
-# Parse any command line options.
-args=`getopt vfhp:bD: "$@"`
-eval set -- "$args"
-
-classname="org.apache.cassandra.thrift.CassandraDaemon"
-
-while true; do
- case "$1" in
- -p)
- pidfile="$2"
- shift 2
- ;;
- -f)
- foreground="yes"
- shift
- ;;
- -h)
- echo "Usage: $0 [-f] [-h] [-p pidfile]"
- exit 0
- ;;
- -v)
- "$JAVA" -cp "$CLASSPATH" org.apache.cassandra.tools.GetVersion
- exit 0
- ;;
- -D)
- properties="$properties -D$2"
- shift 2
- ;;
- --)
- shift
- break
- ;;
- *)
- echo "Error parsing arguments!" >&2
- exit 1
- ;;
- esac
-done
-
-# Start up the service
-launch_service "$pidfile" "$foreground" "$properties" "$classname"
-
-exit $?
-
-# vi:ai sw=4 ts=4 tw=0 et
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra-cli b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra-cli
deleted file mode 100755
index c5fe27b..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra-cli
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-if [ "x$CASSANDRA_INCLUDE" = "x" ]; then
- for include in /usr/share/cassandra/cassandra.in.sh \
- /usr/local/share/cassandra/cassandra.in.sh \
- /opt/cassandra/cassandra.in.sh \
- ~/.cassandra.in.sh \
- `dirname $0`/cassandra.in.sh; do
- if [ -r $include ]; then
- . $include
- break
- fi
- done
-elif [ -r $CASSANDRA_INCLUDE ]; then
- . $CASSANDRA_INCLUDE
-fi
-
-# Use JAVA_HOME if set, otherwise look for java in PATH
-if [ -x $JAVA_HOME/bin/java ]; then
- JAVA=$JAVA_HOME/bin/java
-else
- JAVA=`which java`
-fi
-
-if [ -z $CLASSPATH ]; then
- echo "You must set the CLASSPATH var" >&2
- exit 1
-fi
-
-$JAVA -ea -cp $CLASSPATH -Xmx256M \
- -Dlog4j.configuration=log4j-tools.properties \
- org.apache.cassandra.cli.CliMain "$@"
-
-# vi:ai sw=4 ts=4 tw=0 et
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra-cli.bat b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra-cli.bat
deleted file mode 100755
index 0d52bdf..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra-cli.bat
+++ /dev/null
@@ -1,51 +0,0 @@
-@REM
-@REM Licensed to the Apache Software Foundation (ASF) under one or more
-@REM contributor license agreements. See the NOTICE file distributed with
-@REM this work for additional information regarding copyright ownership.
-@REM The ASF licenses this file to You under the Apache License, Version 2.0
-@REM (the "License"); you may not use this file except in compliance with
-@REM the License. You may obtain a copy of the License at
-@REM
-@REM http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing, software
-@REM distributed under the License is distributed on an "AS IS" BASIS,
-@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@REM See the License for the specific language governing permissions and
-@REM limitations under the License.
-
-
-@echo off
-if "%OS%" == "Windows_NT" setlocal
-
-if NOT DEFINED CASSANDRA_HOME set CASSANDRA_HOME=%~dp0..
-if NOT DEFINED JAVA_HOME goto :err
-
-REM Ensure that any user defined CLASSPATH variables are not used on startup
-set CLASSPATH=
-
-REM For each jar in the CASSANDRA_HOME lib directory call append to build the CLASSPATH variable.
-for %%i in ("%CASSANDRA_HOME%\lib\*.jar") do call :append "%%i"
-goto okClasspath
-
-:append
-set CLASSPATH=%CLASSPATH%;%1
-goto :eof
-
-:okClasspath
-REM Include the build\classes\main directory so it works in development
-set CASSANDRA_CLASSPATH=%CLASSPATH%;"%CASSANDRA_HOME%\build\classes\main";"%CASSANDRA_HOME%\build\classes\thrift"
-goto runCli
-
-:runCli
-echo Starting Cassandra Client
-"%JAVA_HOME%\bin\java" -cp %CASSANDRA_CLASSPATH% org.apache.cassandra.cli.CliMain %*
-goto finally
-
-:err
-echo The JAVA_HOME environment variable must be set to run this program!
-pause
-
-:finally
-
-ENDLOCAL
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra.bat b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra.bat
deleted file mode 100755
index 283abe9..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra.bat
+++ /dev/null
@@ -1,116 +0,0 @@
-@REM
-@REM Licensed to the Apache Software Foundation (ASF) under one or more
-@REM contributor license agreements. See the NOTICE file distributed with
-@REM this work for additional information regarding copyright ownership.
-@REM The ASF licenses this file to You under the Apache License, Version 2.0
-@REM (the "License"); you may not use this file except in compliance with
-@REM the License. You may obtain a copy of the License at
-@REM
-@REM http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing, software
-@REM distributed under the License is distributed on an "AS IS" BASIS,
-@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@REM See the License for the specific language governing permissions and
-@REM limitations under the License.
-
-@echo off
-if "%OS%" == "Windows_NT" setlocal
-
-set ARG=%1
-set INSTALL="INSTALL"
-set UNINSTALL="UNINSTALL"
-
-pushd %~dp0..
-if NOT DEFINED CASSANDRA_HOME set CASSANDRA_HOME=%CD%
-popd
-
-if NOT DEFINED CASSANDRA_MAIN set CASSANDRA_MAIN=org.apache.cassandra.thrift.CassandraDaemon
-if NOT DEFINED JAVA_HOME goto :err
-
-REM ***** JAVA options *****
-set JAVA_OPTS=-ea^
- -javaagent:"%CASSANDRA_HOME%\lib\jamm-0.2.5.jar"^
- -Xms1G^
- -Xmx1G^
- -XX:+HeapDumpOnOutOfMemoryError^
- -XX:+UseParNewGC^
- -XX:+UseConcMarkSweepGC^
- -XX:+CMSParallelRemarkEnabled^
- -XX:SurvivorRatio=8^
- -XX:MaxTenuringThreshold=1^
- -XX:CMSInitiatingOccupancyFraction=75^
- -XX:+UseCMSInitiatingOccupancyOnly^
- -Dcom.sun.management.jmxremote.port=7199^
- -Dcom.sun.management.jmxremote.ssl=false^
- -Dcom.sun.management.jmxremote.authenticate=false^
- -Dlog4j.configuration=log4j-server.properties^
- -Dlog4j.defaultInitOverride=true
-
-REM ***** CLASSPATH library setting *****
-
-REM Ensure that any user defined CLASSPATH variables are not used on startup
-set CLASSPATH="%CASSANDRA_HOME%\conf"
-
-REM For each jar in the CASSANDRA_HOME lib directory call append to build the CLASSPATH variable.
-for %%i in ("%CASSANDRA_HOME%\lib\*.jar") do call :append "%%i"
-goto okClasspath
-
-:append
-set CLASSPATH=%CLASSPATH%;%1
-goto :eof
-
-:okClasspath
-REM Include the build\classes\main directory so it works in development
-set CASSANDRA_CLASSPATH=%CLASSPATH%;"%CASSANDRA_HOME%\build\classes\main";"%CASSANDRA_HOME%\build\classes\thrift"
-set CASSANDRA_PARAMS=-Dcassandra -Dcassandra-foreground=yes
-if /i "%ARG%" == "INSTALL" goto doInstallOperation
-if /i "%ARG%" == "UNINSTALL" goto doInstallOperation
-goto runDaemon
-
-
-:runDaemon
-echo Starting Cassandra Server
-"%JAVA_HOME%\bin\java" %JAVA_OPTS% %CASSANDRA_PARAMS% -cp %CASSANDRA_CLASSPATH% "%CASSANDRA_MAIN%"
-goto finally
-
-:doInstallOperation
-set SERVICE_JVM="cassandra"
-rem location of Prunsrv
-set PATH_PRUNSRV=%CASSANDRA_HOME%\bin\daemon\
-set PR_LOGPATH=%PATH_PRUNSRV%
-
-rem fix up java ops replace ' -' with ' ;-'
-set JAVA_OPTS_DELM=%JAVA_OPTS: -=;-%
-
-rem Allow prunsrv to be overridden
-if "%PRUNSRV%" == "" set PRUNSRV=%PATH_PRUNSRV%prunsrv
-
-echo trying to delete service if it has been created already
-"%PRUNSRV%" //DS//%SERVICE_JVM%
-rem quit if we're just going to uninstall
-if /i "%ARG%" == "UNINSTALL" goto finally
-
-echo.
-echo Installing %SERVICE_JVM%. If you get registry warnings, re-run as an Administrator
-"%PRUNSRV%" //IS//%SERVICE_JVM%
-echo Setting the parameters for %SERVICE_JVM%
-rem set PR_CLASSPATH=%CASSANDRA_CLASSPATH%
-"%PRUNSRV%" //US//%SERVICE_JVM% ^
- --Jvm=auto --StdOutput auto --StdError auto ^
- --Classpath=%CASSANDRA_CLASSPATH% ^
- --StartMode=jvm --StartClass=%CASSANDRA_MAIN% --StartMethod=main ^
- --StopMode=jvm --StopClass=%CASSANDRA_MAIN% --StopMethod=stop ^
- ++JvmOptions=%JAVA_OPTS_DELM% ++JvmOptions=-DCassandra ^
- --PidFile pid.txt
-
-echo Installation of %SERVICE_JVM% is complete
-goto finally
-
-:err
-echo JAVA_HOME environment variable must be set!
-pause
-
-:finally
-
-ENDLOCAL
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra.in.sh b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra.in.sh
deleted file mode 100644
index 464cc37..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cassandra.in.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-if [ "x$CASSANDRA_HOME" = "x" ]; then
- CASSANDRA_HOME=`dirname $0`/..
-fi
-
-# The directory where Cassandra's configs live (required)
-if [ "x$CASSANDRA_CONF" = "x" ]; then
- CASSANDRA_CONF=$CASSANDRA_HOME/conf
-fi
-
-# This can be the path to a jar file, or a directory containing the
-# compiled classes. NOTE: This isn't needed by the startup script,
-# it's just used here in constructing the classpath.
-cassandra_bin=$CASSANDRA_HOME/build/classes/main
-cassandra_bin=$cassandra_bin:$CASSANDRA_HOME/build/classes/thrift
-#cassandra_bin=$cassandra_home/build/cassandra.jar
-
-# JAVA_HOME can optionally be set here
-#JAVA_HOME=/usr/local/jdk6
-
-# The java classpath (required)
-CLASSPATH=$CASSANDRA_CONF:$cassandra_bin
-
-for jar in $CASSANDRA_HOME/lib/*.jar; do
- CLASSPATH=$CLASSPATH:$jar
-done
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cqlsh b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cqlsh
deleted file mode 100755
index 6b61364..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cqlsh
+++ /dev/null
@@ -1,2698 +0,0 @@
-#!/bin/sh
-# -*- mode: Python -*-
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-""":"
-# bash code here; finds a suitable python interpreter and execs this file.
-# prefer unqualified "python" if suitable:
-python -c 'import sys; sys.exit(not (0x020500b0 < sys.hexversion < 0x03000000))' 2>/dev/null \
- && exec python "$0" "$@"
-for pyver in 2.6 2.7 2.5; do
- which python$pyver > /dev/null 2>&1 && exec python$pyver "$0" "$@"
-done
-echo "No appropriate python interpreter found." >&2
-exit 1
-":"""
-
-from __future__ import with_statement
-
-description = "CQL Shell for Apache Cassandra"
-version = "2.2.0"
-
-from StringIO import StringIO
-from itertools import groupby
-from contextlib import contextmanager, closing
-from glob import glob
-from functools import partial
-from collections import defaultdict
-
-import cmd
-import sys
-import os
-import time
-import optparse
-import ConfigParser
-import codecs
-import locale
-import re
-import platform
-import warnings
-import csv
-
-# cqlsh should run correctly when run out of a Cassandra source tree,
-# out of an unpacked Cassandra tarball, and after a proper package install.
-cqlshlibdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', 'pylib')
-if os.path.isdir(cqlshlibdir):
- sys.path.insert(0, cqlshlibdir)
-
-from cqlshlib import cqlhandling, cql3handling, pylexotron, wcwidth
-
-try:
- import readline
-except ImportError:
- readline = None
-
-CQL_LIB_PREFIX = 'cql-internal-only-'
-THRIFT_LIB_PREFIX = 'thrift-python-internal-only-'
-
-# use bundled libs for python-cql and thrift, if available. if there
-# is a ../lib dir, use bundled libs there preferentially.
-ZIPLIB_DIRS = [os.path.join(os.path.dirname(__file__), '..', 'lib')]
-myplatform = platform.system()
-if myplatform == 'Linux':
- ZIPLIB_DIRS.append('/usr/share/cassandra/lib')
-
-if os.environ.get('CQLSH_NO_BUNDLED', ''):
- ZIPLIB_DIRS = ()
-
-def find_zip(libprefix):
- for ziplibdir in ZIPLIB_DIRS:
- zips = glob(os.path.join(ziplibdir, libprefix + '*.zip'))
- if zips:
- return max(zips) # probably the highest version, if multiple
-
-cql_zip = find_zip(CQL_LIB_PREFIX)
-if cql_zip:
- ver = os.path.splitext(os.path.basename(cql_zip))[0][len(CQL_LIB_PREFIX):]
- sys.path.insert(0, os.path.join(cql_zip, 'cql-' + ver))
-thrift_zip = find_zip(THRIFT_LIB_PREFIX)
-if thrift_zip:
- sys.path.insert(0, thrift_zip)
-
-try:
- import cql
-except ImportError, e:
- sys.exit("\nPython CQL driver not installed, or not on PYTHONPATH.\n"
- 'You might try "easy_install cql".\n\n'
- 'Python: %s\n'
- 'Module load path: %r\n\n'
- 'Error: %s\n' % (sys.executable, sys.path, e))
-
-import cql.decoders
-from cql.cursor import _COUNT_DESCRIPTION, _VOID_DESCRIPTION
-
-
-CONFIG_FILE = os.path.expanduser(os.path.join('~', '.cqlshrc'))
-HISTORY = os.path.expanduser(os.path.join('~', '.cqlsh_history'))
-DEFAULT_HOST = 'localhost'
-DEFAULT_PORT = 9160
-DEFAULT_CQLVER = '2'
-
-epilog = """Connects to %(DEFAULT_HOST)s:%(DEFAULT_PORT)d by default. These
-defaults can be changed by setting $CQLSH_HOST and/or $CQLSH_PORT. When a
-host (and optional port number) are given on the command line, they take
-precedence over any defaults.""" % globals()
-
-parser = optparse.OptionParser(description=description, epilog=epilog,
- usage="Usage: %prog [options] [host [port]]",
- version='cqlsh ' + version)
-parser.add_option("-C", "--color", action="store_true",
- help="Enable color output.")
-parser.add_option("-u", "--username", help="Authenticate as user.")
-parser.add_option("-p", "--password", help="Authenticate using password.")
-parser.add_option('-k', '--keyspace', help='Authenticate to the given keyspace.')
-parser.add_option("-f", "--file",
- help="Execute commands from FILE, then exit")
-parser.add_option('--debug', action='store_true',
- help='Show additional debugging information')
-parser.add_option('--cqlversion', default=DEFAULT_CQLVER,
- help='Specify a particular CQL version (default: %default).'
- ' Examples: "2", "3.0.0-beta1"')
-parser.add_option("-2", "--cql2", action="store_const", dest='cqlversion', const='2',
- help="Shortcut notation for --cqlversion=2")
-parser.add_option("-3", "--cql3", action="store_const", dest='cqlversion', const='3',
- help="Shortcut notation for --cqlversion=3")
-
-
-RED = '\033[0;1;31m'
-GREEN = '\033[0;1;32m'
-YELLOW = '\033[0;1;33m'
-BLUE = '\033[0;1;34m'
-MAGENTA = '\033[0;1;35m'
-CYAN = '\033[0;1;36m'
-WHITE = '\033[0;1;37m'
-DARK_MAGENTA = '\033[0;35m'
-ANSI_RESET = '\033[0m'
-
-CQL_ERRORS = (cql.Error,)
-try:
- from thrift.Thrift import TException
-except ImportError:
- pass
-else:
- CQL_ERRORS += (TException,)
-
-debug_completion = bool(os.environ.get('CQLSH_DEBUG_COMPLETION', '') == 'YES')
-
-# we want the cql parser to understand our cqlsh-specific commands too
-my_commands_ending_with_newline = (
- 'help',
- '?',
- 'describe',
- 'desc',
- 'show',
- 'assume',
- 'source',
- 'capture',
- 'debug',
- 'exit',
- 'quit'
-)
-
-cqlsh_syntax_completers = []
-def cqlsh_syntax_completer(rulename, termname):
- def registrator(f):
- cqlsh_syntax_completers.append((rulename, termname, f))
- return f
- return registrator
-
-cqlsh_extra_syntax_rules = r'''
-<cqlshCommand> ::= <CQL_Statement>
- | <specialCommand> ( ";" | "\n" )
- ;
-<specialCommand> ::= <describeCommand>
- | <showCommand>
- | <assumeCommand>
- | <sourceCommand>
- | <captureCommand>
- | <copyCommand>
- | <debugCommand>
- | <helpCommand>
- | <exitCommand>
- ;
-
-<describeCommand> ::= ( "DESCRIBE" | "DESC" )
- ( "KEYSPACE" ksname=<keyspaceName>?
- | ( "COLUMNFAMILY" | "TABLE" ) cf=<columnFamilyName>
- | ( "COLUMNFAMILIES" | "TABLES" )
- | "SCHEMA"
- | "CLUSTER" )
- ;
-
-<showCommand> ::= "SHOW" what=( "VERSION" | "HOST" | "ASSUMPTIONS" )
- ;
-
-<assumeCommand> ::= "ASSUME" cf=<columnFamilyName> <assumeTypeDef>
- ( "," <assumeTypeDef> )*
- ;
-
-<assumeTypeDef> ::= "NAMES" "ARE" names=<storageType>
- | "VALUES" "ARE" values=<storageType>
- | "(" colname=<colname> ")" "VALUES" "ARE" colvalues=<storageType>
- ;
-
-<sourceCommand> ::= "SOURCE" fname=<stringLiteral>
- ;
-
-<captureCommand> ::= "CAPTURE" ( fname=( <stringLiteral> | "OFF" ) )?
- ;
-
-<copyCommand> ::= "COPY" cf=<columnFamilyName>
- ( "(" [colnames]=<colname> ( "," [colnames]=<colname> )* ")" )?
- ( dir="FROM" ( fname=<stringLiteral> | "STDIN" )
- | dir="TO" ( fname=<stringLiteral> | "STDOUT" ) )
- ( "WITH" <copyOption> ( "AND" <copyOption> )* )?
- ;
-
-<copyOption> ::= [optnames]=<cfOptionName> "=" [optvals]=<cfOptionVal>
- ;
-
-# avoiding just "DEBUG" so that this rule doesn't get treated as a terminal
-<debugCommand> ::= "DEBUG" "THINGS"?
- ;
-
-<helpCommand> ::= ( "HELP" | "?" ) [topic]=( <identifier> | <stringLiteral> )*
- ;
-
-<exitCommand> ::= "exit" | "quit"
- ;
-
-<qmark> ::= "?" ;
-'''
-
-@cqlsh_syntax_completer('helpCommand', 'topic')
-def complete_help(ctxt, cqlsh):
- helpfuncs = [n[5:].upper() for n in cqlsh.get_names() if n.startswith('help_')]
- funcs_with_docstrings = [n[3:].upper() for n in cqlsh.get_names()
- if n.startswith('do_') and getattr(cqlsh, n, None).__doc__]
- return sorted(helpfuncs + funcs_with_docstrings)
-
-@cqlsh_syntax_completer('assumeTypeDef', 'colname')
-def complete_assume_col(ctxt, cqlsh):
- ks = ctxt.get_binding('ks', None)
- ks = cqlsh.cql_unprotect_name(ks) if ks is not None else None
- cf = cqlsh.cql_unprotect_name(ctxt.get_binding('cf'))
- cfdef = cqlsh.get_columnfamily(cf, ksname=ks)
- cols = [cm.name for cm in cfdef.column_metadata]
- cols.append(cfdef.key_alias or 'KEY')
- return map(cqlsh.cql_protect_name, cols)
-
-def complete_source_quoted_filename(ctxt, cqlsh):
- partial = ctxt.get_binding('partial', '')
- head, tail = os.path.split(partial)
- exhead = os.path.expanduser(head)
- try:
- contents = os.listdir(exhead or '.')
- except OSError:
- return ()
- matches = filter(lambda f: f.startswith(tail), contents)
- annotated = []
- for f in matches:
- match = os.path.join(head, f)
- if os.path.isdir(os.path.join(exhead, f)):
- match += '/'
- annotated.append(match)
- return annotated
-
-cqlsh_syntax_completer('sourceCommand', 'fname') \
- (complete_source_quoted_filename)
-cqlsh_syntax_completer('captureCommand', 'fname') \
- (complete_source_quoted_filename)
-
-@cqlsh_syntax_completer('copyCommand', 'fname')
-def copy_fname_completer(ctxt, cqlsh):
- lasttype = ctxt.get_binding('*LASTTYPE*')
- if lasttype == 'unclosedString':
- return complete_source_quoted_filename(ctxt, cqlsh)
- partial = ctxt.get_binding('partial')
- if partial == '':
- return ["'"]
- return ()
-
-@cqlsh_syntax_completer('copyCommand', 'colnames')
-def complete_copy_column_names(ctxt, cqlsh):
- existcols = map(cqlsh.cql_unprotect_name, ctxt.get_binding('colnames', ()))
- ks = cqlsh.cql_unprotect_name(ctxt.get_binding('ksname', None))
- cf = cqlsh.cql_unprotect_name(ctxt.get_binding('cfname'))
- colnames = cqlsh.get_column_names(ks, cf)
- if len(existcols) == 0:
- return [colnames[0]]
- return set(colnames[1:]) - set(existcols)
-
-COPY_OPTIONS = ('DELIMITER', 'QUOTE', 'ESCAPE', 'HEADER', 'ENCODING', 'NULL')
-
-@cqlsh_syntax_completer('copyOption', 'optnames')
-def complete_copy_options(ctxt, cqlsh):
- optnames = map(str.upper, ctxt.get_binding('optnames', ()))
- direction = ctxt.get_binding('dir').upper()
- opts = set(COPY_OPTIONS) - set(optnames)
- if direction == 'FROM':
- opts -= ('ENCODING', 'NULL')
- return opts
-
-@cqlsh_syntax_completer('copyOption', 'optvals')
-def complete_copy_opt_values(ctxt, cqlsh):
- optnames = ctxt.get_binding('optnames', ())
- lastopt = optnames[-1].lower()
- if lastopt == 'header':
- return ['true', 'false']
- return [cqlhandling.Hint('<single_character_string>')]
-
-class NoKeyspaceError(Exception):
- pass
-
-class KeyspaceNotFound(Exception):
- pass
-
-class ColumnFamilyNotFound(Exception):
- pass
-
-class VersionNotSupported(Exception):
- pass
-
-class DecodeError(Exception):
- def __init__(self, thebytes, err, expectedtype, colname=None):
- self.thebytes = thebytes
- self.err = err
- self.expectedtype = expectedtype
- self.colname = colname
-
- def __str__(self):
- return str(self.thebytes)
-
- def message(self):
- what = 'column name %r' % (self.thebytes,)
- if self.colname is not None:
- what = 'value %r (for column %r)' % (self.thebytes, self.colname)
- return 'Failed to decode %s as %s: %s' % (what, self.expectedtype, self.err)
-
- def __repr__(self):
- return '<%s %s>' % (self.__class__.__name__, self.message())
-
-def full_cql_version(ver):
- while ver.count('.') < 2:
- ver += '.0'
- ver_parts = ver.split('-', 1) + ['']
- vertuple = tuple(map(int, ver_parts[0].split('.')) + [ver_parts[1]])
- return ver, vertuple
-
-def trim_if_present(s, prefix):
- if s.startswith(prefix):
- return s[len(prefix):]
- return s
-
-class FormattedValue:
- def __init__(self, strval, coloredval, displaywidth):
- self.strval = strval
- self.coloredval = coloredval
- self.displaywidth = displaywidth
-
- def __len__(self):
- return len(self.strval)
-
- def _pad(self, width, fill=' '):
- if width > self.displaywidth:
- return fill * (width - self.displaywidth)
- else:
- return ''
-
- def ljust(self, width, fill=' '):
- """
- Similar to self.strval.ljust(width), but takes expected terminal
- display width into account for special characters, and does not
- take color escape codes into account.
- """
- return self.strval + self._pad(width, fill)
-
- def rjust(self, width, fill=' '):
- """
- Similar to self.strval.rjust(width), but takes expected terminal
- display width into account for special characters, and does not
- take color escape codes into account.
- """
- return self._pad(width, fill) + self.strval
-
- def color_rjust(self, width, fill=' '):
- """
- Similar to self.rjust(width), but uses this value's colored
- representation, and does not take color escape codes into account
- in determining width.
- """
- return self._pad(width, fill) + self.coloredval
-
- def color_ljust(self, width, fill=' '):
- """
- Similar to self.ljust(width), but uses this value's colored
- representation, and does not take color escape codes into account
- in determining width.
- """
- return self.coloredval + self._pad(width, fill)
-
-unicode_controlchars_re = re.compile(r'[\x00-\x31\x7f-\xa0]')
-controlchars_re = re.compile(r'[\x00-\x31\x7f-\xff]')
-
-def _show_control_chars(match):
- txt = repr(match.group(0))
- if txt.startswith('u'):
- txt = txt[2:-1]
- else:
- txt = txt[1:-1]
- return txt
-
-bits_to_turn_red_re = re.compile(r'\\([^uUx]|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{2}|U[0-9a-fA-F]{8})')
-
-def _make_turn_bits_red_f(color1, color2):
- def _turn_bits_red(match):
- txt = match.group(0)
- if txt == '\\\\':
- return '\\'
- return color1 + txt + color2
- return _turn_bits_red
-
-DEFAULT_VALUE_COLORS = dict(
- default=YELLOW,
- text=YELLOW,
- error=RED,
- hex=DARK_MAGENTA,
- timestamp=GREEN,
- int=GREEN,
- float=GREEN,
- decimal=GREEN,
- boolean=GREEN,
- uuid=GREEN,
-)
-
-COLUMN_NAME_COLORS = defaultdict(lambda: MAGENTA,
- error=RED,
- hex=DARK_MAGENTA,
-)
-
-def unix_time_from_uuid1(u):
- return (u.get_time() - 0x01B21DD213814000) / 10000000.0
-
-def format_value(val, casstype, output_encoding, addcolor=False, time_format='',
- float_precision=3, colormap=DEFAULT_VALUE_COLORS, nullval='null'):
- color = colormap['default']
- coloredval = None
- displaywidth = None
-
- if val is None:
- bval = nullval
- color = colormap['error']
- elif isinstance(val, DecodeError):
- casstype = 'BytesType'
- bval = repr(val.thebytes)
- color = colormap['hex']
- elif casstype == 'UTF8Type':
- escapedval = val.replace(u'\\', u'\\\\')
- escapedval = unicode_controlchars_re.sub(_show_control_chars, escapedval)
- bval = escapedval.encode(output_encoding, 'backslashreplace')
- displaywidth = wcwidth.wcswidth(bval.decode(output_encoding))
- if addcolor:
- tbr = _make_turn_bits_red_f(colormap['hex'], colormap['text'])
- coloredval = colormap['text'] + bits_to_turn_red_re.sub(tbr, bval) + ANSI_RESET
- elif casstype in ('DateType', 'TimeUUIDType'):
- if casstype == 'TimeUUIDType':
- val = unix_time_from_uuid1(val)
- timestamp = time.localtime(val)
- bval = time.strftime(time_format, timestamp)
- color = colormap['timestamp']
- elif casstype in ('LongType', 'Int32Type', 'IntegerType', 'CounterColumnType'):
- # base-10 only for now; support others?
- bval = str(val)
- color = colormap['int']
- elif casstype in ('FloatType', 'DoubleType'):
- bval = '%.*g' % (float_precision, val)
- color = colormap['float']
- elif casstype in ('DecimalType', 'UUIDType', 'BooleanType'):
- # let python do these for us
- bval = str(val)
- color = colormap[cqlruleset.cql_typename(casstype)]
- elif casstype == 'BytesType':
- bval = ''.join('%02x' % ord(c) for c in val)
- color = colormap['hex']
- else:
- # AsciiType is the only other one known right now, but handle others
- escapedval = val.replace('\\', '\\\\')
- bval = controlchars_re.sub(_show_control_chars, escapedval)
- if addcolor:
- tbr = _make_turn_bits_red_f(colormap['hex'], colormap['text'])
- coloredval = colormap['text'] + bits_to_turn_red_re.sub(tbr, bval) + ANSI_RESET
-
- if displaywidth is None:
- displaywidth = len(bval)
- if not addcolor:
- coloredval = bval
- elif coloredval is None:
- coloredval = color + bval + ANSI_RESET
-
- return FormattedValue(bval, coloredval, displaywidth)
-
-def show_warning_without_quoting_line(message, category, filename, lineno, file=None, line=None):
- if file is None:
- file = sys.stderr
- try:
- file.write(warnings.formatwarning(message, category, filename, lineno, line=''))
- except IOError:
- pass
-warnings.showwarning = show_warning_without_quoting_line
-warnings.filterwarnings('always', category=cql3handling.UnexpectedTableStructure)
-
-def describe_interval(seconds):
- desc = []
- for length, unit in ((86400, 'day'), (3600, 'hour'), (60, 'minute')):
- num = int(seconds) / length
- if num > 0:
- desc.append('%d %s' % (num, unit))
- if num > 1:
- desc[-1] += 's'
- seconds %= length
- words = '%.03f seconds' % seconds
- if len(desc) > 1:
- words = ', '.join(desc) + ', and ' + words
- elif len(desc) == 1:
- words = desc[0] + ' and ' + words
- return words
-
-class Shell(cmd.Cmd):
- default_prompt = "cqlsh> "
- continue_prompt = " ... "
- keyspace_prompt = "cqlsh:%s> "
- keyspace_continue_prompt = "%s ... "
- display_time_format = '%Y-%m-%d %H:%M:%S%z'
- display_float_precision = 3
- num_retries = 4
- show_line_nums = False
- debug = False
- stop = False
- shunted_query_out = None
- csv_dialect_defaults = dict(delimiter=',', doublequote=False,
- escapechar='\\', quotechar='"')
-
- def __init__(self, hostname, port, color=False, username=None,
- password=None, encoding=None, stdin=None, tty=True,
- completekey='tab', use_conn=None, cqlver=None, keyspace=None):
- cmd.Cmd.__init__(self, completekey=completekey)
- self.hostname = hostname
- self.port = port
- self.username = username
- self.password = password
- self.keyspace = keyspace
- if use_conn is not None:
- self.conn = use_conn
- else:
- self.conn = cql.connect(hostname, port, user=username, password=password)
- self.set_expanded_cql_version(cqlver)
- # we could set the keyspace through cql.connect(), but as of 1.0.10,
- # it doesn't quote the keyspace for USE :(
- if keyspace is not None:
- tempcurs = self.conn.cursor()
- tempcurs.execute('USE %s;' % self.cql_protect_name(keyspace))
- tempcurs.close()
- self.cursor = self.conn.cursor()
-
- self.current_keyspace = keyspace
-
- self.color = color
- if encoding is None:
- encoding = locale.getpreferredencoding()
- self.encoding = encoding
- self.output_codec = codecs.lookup(encoding)
-
- self.statement = StringIO()
- self.lineno = 1
- self.in_comment = False
- self.schema_overrides = {}
-
- self.prompt = ''
- if stdin is None:
- stdin = sys.stdin
- self.tty = tty
- if tty:
- self.reset_prompt()
- self.report_connection()
- print 'Use HELP for help.'
- else:
- self.show_line_nums = True
- self.stdin = stdin
- self.query_out = sys.stdout
-
- def set_expanded_cql_version(self, ver):
- ver, vertuple = full_cql_version(ver)
- self.set_cql_version(ver)
- self.cql_version = ver
- self.cql_ver_tuple = vertuple
-
- def cqlver_atleast(self, major, minor=0, patch=0):
- return self.cql_ver_tuple[:3] >= (major, minor, patch)
-
- def myformat_value(self, val, casstype, **kwargs):
- if isinstance(val, DecodeError):
- self.decoding_errors.append(val)
- return format_value(val, casstype, self.output_codec.name,
- addcolor=self.color, time_format=self.display_time_format,
- float_precision=self.display_float_precision, **kwargs)
-
- def myformat_colname(self, name, nametype):
- return self.myformat_value(name, nametype, colormap=COLUMN_NAME_COLORS)
-
- def report_connection(self):
- self.show_host()
- self.show_version()
-
- def show_host(self):
- print "Connected to %s at %s:%d." % \
- (self.applycolor(self.get_cluster_name(), BLUE),
- self.hostname,
- self.port)
-
- def show_version(self):
- vers = self.get_cluster_versions()
- vers['shver'] = version
- # system.Versions['cql'] apparently does not reflect changes with
- # set_cql_version.
- vers['cql'] = self.cql_version
- print "[cqlsh %(shver)s | Cassandra %(build)s | CQL spec %(cql)s | Thrift protocol %(thrift)s]" % vers
-
- def show_assumptions(self):
- all_overrides = self.schema_overrides.items()
- all_overrides.sort()
- if all_overrides:
- print
- else:
- print 'No overrides.'
- return
- for keyspace, ksoverrides in groupby(all_overrides, key=lambda x:x[0][0]):
- keyspace = self.cql_protect_name(keyspace)
- print 'USE %s;' % keyspace
- print
- for (ks, cf), override in ksoverrides:
- cf = self.cql_protect_name(cf)
- if override.default_name_type:
- print 'ASSUME %s NAMES ARE %s;' \
- % (cf, cqlruleset.cql_typename(override.default_name_type))
- if override.default_value_type:
- print 'ASSUME %s VALUES ARE %s;' \
- % (cf, cqlruleset.cql_typename(override.default_value_type))
- for colname, vtype in override.value_types.items():
- colname = self.cql_protect_name(colname)
- print 'ASSUME %s(%s) VALUES ARE %s;' \
- % (cf, colname, cqlruleset.cql_typename(vtype))
- print
-
- def get_cluster_versions(self):
- if self.cqlver_atleast(3):
- query = 'select component, version from system."Versions"'
- else:
- query = 'select component, version from system.Versions'
- try:
- self.cursor.execute(query)
- vers = dict(self.cursor)
- except cql.ProgrammingError:
- # older Cassandra; doesn't have system.Versions
- thrift_ver = self.get_thrift_version()
- return {'build': 'unknown', 'cql': 'unknown', 'thrift': thrift_ver}
- return vers
-
- def fetchdict(self):
- row = self.cursor.fetchone()
- if row is None:
- return None
- desc = self.cursor.description
- return dict(zip([d[0] for d in desc], row))
-
- def fetchdict_all(self):
- dicts = []
- for row in self.cursor:
- desc = self.cursor.description
- dicts.append(dict(zip([d[0] for d in desc], row)))
- return dicts
-
- def get_keyspace_names(self):
- return [k.name for k in self.get_keyspaces()]
-
- def get_columnfamilies(self, ksname=None):
- if ksname is None:
- ksname = self.current_keyspace
- if ksname is None:
- raise NoKeyspaceError("Not in any keyspace.")
- return self.get_keyspace(ksname).cf_defs
-
- def get_columnfamily(self, cfname, ksname=None):
- if ksname is None:
- ksname = self.current_keyspace
- cf_defs = self.get_columnfamilies(ksname)
- for c in cf_defs:
- if c.name == cfname:
- return c
- raise ColumnFamilyNotFound("Unconfigured column family %r" % (cfname,))
-
- def get_columnfamily_names(self, ksname=None):
- return [c.name for c in self.get_columnfamilies(ksname)]
-
- def get_index_names(self, ksname=None):
- indnames = []
- for c in self.get_columnfamilies(ksname):
- for md in c.column_metadata:
- if md.index_name is not None:
- indnames.append(md.index_name)
- return indnames
-
- def filterable_column_names(self, cfdef):
- filterable = set()
- if cfdef.key_alias is not None and cfdef.key_alias != 'KEY':
- filterable.add(cfdef.key_alias)
- else:
- filterable.add('KEY')
- for cm in cfdef.column_metadata:
- if cm.index_name is not None:
- filterable.add(cm.name)
- return filterable
-
- def get_column_names(self, ksname, cfname):
- if ksname is None:
- ksname = self.current_keyspace
- if ksname != 'system' and self.cqlver_atleast(3):
- return self.get_column_names_from_layout(ksname, cfname)
- else:
- return self.get_column_names_from_cfdef(ksname, cfname)
-
- def get_column_names_from_layout(self, ksname, cfname):
- layout = self.get_columnfamily_layout(ksname, cfname)
- return [col.name for col in layout.columns]
-
- def get_column_names_from_cfdef(self, ksname, cfname):
- cfdef = self.get_columnfamily(cfname, ksname=ksname)
- key_alias = cfdef.key_alias
- if key_alias is None:
- key_alias = 'KEY'
- return [key_alias] + [cm.name for cm in cfdef.column_metadata]
-
- # ===== thrift-dependent parts =====
-
- def get_cluster_name(self):
- return self.make_hacktastic_thrift_call('describe_cluster_name')
-
- def get_partitioner(self):
- return self.make_hacktastic_thrift_call('describe_partitioner')
-
- def get_snitch(self):
- return self.make_hacktastic_thrift_call('describe_snitch')
-
- def get_thrift_version(self):
- return self.make_hacktastic_thrift_call('describe_version')
-
- def get_ring(self):
- if self.current_keyspace is None:
- raise NoKeyspaceError("Ring view requires a current non-system keyspace")
- return self.make_hacktastic_thrift_call('describe_ring', self.current_keyspace)
-
- def get_keyspace(self, ksname):
- try:
- return self.make_hacktastic_thrift_call('describe_keyspace', ksname)
- except cql.cassandra.ttypes.NotFoundException, e:
- raise KeyspaceNotFound('Keyspace %s not found.' % e)
-
- def get_keyspaces(self):
- return self.make_hacktastic_thrift_call('describe_keyspaces')
-
- def get_schema_versions(self):
- return self.make_hacktastic_thrift_call('describe_schema_versions')
-
- def set_cql_version(self, ver):
- try:
- return self.make_hacktastic_thrift_call('set_cql_version', ver)
- except cql.cassandra.ttypes.InvalidRequestException, e:
- raise VersionNotSupported(e.why)
-
- def make_hacktastic_thrift_call(self, call, *args):
- client = self.conn.client
- return getattr(client, call)(*args)
-
- # ===== end thrift-dependent parts =====
-
- # ===== cql3-dependent parts =====
-
- def get_columnfamily_layout(self, ksname, cfname):
- if ksname is None:
- ksname = self.current_keyspace
- self.cursor.execute("""select * from system.schema_columnfamilies
- where "keyspace"=:ks and "columnfamily"=:cf""",
- {'ks': ksname, 'cf': cfname})
- layout = self.fetchdict()
- if layout is None:
- raise ColumnFamilyNotFound("Column family %r not found" % cfname)
- self.cursor.execute("""select * from system.schema_columns
- where "keyspace"=:ks and "columnfamily"=:cf""",
- {'ks': ksname, 'cf': cfname})
- cols = self.fetchdict_all()
- return cql3handling.CqlTableDef.from_layout(layout, cols)
-
- # ===== end cql3-dependent parts =====
-
- def reset_statement(self):
- self.reset_prompt()
- self.statement.truncate(0)
-
- def reset_prompt(self):
- if self.current_keyspace is None:
- self.set_prompt(self.default_prompt)
- else:
- self.set_prompt(self.keyspace_prompt % self.current_keyspace)
-
- def set_continue_prompt(self):
- if self.current_keyspace is None:
- self.set_prompt(self.continue_prompt)
- else:
- spaces = ' ' * len(str(self.current_keyspace))
- self.set_prompt(self.keyspace_continue_prompt % spaces)
-
- @contextmanager
- def prepare_loop(self):
- readline = None
- if self.tty and self.completekey:
- try:
- import readline
- except ImportError:
- pass
- else:
- old_completer = readline.get_completer()
- readline.set_completer(self.complete)
- readline.parse_and_bind(self.completekey+": complete")
- try:
- yield
- finally:
- if readline is not None:
- readline.set_completer(old_completer)
-
- def get_input_line(self, prompt=''):
- if self.tty:
- line = raw_input(prompt) + '\n'
- else:
- line = self.stdin.readline()
- if not len(line):
- raise EOFError
- self.lineno += 1
- return line
-
- def use_stdin_reader(self, until='', prompt=''):
- until += '\n'
- while True:
- try:
- newline = self.get_input_line(prompt=prompt)
- except EOFError:
- return
- if newline == until:
- return
- yield newline
-
- def cmdloop(self):
- """
- Adapted from cmd.Cmd's version, because there is literally no way with
- cmd.Cmd.cmdloop() to tell the difference between "EOF" showing up in
- input and an actual EOF.
- """
- with self.prepare_loop():
- while not self.stop:
- try:
- line = self.get_input_line(self.prompt)
- self.statement.write(line)
- if self.onecmd(self.statement.getvalue()):
- self.reset_statement()
- except EOFError:
- self.handle_eof()
- except cql.Error, cqlerr:
- self.printerr(str(cqlerr))
- except KeyboardInterrupt:
- self.reset_statement()
- print
-
- def onecmd(self, statementtext):
- """
- Returns true if the statement is complete and was handled (meaning it
- can be reset).
- """
-
- try:
- statements, in_batch = cqlruleset.cql_split_statements(statementtext)
- except pylexotron.LexingError, e:
- if self.show_line_nums:
- self.printerr('Invalid syntax at char %d' % (e.charnum,))
- else:
- self.printerr('Invalid syntax at line %d, char %d'
- % (e.linenum, e.charnum))
- statementline = statementtext.split('\n')[e.linenum - 1]
- self.printerr(' %s' % statementline)
- self.printerr(' %s^' % (' ' * e.charnum))
- return True
-
- while statements and not statements[-1]:
- statements = statements[:-1]
- if not statements:
- return True
- if in_batch or statements[-1][-1][0] != 'endtoken':
- self.set_continue_prompt()
- return
- for st in statements:
- try:
- self.handle_statement(st, statementtext)
- except Exception, e:
- if self.debug:
- import traceback
- traceback.print_exc()
- else:
- self.printerr(e)
- return True
-
- def handle_eof(self):
- if self.tty:
- print
- statement = self.statement.getvalue()
- if statement.strip():
- if not self.onecmd(statement + ';'):
- self.printerr('Incomplete statement at end of file')
- self.do_exit()
-
- def handle_statement(self, tokens, srcstr):
- cmdword = tokens[0][1]
- if cmdword == '?':
- cmdword = 'help'
- custom_handler = getattr(self, 'do_' + cmdword.lower(), None)
- if custom_handler:
- parsed = cqlruleset.cql_whole_parse_tokens(tokens, srcstr=srcstr,
- startsymbol='cqlshCommand')
- if parsed and not parsed.remainder:
- # successful complete parse
- return custom_handler(parsed)
- else:
- return self.handle_parse_error(cmdword, tokens, parsed, srcstr)
- return self.perform_statement(cqlruleset.cql_extract_orig(tokens, srcstr))
-
- def handle_parse_error(self, cmdword, tokens, parsed, srcstr):
- if cmdword.lower() == 'select':
- # hey, maybe they know about some new syntax we don't. type
- # assumptions won't work, but maybe the query will.
- return self.perform_statement(cqlruleset.cql_extract_orig(tokens, srcstr))
- if parsed:
- self.printerr('Improper %s command (problem at %r).' % (cmdword, parsed.remainder[0]))
- else:
- self.printerr('Improper %s command.' % cmdword)
-
- def do_use(self, parsed):
- """
- USE <keyspacename>;
-
- Tells cqlsh and the connected Cassandra instance that you will be
- working in the given keyspace. All subsequent operations on tables
- or indexes will be in the context of this keyspace, unless otherwise
- specified, until another USE command is issued or the connection
- terminates.
-
- As always, when a keyspace name does not work as a normal identifier or
- number, it can be quoted using single quotes (CQL 2) or double quotes
- (CQL 3).
- """
- ksname = parsed.get_binding('ksname')
- if self.perform_statement(parsed.extract_orig()):
- self.current_keyspace = self.cql_unprotect_name(ksname)
-
- def do_select(self, parsed):
- """
- SELECT [FIRST n] [REVERSED] <selectExpr>
- FROM [<keyspace>.]<table>
- [USING CONSISTENCY <consistencylevel>]
- [WHERE <clause>]
- [ORDER BY <colname> [DESC]]
- [LIMIT m];
-
- SELECT is used to read one or more records from a CQL table. It returns
- a set of rows matching the selection criteria specified.
-
- Note that FIRST and REVERSED are only supported in CQL 2, and ORDER BY
- is only supported in CQL 3 and higher.
-
- For more information, see one of the following:
-
- HELP SELECT_EXPR
- HELP SELECT_TABLE
- HELP SELECT_WHERE
- HELP SELECT_LIMIT
- HELP CONSISTENCYLEVEL
- """
- ksname = parsed.get_binding('ksname')
- if ksname is not None:
- ksname = self.cql_unprotect_name(ksname)
- cfname = self.cql_unprotect_name(parsed.get_binding('cfname'))
- decoder = self.determine_decoder_for(cfname, ksname=ksname)
- self.perform_statement(parsed.extract_orig(), decoder=decoder)
-
- def perform_statement(self, statement, decoder=None):
- if not statement:
- return False
- trynum = 1
- while True:
- try:
- self.cursor.execute(statement, decoder=decoder)
- break
- except cql.IntegrityError, err:
- self.printerr("Attempt #%d: %s" % (trynum, str(err)))
- trynum += 1
- if trynum > self.num_retries:
- return False
- time.sleep(1*trynum)
- except CQL_ERRORS, err:
- self.printerr(str(err))
- return False
- except Exception, err:
- import traceback
- self.printerr(traceback.format_exc())
- return False
-
- if self.cursor.description is _COUNT_DESCRIPTION:
- self.print_count_result(self.cursor)
- elif self.cursor.description is not _VOID_DESCRIPTION:
- self.print_result(self.cursor)
- return True
-
- def determine_decoder_for(self, cfname, ksname=None):
- decoder = ErrorHandlingSchemaDecoder
- if ksname is None:
- ksname = self.current_keyspace
- overrides = self.schema_overrides.get((ksname, cfname), None)
- if overrides:
- decoder = partial(decoder, overrides=overrides)
- return decoder
-
- def get_nametype(self, cursor, num):
- """
- Determine the Cassandra type of a column name from the current row of
- query results on the given cursor. The column in question is given by
- its zero-based ordinal number within the row.
-
- This is necessary to differentiate some things like ascii vs. blob hex.
- """
-
- if getattr(cursor, 'supports_name_info', False):
- return cursor.name_info[num][1]
-
- # This is a pretty big hack, but necessary until we can rely on
- # python-cql 1.0.10 being around.
- row = cursor.result[cursor.rs_idx - 1]
- col = row.columns[num]
- schema = cursor.decoder.schema
- return schema.name_types.get(col.name, schema.default_name_type)
-
- def print_count_result(self, cursor):
- if not cursor.result:
- return
- self.writeresult('count')
- self.writeresult('-----')
- self.writeresult(cursor.result[0])
- self.writeresult("")
-
- def print_result(self, cursor):
- self.decoding_errors = []
-
- # first pass: see if we have a static column set
- last_description = None
- for row in cursor:
- if last_description is not None and cursor.description != last_description:
- static = False
- break
- last_description = cursor.description
- else:
- static = True
- cursor._reset()
-
- if static:
- self.print_static_result(cursor)
- else:
- self.print_dynamic_result(cursor)
- self.writeresult("")
-
- if self.decoding_errors:
- for err in self.decoding_errors[:2]:
- self.writeresult(err.message(), color=RED)
- if len(self.decoding_errors) > 2:
- self.writeresult('%d more decoding errors suppressed.'
- % (len(self.decoding_errors) - 2), color=RED)
-
- def print_static_result(self, cursor):
- colnames, coltypes = zip(*cursor.description)[:2]
- colnames_t = [(name, self.get_nametype(cursor, n)) for (n, name) in enumerate(colnames)]
- formatted_names = [self.myformat_colname(name, nametype) for (name, nametype) in colnames_t]
- formatted_data = [map(self.myformat_value, row, coltypes) for row in cursor]
-
- # determine column widths
- widths = [n.displaywidth for n in formatted_names]
- for fmtrow in formatted_data:
- for num, col in enumerate(fmtrow):
- widths[num] = max(widths[num], col.displaywidth)
-
- # print header
- header = ' | '.join(hdr.color_ljust(w) for (hdr, w) in zip(formatted_names, widths))
- self.writeresult(' ' + header.rstrip())
- self.writeresult('-%s-' % '-+-'.join('-' * w for w in widths))
-
- # print row data
- for row in formatted_data:
- line = ' | '.join(col.color_rjust(w) for (col, w) in zip(row, widths))
- self.writeresult(' ' + line)
-
- def print_dynamic_result(self, cursor):
- for row in cursor:
- colnames, coltypes = zip(*cursor.description)[:2]
- colnames_t = [(name, self.get_nametype(cursor, n)) for (n, name) in enumerate(colnames)]
- colnames = [self.myformat_colname(name, nametype) for (name, nametype) in colnames_t]
- colvals = [self.myformat_value(val, casstype) for (val, casstype) in zip(row, coltypes)]
- line = ' | '.join('%s,%s' % (n.coloredval, v.coloredval) for (n, v) in zip(colnames, colvals))
- self.writeresult(' ' + line)
-
- def emptyline(self):
- pass
-
- def parseline(self, line):
- # this shouldn't be needed
- raise NotImplementedError
-
- def complete(self, text, state):
- if readline is None:
- return
- if state == 0:
- try:
- self.completion_matches = self.find_completions(text)
- except Exception:
- if debug_completion:
- import traceback
- traceback.print_exc()
- else:
- raise
- try:
- return self.completion_matches[state]
- except IndexError:
- return None
-
- def find_completions(self, text):
- curline = readline.get_line_buffer()
- prevlines = self.statement.getvalue()
- wholestmt = prevlines + curline
- begidx = readline.get_begidx() + len(prevlines)
- endidx = readline.get_endidx() + len(prevlines)
- stuff_to_complete = wholestmt[:begidx]
- return cqlruleset.cql_complete(stuff_to_complete, text, cassandra_conn=self,
- debug=debug_completion, startsymbol='cqlshCommand')
-
- def set_prompt(self, prompt):
- self.prompt = prompt
-
- def cql_protect_name(self, name):
- return cqlruleset.maybe_escape_name(name)
-
- def cql_protect_value(self, value):
- return cqlruleset.escape_value(value)
-
- def cql_unprotect_name(self, namestr):
- if namestr is None:
- return
- return cqlruleset.dequote_name(namestr)
-
- def cql_unprotect_value(self, valstr):
- if valstr is not None:
- return cqlruleset.dequote_value(valstr)
-
- def print_recreate_keyspace(self, ksdef, out):
- stratclass = trim_if_present(ksdef.strategy_class, 'org.apache.cassandra.locator.')
- ksname = self.cql_protect_name(ksdef.name)
- out.write("CREATE KEYSPACE %s WITH strategy_class = %s"
- % (ksname, self.cql_protect_value(stratclass)))
- for opname, opval in ksdef.strategy_options.iteritems():
- out.write("\n AND strategy_options:%s = %s" % (opname, self.cql_protect_value(opval)))
- out.write(';\n')
-
- if ksdef.cf_defs:
- out.write('\nUSE %s;\n' % ksname)
- for cf in ksdef.cf_defs:
- out.write('\n')
- # yes, cf might be looked up again. oh well.
- self.print_recreate_columnfamily(ksdef.name, cf.name, out)
-
- def print_recreate_columnfamily(self, ksname, cfname, out):
- """
- Output CQL commands which should be pasteable back into a CQL session
- to recreate the given table. Can change based on CQL version in use;
- CQL 3 syntax will not be output when in CQL 2 mode, and properties
- which are deprecated with CQL 3 use (like default_validation) will not
- be output when in CQL 3 mode.
-
- Writes output to the given out stream.
- """
-
- # no metainfo available from system.schema_* for system CFs, so we have
- # to use cfdef-based description for those.
-
- if ksname != 'system' \
- and self.cqlver_atleast(3):
- try:
- layout = self.get_columnfamily_layout(ksname, cfname)
- except CQL_ERRORS:
- # most likely a 1.1 beta where cql3 is supported, but not system.schema_*
- pass
- else:
- return self.print_recreate_columnfamily_from_layout(layout, out)
-
- cfdef = self.get_columnfamily(cfname, ksname=ksname)
- return self.print_recreate_columnfamily_from_cfdef(cfdef, out)
-
- def print_recreate_columnfamily_from_cfdef(self, cfdef, out):
- cfname = self.cql_protect_name(cfdef.name)
- out.write("CREATE TABLE %s (\n" % cfname)
- alias = self.cql_protect_name(cfdef.key_alias) if cfdef.key_alias else 'KEY'
- keytype = cqlruleset.cql_typename(cfdef.key_validation_class)
- out.write(" %s %s PRIMARY KEY" % (alias, keytype))
- indexed_columns = []
- for col in cfdef.column_metadata:
- colname = self.cql_protect_name(col.name)
- out.write(",\n %s %s" % (colname, cqlruleset.cql_typename(col.validation_class)))
- if col.index_name is not None:
- indexed_columns.append(col)
- cf_opts = []
- for (option, thriftname) in cqlruleset.columnfamily_options:
- optval = getattr(cfdef, thriftname or option, None)
- if optval is None:
- continue
- if option in ('comparator', 'default_validation'):
- optval = cqlruleset.cql_typename(optval)
- else:
- if option == 'row_cache_provider':
- optval = trim_if_present(optval, 'org.apache.cassandra.cache.')
- elif option == 'compaction_strategy_class':
- optval = trim_if_present(optval, 'org.apache.cassandra.db.compaction.')
- optval = self.cql_protect_value(optval)
- cf_opts.append((option, optval))
- for option, thriftname, _ in cqlruleset.columnfamily_map_options:
- optmap = getattr(cfdef, thriftname or option, {})
- for k, v in optmap.items():
- if option == 'compression_parameters' and k == 'sstable_compression':
- v = trim_if_present(v, 'org.apache.cassandra.io.compress.')
- cf_opts.append(('%s:%s' % (option, k), self.cql_protect_value(v)))
- out.write('\n)')
- if cf_opts:
- joiner = 'WITH'
- for optname, optval in cf_opts:
- out.write(" %s\n %s=%s" % (joiner, optname, optval))
- joiner = 'AND'
- out.write(";\n")
-
- for col in indexed_columns:
- out.write('\n')
- # guess CQL can't represent index_type or index_options
- out.write('CREATE INDEX %s ON %s (%s);\n'
- % (col.index_name, cfname, self.cql_protect_name(col.name)))
-
- def print_recreate_columnfamily_from_layout(self, layout, out):
- cfname = self.cql_protect_name(layout.name)
- out.write("CREATE TABLE %s (\n" % cfname)
- keycol = layout.columns[0]
- out.write(" %s %s" % (self.cql_protect_name(keycol.name), keycol.cqltype))
- if len(layout.key_components) == 1:
- out.write(" PRIMARY KEY")
-
- indexed_columns = []
- for col in layout.columns[1:]:
- colname = self.cql_protect_name(col.name)
- out.write(",\n %s %s" % (colname, col.cqltype))
- if col.index_name is not None:
- indexed_columns.append(col)
-
- if len(layout.key_components) > 1:
- out.write(",\n PRIMARY KEY (%s)" % ', '.join(map(self.cql_protect_name, layout.key_components)))
- out.write("\n)")
- joiner = 'WITH'
-
- if layout.compact_storage:
- out.write(' WITH COMPACT STORAGE')
- joiner = 'AND'
-
- cf_opts = []
- for option in cqlruleset.columnfamily_layout_options:
- optval = getattr(layout, option, None)
- if optval is None:
- continue
- if option == 'row_cache_provider':
- optval = trim_if_present(optval, 'org.apache.cassandra.cache.')
- elif option == 'compaction_strategy_class':
- optval = trim_if_present(optval, 'org.apache.cassandra.db.compaction.')
- cf_opts.append((option, self.cql_protect_value(optval)))
- for option, _ in cqlruleset.columnfamily_layout_map_options:
- optmap = getattr(layout, option, {})
- for k, v in optmap.items():
- if option == 'compression_parameters' and k == 'sstable_compression':
- v = trim_if_present(v, 'org.apache.cassandra.io.compress.')
- cf_opts.append(('%s:%s' % (option, k.encode('ascii')), self.cql_protect_value(v)))
- if cf_opts:
- for optname, optval in cf_opts:
- out.write(" %s\n %s=%s" % (joiner, optname, optval))
- joiner = 'AND'
- out.write(";\n")
-
- for col in indexed_columns:
- out.write('\n')
- # guess CQL can't represent index_type or index_options
- out.write('CREATE INDEX %s ON %s (%s);\n'
- % (col.index_name, cfname, self.cql_protect_name(col.name)))
-
- def describe_keyspace(self, ksname):
- print
- self.print_recreate_keyspace(self.get_keyspace(ksname), sys.stdout)
- print
-
- def describe_columnfamily(self, ksname, cfname):
- if ksname is None:
- ksname = self.current_keyspace
- print
- self.print_recreate_columnfamily(ksname, cfname, sys.stdout)
- print
-
- def describe_columnfamilies(self, ksname):
- if ksname is None:
- for k in self.get_keyspaces():
- print 'Keyspace %s' % (k.name,)
- print '---------%s\n' % ('-' * len(k.name))
- cmd.Cmd.columnize(self, [c.name for c in k.cf_defs])
- print
- else:
- names = self.get_columnfamily_names(ksname)
- print
- cmd.Cmd.columnize(self, names)
- print
-
- def describe_cluster(self):
- print 'Cluster: %s' % self.get_cluster_name()
- p = trim_if_present(self.get_partitioner(), 'org.apache.cassandra.dht.')
- print 'Partitioner: %s' % p
- snitch = trim_if_present(self.get_snitch(), 'org.apache.cassandra.locator.')
- print 'Snitch: %s\n' % snitch
- if self.current_keyspace is not None and self.current_keyspace != 'system':
- print "Range ownership:"
- ring = self.get_ring()
- for entry in ring:
- print ' %39s [%s]' % (entry.start_token, ', '.join(entry.endpoints))
- print
-
- def describe_schema(self):
- print
- for k in self.get_keyspaces():
- self.print_recreate_keyspace(k, sys.stdout)
- print
-
- def do_describe(self, parsed):
- """
- DESCRIBE [cqlsh only]
-
- (DESC may be used as a shorthand.)
-
- Outputs information about the connected Cassandra cluster, or about
- the data stored on it. Use in one of the following ways:
-
- DESCRIBE KEYSPACE [<keyspacename>]
-
- Output CQL commands that could be used to recreate the given
- keyspace, and the tables in it. In some cases, as the CQL interface
- matures, there will be some metadata about a keyspace that is not
- representable with CQL. That metadata will not be shown.
-
- The '<keyspacename>' argument may be omitted when using a non-system
- keyspace; in that case, the current keyspace will be described.
-
- DESCRIBE TABLES
-
- Output the names of all tables in the current keyspace, or in all
- keyspaces if there is no current keyspace.
-
- DESCRIBE TABLE <tablename>
-
- Output CQL commands that could be used to recreate the given table.
- In some cases, as above, there may be table metadata which is not
- representable and which will not be shown.
-
- DESCRIBE CLUSTER
-
- Output information about the connected Cassandra cluster, such as the
- cluster name, and the partitioner and snitch in use. When you are
- connected to a non-system keyspace, also shows endpoint-range
- ownership information for the Cassandra ring.
-
- DESCRIBE SCHEMA
-
- Output CQL commands that could be used to recreate the entire schema.
- Works as though "DESCRIBE KEYSPACE k" was invoked for each keyspace
- k.
- """
-
- what = parsed.matched[1][1].lower()
- if what == 'keyspace':
- ksname = self.cql_unprotect_name(parsed.get_binding('ksname', ''))
- if not ksname:
- ksname = self.current_keyspace
- if ksname is None:
- self.printerr('Not in any keyspace.')
- return
- self.describe_keyspace(ksname)
- elif what in ('columnfamily', 'table'):
- ks = self.cql_unprotect_name(parsed.get_binding('ksname', None))
- cf = self.cql_unprotect_name(parsed.get_binding('cfname'))
- self.describe_columnfamily(ks, cf)
- elif what in ('columnfamilies', 'tables'):
- self.describe_columnfamilies(self.current_keyspace)
- elif what == 'cluster':
- self.describe_cluster()
- elif what == 'schema':
- self.describe_schema()
-
- do_desc = do_describe
-
- def do_copy(self, parsed):
- r"""
- COPY [cqlsh only]
-
- COPY x FROM: Imports CSV data into a Cassandra table
- COPY x TO: Exports data from a Cassandra table in CSV format.
-
- COPY <table_name> [ ( column [, ...] ) ]
- FROM ( '<filename>' | STDIN )
- [ WITH <option>='value' [AND ...] ];
-
- COPY <table_name> [ ( column [, ...] ) ]
- TO ( '<filename>' | STDOUT )
- [ WITH <option>='value' [AND ...] ];
-
- Available options and defaults:
-
- DELIMITER=',' - character that appears between records
- QUOTE='"' - quoting character to be used to quote fields
- ESCAPE='\' - character to appear before the QUOTE char when quoted
- HEADER=false - whether to ignore the first line
- ENCODING='utf8' - encoding for CSV output (COPY TO only)
- NULL='' - string that represents a null value (COPY TO only)
-
- When entering CSV data on STDIN, you can use the sequence "\."
- on a line by itself to end the data input.
- """
-
- ks = self.cql_unprotect_name(parsed.get_binding('ksname', None))
- if ks is None:
- ks = self.current_keyspace
- if ks is None:
- raise NoKeyspaceError("Not in any keyspace.")
- cf = self.cql_unprotect_name(parsed.get_binding('cfname'))
- columns = parsed.get_binding('colnames', None)
- if columns is not None:
- columns = map(self.cql_unprotect_name, columns)
- fname = parsed.get_binding('fname', None)
- if fname is not None:
- fname = os.path.expanduser(self.cql_unprotect_value(fname))
- copyoptnames = map(str.lower, parsed.get_binding('optnames', ()))
- copyoptvals = map(self.cql_unprotect_value, parsed.get_binding('optvals', ()))
- opts = dict(zip(copyoptnames, copyoptvals))
-
- timestart = time.time()
-
- direction = parsed.get_binding('dir').upper()
- if direction == 'FROM':
- rows = self.perform_csv_import(ks, cf, columns, fname, opts)
- verb = 'imported'
- elif direction == 'TO':
- rows = self.perform_csv_export(ks, cf, columns, fname, opts)
- verb = 'exported'
- else:
- raise SyntaxError("Unknown direction %s" % direction)
-
- timeend = time.time()
- print "%d rows %s in %s." % (rows, verb, describe_interval(timeend - timestart))
-
- def perform_csv_import(self, ks, cf, columns, fname, opts):
- dialect_options = self.csv_dialect_defaults.copy()
- if 'quote' in opts:
- dialect_options['quotechar'] = opts.pop('quote')
- if 'escape' in opts:
- dialect_options['escapechar'] = opts.pop('escape')
- if 'delimiter' in opts:
- dialect_options['delimiter'] = opts.pop('delimiter')
- header = bool(opts.pop('header', '').lower() == 'true')
- if dialect_options['quotechar'] == dialect_options['escapechar']:
- dialect_options['doublequote'] = True
- del dialect_options['escapechar']
- if opts:
- self.printerr('Unrecognized COPY FROM options: %s'
- % ', '.join(opts.keys()))
- return 0
-
- if fname is None:
- do_close = False
- print "[Use \. on a line by itself to end input]"
- linesource = self.use_stdin_reader(prompt='[copy] ', until=r'\.')
- else:
- do_close = True
- try:
- linesource = open(fname, 'rb')
- except IOError, e:
- self.printerr("Can't open %r for reading: %s" % (fname, e))
- return 0
- try:
- if header:
- linesource.next()
- numcol, prepq = self.prep_import_insert(ks, cf, columns)
- rownum = -1
- reader = csv.reader(linesource, **dialect_options)
- for rownum, row in enumerate(reader):
- if len(row) != numcol:
- self.printerr("Record #%d (line %d) has the wrong number of fields "
- "(%d instead of %d)."
- % (rownum, reader.line_num, len(row), numcol))
- return rownum
- if not self.do_import_insert(prepq, row):
- self.printerr("Aborting import at record #%d (line %d). "
- "Previously-inserted values still present."
- % (rownum, reader.line_num))
- return rownum
- finally:
- if do_close:
- linesource.close()
- elif self.tty:
- print
- return rownum + 1
-
- def prep_import_insert(self, ks, cf, columns):
- if columns is None:
- # default to all known columns
- columns = self.get_column_names(ks, cf)
-
- # would be nice to be able to use a prepared query here, but in order
- # to use that interface, we'd need to have all the input as native
- # values already, reading them from text just like the various
- # Cassandra cql types do. Better just to submit them all as intact
- # CQL string literals and let Cassandra do its thing.
- return len(columns), 'INSERT INTO %s.%s (%s) VALUES (%%s)' % (
- self.cql_protect_name(ks),
- self.cql_protect_name(cf),
- ', '.join(map(self.cql_protect_name, columns))
- )
-
- def do_import_insert(self, prepq, rowvalues):
- valstring = ', '.join(map(self.cql_protect_value, rowvalues))
- cql = prepq % valstring
- if self.debug:
- print "Import using CQL: %s" % cql
- return self.perform_statement(cql)
-
- def perform_csv_export(self, ks, cf, columns, fname, opts):
- dialect_options = self.csv_dialect_defaults.copy()
- if 'quote' in opts:
- dialect_options['quotechar'] = opts.pop('quote')
- if 'escape' in opts:
- dialect_options['escapechar'] = opts.pop('escape')
- if 'delimiter' in opts:
- dialect_options['delimiter'] = opts.pop('delimiter')
- encoding = opts.pop('encoding', 'utf8')
- nullval = opts.pop('null', '')
- header = bool(opts.pop('header', '').lower() == 'true')
- if dialect_options['quotechar'] == dialect_options['escapechar']:
- dialect_options['doublequote'] = True
- del dialect_options['escapechar']
-
- if opts:
- self.printerr('Unrecognized COPY TO options: %s'
- % ', '.join(opts.keys()))
- return 0
-
- if fname is None:
- do_close = False
- csvdest = sys.stdout
- else:
- do_close = True
- try:
- csvdest = open(fname, 'wb')
- except IOError, e:
- self.printerr("Can't open %r for writing: %s" % (fname, e))
- return 0
- try:
- self.prep_export_dump(ks, cf, columns)
- writer = csv.writer(csvdest, **dialect_options)
- if header:
- writer.writerow([d[0] for d in self.cursor.description])
- rows = 0
- while True:
- row = self.cursor.fetchone()
- if row is None:
- break
- fmt = lambda v, d: \
- format_value(v, d[1], output_encoding=encoding, nullval=nullval,
- time_format=self.display_time_format,
- float_precision=self.display_float_precision).strval
- writer.writerow(map(fmt, row, self.cursor.description))
- rows += 1
- finally:
- if do_close:
- csvdest.close()
- return rows
-
- def prep_export_dump(self, ks, cf, columns):
- if columns is None:
- columnlist = '*'
- else:
- columnlist = ', '.join(map(self.cql_protect_name, columns))
- # this limit is pretty awful. would be better to use row-key-paging, so
- # that the dump could be pretty easily aborted if necessary, but that
- # can be kind of tricky with cql3. Punt for now, until the real cursor
- # API is added in CASSANDRA-4415.
- query = 'SELECT %s FROM %s.%s LIMIT 99999999' \
- % (columnlist, self.cql_protect_name(ks), self.cql_protect_name(cf))
- self.cursor.execute(query)
-
- def do_show(self, parsed):
- """
- SHOW [cqlsh only]
-
- Displays information about the current cqlsh session. Can be called in
- the following ways:
-
- SHOW VERSION
-
- Shows the version and build of the connected Cassandra instance, as
- well as the versions of the CQL spec and the Thrift protocol that
- the connected Cassandra instance understands.
-
- SHOW HOST
-
- Shows where cqlsh is currently connected.
-
- SHOW ASSUMPTIONS
-
- Outputs the current list of type assumptions as specified by the
- user. See the help for the ASSUME command for more information.
- """
-
- showwhat = parsed.get_binding('what').lower()
- if showwhat == 'version':
- self.show_version()
- elif showwhat == 'host':
- self.show_host()
- elif showwhat == 'assumptions':
- self.show_assumptions()
- else:
- self.printerr('Wait, how do I show %r?' % (showwhat,))
-
- def do_assume(self, parsed):
- """
- ASSUME [cqlsh only]
-
- Instruct cqlsh to consider certain column names or values to be of a
- specified type, even if that type information is not specified in
- the table's metadata. Data will be deserialized according to the
- given type, and displayed appropriately when retrieved.
-
- Use thus:
-
- ASSUME [<keyspace>.]<tablename> NAMES ARE <type>;
-
- Treat all column names in the given table as being of the
- given type.
-
- ASSUME [<keyspace>.]<tablename> VALUES ARE <type>;
-
- Treat all column values in the given table as being of the
- given type, unless there is more information about the specific
- column being deserialized. That is, a column-specific ASSUME will
- take precedence here, as will column-specific metadata in the
- table's definition.
-
- ASSUME [<keyspace>.]<tablename>(<colname>) VALUES ARE <type>;
-
- Treat all values in the given column in the given table as
- being of the specified type. This overrides any other information
- about the type of a value.
-
- Assign multiple overrides at once for the same table by
- separating with commas:
-
- ASSUME ks.table NAMES ARE uuid, VALUES ARE int, (col) VALUES ARE ascii
-
- See HELP TYPES for information on the supported data storage types.
- """
-
- ks = self.cql_unprotect_name(parsed.get_binding('ksname', None))
- cf = self.cql_unprotect_name(parsed.get_binding('cfname'))
- colname = self.cql_unprotect_name(parsed.get_binding('colname', None))
-
- params = {}
- for paramname in ('names', 'values', 'colvalues'):
- val = parsed.get_binding(paramname, None)
- params[paramname] = self.cql_unprotect_value(val)
- if ks is None:
- if self.current_keyspace is None:
- self.printerr('Error: not in any keyspace.')
- return
- ks = self.current_keyspace
-
- for overridetype in ('names', 'values', 'colvalues'):
- cqltype = params[overridetype]
- if cqltype is None:
- continue
- try:
- validator_class = cqlruleset.find_validator_class(cqltype)
- except KeyError:
- self.printerr('Error: validator type %s not found.' % cqltype)
- else:
- self.add_assumption(ks, cf, colname, overridetype, validator_class)
-
- def do_source(self, parsed):
- """
- SOURCE [cqlsh only]
-
- Executes a file containing CQL statements. Gives the output for each
- statement in turn, if any, or any errors that occur along the way.
-
- Errors do NOT abort execution of the CQL source file.
-
- Usage:
-
- SOURCE '<file>';
-
- That is, the path to the file to be executed must be given inside a
- string literal. The path is interpreted relative to the current working
- directory. The tilde shorthand notation ('~/mydir') is supported for
- referring to $HOME.
-
- See also the --file option to cqlsh.
- """
-
- fname = parsed.get_binding('fname')
- fname = os.path.expanduser(self.cql_unprotect_value(fname))
- try:
- f = open(fname, 'r')
- except IOError, e:
- self.printerr('Could not open %r: %s' % (fname, e))
- return
- subshell = Shell(self.hostname, self.port, color=self.color,
- encoding=self.encoding, stdin=f, tty=False,
- use_conn=self.conn, cqlver=self.cql_version)
- subshell.cmdloop()
- f.close()
-
- def do_capture(self, parsed):
- """
- CAPTURE [cqlsh only]
-
- Begins capturing command output and appending it to a specified file.
- Output will not be shown at the console while it is captured.
-
- Usage:
-
- CAPTURE '<file>';
- CAPTURE OFF;
- CAPTURE;
-
- That is, the path to the file to be appended to must be given inside a
- string literal. The path is interpreted relative to the current working
- directory. The tilde shorthand notation ('~/mydir') is supported for
- referring to $HOME.
-
- Only query result output is captured. Errors and output from cqlsh-only
- commands will still be shown in the cqlsh session.
-
- To stop capturing output and show it in the cqlsh session again, use
- CAPTURE OFF.
-
- To inspect the current capture configuration, use CAPTURE with no
- arguments.
- """
-
- fname = parsed.get_binding('fname')
- if fname is None:
- if self.shunted_query_out is not None:
- print "Currently capturing query output to %r." % (self.query_out.name,)
- else:
- print "Currently not capturing query output."
- return
-
- if fname.upper() == 'OFF':
- if self.shunted_query_out is None:
- self.printerr('Not currently capturing output.')
- return
- self.query_out.close()
- self.query_out = self.shunted_query_out
- self.color = self.shunted_color
- self.shunted_query_out = None
- del self.shunted_color
- return
-
- if self.shunted_query_out is not None:
- self.printerr('Already capturing output to %s. Use CAPTURE OFF'
- ' to disable.' % (self.query_out.name,))
- return
-
- fname = os.path.expanduser(self.cql_unprotect_value(fname))
- try:
- f = open(fname, 'a')
- except IOError, e:
- self.printerr('Could not open %r for append: %s' % (fname, e))
- return
- self.shunted_query_out = self.query_out
- self.shunted_color = self.color
- self.query_out = f
- self.color = False
- print 'Now capturing query output to %r.' % (fname,)
-
- def do_exit(self, parsed=None):
- """
- EXIT/QUIT [cqlsh only]
-
- Exits cqlsh.
- """
- self.stop = True
- do_quit = do_exit
-
- def do_debug(self, parsed):
- import pdb
- pdb.set_trace()
-
- def get_names(self):
- names = cmd.Cmd.get_names(self)
- for hide_from_help in ('do_quit',):
- names.remove(hide_from_help)
- return names
-
- def columnize(self, slist, *a, **kw):
- return cmd.Cmd.columnize(self, [u.upper() for u in slist], *a, **kw)
-
- def do_help(self, parsed):
- """
- HELP [cqlsh only]
-
- Gives information about cqlsh commands. To see available topics,
- enter "HELP" without any arguments. To see help on a topic,
- use "HELP <topic>".
- """
- topics = parsed.get_binding('topic', ())
- if not topics:
- return cmd.Cmd.do_help(self, '')
- for t in topics:
- cmd.Cmd.do_help(self, self.cql_unprotect_value(t).lower())
-
- def help_types(self):
- print "\n CQL types recognized by this version of cqlsh:\n"
- for t in cqlruleset.cql_types:
- print ' ' + t
- print """
- For information on the various recognizable input formats for these
- types, or on controlling the formatting of cqlsh query output, see
- one of the following topics:
-
- HELP TIMESTAMP_INPUT
- HELP BLOB_INPUT
- HELP UUID_INPUT
- HELP BOOLEAN_INPUT
-
- HELP TEXT_OUTPUT
- HELP TIMESTAMP_OUTPUT
- """
-
- def help_timestamp_input(self):
- print """
- Timestamp input
-
- CQL supports any of the following ISO 8601 formats for timestamp
- specification:
-
- yyyy-mm-dd HH:mm
- yyyy-mm-dd HH:mm:ss
- yyyy-mm-dd HH:mmZ
- yyyy-mm-dd HH:mm:ssZ
- yyyy-mm-dd'T'HH:mm
- yyyy-mm-dd'T'HH:mmZ
- yyyy-mm-dd'T'HH:mm:ss
- yyyy-mm-dd'T'HH:mm:ssZ
- yyyy-mm-dd
- yyyy-mm-ddZ
-
- The Z in these formats refers to an RFC-822 4-digit time zone,
- expressing the time zone's difference from UTC. For example, a
- timestamp in Pacific Standard Time might be given thus:
-
- 2012-01-20 16:14:12-0800
-
- If no time zone is supplied, the current time zone for the Cassandra
- server node will be used.
- """
-
- def help_blob_input(self):
- print """
- Blob input
-
- CQL blob data must be specified in a string literal as hexidecimal
- data. Example: to store the ASCII values for the characters in the
- string "CQL", use '43514c'.
- """
-
- def help_uuid_input(self):
- print """
- UUID input
-
- UUIDs may be specified in CQL using 32 hexidecimal characters,
- split up using dashes in the standard UUID format:
-
- XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- """
-
- def help_boolean_input(self):
- print """
- Boolean input
-
- CQL accepts the strings 'true' and 'false' (case insensitive)
- as input for boolean types.
- """
-
- def help_text_output(self):
- print """
- Textual output
-
- When control characters, or other characters which can't be encoded
- in your current locale, are found in values of 'text' or 'ascii'
- types, it will be shown as a backslash escape. If color is enabled,
- any such backslash escapes will be shown in a different color from
- the surrounding text.
-
- Unicode code points in your data will be output intact, if the
- encoding for your locale is capable of decoding them. If you prefer
- that non-ascii characters be shown with Python-style "\\uABCD"
- escape sequences, invoke cqlsh with an ASCII locale (for example,
- by setting the $LANG environment variable to "C").
- """
-
- help_ascii_output = help_text_output
-
- def help_timestamp_output(self):
- print """
- Timestamp output
-
- Cqlsh will display timestamps in this format:
-
- yyyy-mm-dd HH:mm:ssZ
-
- which is a format acceptable as CQL timestamp input as well. It is
- planned that cqlsh should allow the user to change that output format
- if desired, but that feature is not yet available.
- """
-
- def help_select_expr(self):
- print """
- SELECT: Specifying Columns
-
- SELECT [FIRST n] [REVERSED] name1, name2, name3 FROM ...
- SELECT [FIRST n] [REVERSED] name1..nameN FROM ...
- SELECT COUNT(*) FROM ...
-
- The SELECT expression determines which columns will appear in the
- results and takes the form of either a comma separated list of names,
- or a range. The range notation consists of a start and end column name
- separated by two periods (..). The set of columns returned for a
- range is start and end inclusive.
-
- The FIRST option accepts an integer argument and can be used to apply a
- limit to the number of columns returned per row. When this limit is
- left unset, it defaults to 10,000 columns.
-
- The REVERSED option causes the sort order of the results to be
- reversed.
-
- It is worth noting that unlike the projection in a SQL SELECT, there is
- no guarantee that the results will contain all of the columns
- specified. This is because Cassandra is schema-less and there are no
- guarantees that a given column exists.
-
- When the COUNT aggregate function is specified as a column to fetch, a
- single row will be returned, with a single column named "count" whose
- value is the number of rows from the pre-aggregation resultset.
-
- Currently, COUNT is the only function supported by CQL.
-
- ** [FIRST n] and [REVERSED] are no longer supported in CQL 3.
- """
-
- def help_select_table(self):
- print """
- SELECT: Specifying Table
-
- SELECT ... FROM [<keyspace>.]<tablename> ...
-
- The FROM clause is used to specify the CQL table applicable to a SELECT
- query. The keyspace in which the table exists can optionally be
- specified along with the table name, separated by a dot (.). This will
- not change the current keyspace of the session (see HELP USE).
- """
- help_select_columnfamily = help_select_table
-
- def help_select_where(self):
- print """
- SELECT: Filtering rows
-
- SELECT ... WHERE <key> = keyname AND name1 = value1
- SELECT ... WHERE <key> >= startkey and <key> =< endkey AND name1 = value1
- SELECT ... WHERE <key> IN ('<key>', '<key>', '<key>', ...)
-
- The WHERE clause provides for filtering the rows that appear in
- results. The clause can filter on a key name, or range of keys, and in
- the case of indexed columns, on column values. Key filters are
- specified using the KEY keyword or key alias name, a relational
- operator (one of =, >, >=, <, and <=), and a term value. When terms
- appear on both sides of a relational operator it is assumed the filter
- applies to an indexed column. With column index filters, the term on
- the left of the operator is the name, the term on the right is the
- value to filter _on_.
-
- Note: The greater-than and less-than operators (> and <) result in key
- ranges that are inclusive of the terms. There is no supported notion of
- "strictly" greater-than or less-than; these operators are merely
- supported as aliases to >= and <=.
- """
-
- def help_select_limit(self):
- print """
- SELECT: Limiting results
-
- SELECT ... WHERE <clause> [LIMIT n] ...
-
- Limiting the number of rows returned can be achieved by adding the
- LIMIT option to a SELECT expression. LIMIT defaults to 10,000 when left
- unset.
- """
-
- def help_consistencylevel(self):
- print """
- Consistency Level Specification
-
- ... USING CONSISTENCY <consistencylevel> ...
-
- Consistency level specifications are made up of keyword USING,
- followed by a consistency level identifier. Valid consistency level
- identifiers are as follows:
-
- * ANY
- * ONE (default)
- * TWO
- * THREE
- * QUORUM
- * ALL
- * LOCAL_QUORUM
- * EACH_QUORUM
-
- For more information on how consistency levels work, consult your
- Cassandra documentation.
- """
-
- def help_insert(self):
- print """
- INSERT INTO [<keyspace>.]<tablename>
- ( <colname1>, <colname2> [, <colname3> [, ...]] )
- VALUES ( <colval1>, <colval2> [, <colval3> [, ...]] )
- [USING CONSISTENCY <consistencylevel>
- [AND TIMESTAMP <timestamp>]
- [AND TTL <timeToLive]];
-
- An INSERT is used to write one or more columns to a record in a
- CQL table. No results are returned.
-
- Values for all component columns in the table's primary key must
- be given. Also, there must be at least one non-primary-key column
- specified (Cassandra rows are not considered to exist with only
- a key and no associated columns).
-
- Unlike in SQL, the semantics of INSERT and UPDATE are identical.
- In either case a record is created if none existed before, and
- udpated when it does. For more information, see one of the
- following:
-
- HELP UPDATE
- HELP UPDATE_USING
- HELP CONSISTENCYLEVEL
- """
-
- def help_update(self):
- print """
- UPDATE [<keyspace>.]<columnFamily>
- [USING CONSISTENCY <consistencylevel>
- [AND TIMESTAMP <timestamp>]
- [AND TTL <timeToLive>]]
- SET name1 = value1, name2 = value2 WHERE <keycol> = keyval;
-
- An UPDATE is used to write one or more columns to a record in a table.
- No results are returned. The record's primary key must be completely
- and uniquely specified; that is, if the primary key includes multiple
- columns, all must be explicitly given in the WHERE clause.
-
- Statements begin with the UPDATE keyword followed by the name of the
- table to be updated.
-
- For more information, see one of the following:
-
- HELP UPDATE_USING
- HELP UPDATE_SET
- HELP UPDATE_COUNTERS
- HELP UPDATE_WHERE
- HELP CONSISTENCYLEVEL
- """
-
- def help_update_using(self):
- print """
- UPDATE: the USING clause
-
- UPDATE ... USING TIMESTAMP <timestamp>;
- UPDATE ... USING TTL <timeToLive>;
- UPDATE ... USING CONSISTENCY <consistencylevel>;
-
- The USING clause allows setting of certain query and data parameters.
- If multiple parameters need to be set, these may be joined using AND.
- Example:
-
- UPDATE ... USING TTL 43200 AND CONSISTENCY LOCAL_QUORUM;
-
- <timestamp> defines the optional timestamp for the new column value(s).
- It must be an integer. Cassandra timestamps are generally specified
- using milliseconds since the Unix epoch (1970-01-01 00:00:00 UTC).
-
- <timeToLive> defines the optional time to live (TTL) in seconds for the
- new column value(s). It must be an integer.
- """
-
- def help_update_set(self):
- print """
- UPDATE: Specifying Columns and Row
-
- UPDATE ... SET name1 = value1, name2 = value2
- WHERE <key> = keyname;
- UPDATE ... SET name1 = value1, name2 = value2
- WHERE <key> IN ('<key1>', '<key2>', ...)
-
- Rows are created or updated by supplying column names and values in
- term assignment format. Multiple columns can be set by separating the
- name/value pairs using commas.
- """
-
- def help_update_counters(self):
- print """
- UPDATE: Updating Counter Columns
-
- UPDATE ... SET name1 = name1 + <value> ...
- UPDATE ... SET name1 = name1 - <value> ...
-
- Counter columns can be incremented or decremented by an arbitrary
- numeric value though the assignment of an expression that adds or
- substracts the value.
- """
-
- def help_update_where(self):
- print """
- UPDATE: Selecting rows to update
-
- UPDATE ... WHERE <keyname> = <keyval>;
- UPDATE ... WHERE <keyname> IN (<keyval1>, <keyval2>, ...);
- UPDATE ... WHERE <keycol1> = <keyval1> AND <keycol2> = <keyval2>;
-
- Each update statement requires a precise set of keys to be specified
- using a WHERE clause.
-
- If the table's primary key consists of multiple columns, an explicit
- value must be given for each for the UPDATE statement to make sense.
- """
-
- def help_delete(self):
- print """
- DELETE [<col1> [, <col2>, ...] FROM [<keyspace>.]<tablename>
- [USING CONSISTENCY <consistencylevel>
- [AND TIMESTAMP <timestamp>]]
- WHERE <keyname> = <keyvalue>;
-
- A DELETE is used to perform the removal of one or more columns from one
- or more rows. Each DELETE statement requires a precise set of row keys
- to be specified using a WHERE clause and the KEY keyword or key alias.
-
- For more information, see one of the following:
-
- HELP DELETE_USING
- HELP DELETE_COLUMNS
- HELP DELETE_WHERE
- HELP CONSISTENCYLEVEL
- """
-
- def help_delete_using(self):
- print """
- DELETE: the USING clause
-
- DELETE ... USING CONSISTENCY <consistencylevel>;
- DELETE ... USING TIMESTAMP <timestamp>;
-
- The USING clause allows setting of certain query and data parameters.
- If multiple parameters need to be set, these may be joined using AND.
- Example:
-
- DELETE ... CONSISTENCY LOCAL_QUORUM AND TIMESTAMP 1318452291034;
-
- <timestamp> defines the optional timestamp for the new tombstone
- record. It must be an integer. Cassandra timestamps are generally
- specified using milliseconds since the Unix epoch (1970-01-01 00:00:00
- UTC).
- """
-
- def help_delete_columns(self):
- print """
- DELETE: specifying columns
-
- DELETE col1, col2, col3 FROM ...
-
- Following the DELETE keyword is an optional comma-delimited list of
- column name terms. When no column names are given, the remove applies
- to the entire row(s) matched by the WHERE clause.
-
- When column names do not parse as valid CQL identifiers, they can be
- quoted in single quotes (CQL 2) or double quotes (CQL 3).
- """
-
- def help_delete_where(self):
- print """
- DELETE: specifying rows
-
- DELETE ... WHERE keycol = 'some_key_value';
- DELETE ... WHERE keycol1 = 'val1' AND keycol2 = 'val2';
- DELETE ... WHERE keycol IN (key1, key2);
-
- The WHERE clause is used to determine to which row(s) a DELETE
- applies. The first form allows the specification of a precise row
- by specifying a particular primary key value (if the primary key has
- multiple columns, values for each must be given). The second form
- allows a list of key values to be specified using the IN operator
- and a parenthesized list of comma-delimited key values.
- """
-
- def help_create(self):
- print """
- There are different variants of CREATE. For more information, see
- one of the following:
-
- HELP CREATE_KEYSPACE;
- HELP CREATE_TABLE;
- HELP CREATE_INDEX;
- """
-
- def help_create_keyspace(self):
- print """
- CREATE KEYSPACE <ksname> WITH strategy_class = '<strategy>'
- [AND strategy_options:<option> = <val>];
-
- The CREATE KEYSPACE statement creates a new top-level namespace (aka
- "keyspace"). Valid names are any string constructed of alphanumeric
- characters and underscores. Names which do not work as valid
- identifiers or integers should be quoted as string literals. Properties
- such as replication strategy and count are specified during creation
- using the following accepted keyword arguments:
-
- strategy_class [required]: The name of the replication strategy class
- which should be used for the new keyspace. Some often-used classes
- are SimpleStrategy and NetworkTopologyStrategy.
-
- strategy_options: Most strategies require additional arguments which
- can be supplied by appending the option name to "strategy_options",
- separated by a colon (:). For example, a strategy option of "DC1"
- with a value of "1" would be specified as "strategy_options:DC1 = 1".
- The replication factor option for SimpleStrategy could be
- "strategy_options:replication_factor=3".
- """
-
- def help_create_table(self):
- print """
- CREATE TABLE <cfname> ( <colname> <type> PRIMARY KEY [,
- <colname> <type> [, ...]] )
- [WITH <optionname> = <val> [AND <optionname> = <val> [...]]];
-
- CREATE TABLE statements create a new CQL table under the current
- keyspace. Valid table names are strings of alphanumeric characters and
- underscores, which begin with a letter.
-
- Each table requires a primary key, which will correspond to the
- underlying columnfamily key and key validator. It's important to
- note that the key type you use must be compatible with the partitioner
- in use. For example, OrderPreservingPartitioner and
- CollatingOrderPreservingPartitioner both require UTF-8 keys.
-
- In cql3 mode, a table can have multiple columns composing the primary
- key (see HELP COMPOSITE_PRIMARY_KEYS).
-
- For more information, see one of the following:
-
- HELP CREATE_TABLE_TYPES;
- HELP CREATE_TABLE_OPTIONS;
- """
- help_create_columnfamily = help_create_table
-
- def help_create_table_types(self):
- print """
- CREATE TABLE: Specifying column types
-
- CREATE ... (KEY <type> PRIMARY KEY,
- othercol <type>) ...
-
- It is possible to assign columns a type during table creation. Columns
- configured with a type are validated accordingly when a write occurs,
- and intelligent CQL drivers and interfaces will be able to decode the
- column values correctly when receiving them. Column types are specified
- as a parenthesized, comma-separated list of column term and type pairs.
- See HELP TYPES; for the list of recognized types.
- """
- help_create_columnfamily_types = help_create_table_types
-
- def help_create_table_options(self):
- print """
- CREATE TABLE: Specifying columnfamily options
-
- CREATE TABLE blah (...)
- WITH optionname = val AND otheroption = val2;
-
- A number of optional keyword arguments can be supplied to control the
- configuration of a new CQL table, such as the size of the associated
- row and key caches for the underlying Cassandra columnfamily. Consult
- your CQL reference for the complete list of options and possible
- values.
- """
- help_create_columnfamily_options = help_create_table_options
-
- def help_create_index(self):
- print """
- CREATE INDEX [<indexname>] ON <cfname> ( <colname> );
-
- A CREATE INDEX statement is used to create a new, automatic secondary
- index on the given CQL table, for the named column. A name for the
- index itself can be specified before the ON keyword, if desired. A
- single column name must be specified inside the parentheses. It is not
- necessary for the column to exist on any current rows (Cassandra is
- schema-optional), but the column must already have a type (specified
- during the CREATE TABLE, or added afterwards with ALTER TABLE).
- """
-
- def help_drop(self):
- print """
- There are different variants of DROP. For more information, see
- one of the following:
-
- HELP DROP_KEYSPACE;
- HELP DROP_TABLE;
- HELP DROP_INDEX;
- """
-
- def help_drop_keyspace(self):
- print """
- DROP KEYSPACE <keyspacename>;
-
- A DROP KEYSPACE statement results in the immediate, irreversible
- removal of a keyspace, including all column families in it, and all
- data contained in those column families.
- """
-
- def help_drop_table(self):
- print """
- DROP TABLE <tablename>;
-
- A DROP TABLE statement results in the immediate, irreversible
- removal of a CQL table and the underlying column family, including all
- data contained in it.
- """
- help_drop_columnfamily = help_drop_table
-
- def help_drop_index(self):
- print """
- DROP INDEX <indexname>;
-
- A DROP INDEX statement is used to drop an existing secondary index.
- """
-
- def help_truncate(self):
- print """
- TRUNCATE <tablename>;
-
- TRUNCATE accepts a single argument for the table name, and permanently
- removes all data from it.
- """
-
- def help_begin(self):
- print """
- BEGIN BATCH [USING CONSISTENCY <level>
- [AND TIMESTAMP <timestamp>]]
- <insert or update or delete statement> ;
- [ <another insert or update or delete statement ;
- [...]]
- APPLY BATCH;
-
- BATCH supports setting a client-supplied optional global timestamp
- which will be used for each of the operations included in the batch.
-
- A single consistency level is used for the entire batch. It appears
- after the BEGIN BATCH statement, and uses the standard "consistency
- level specification" (see HELP CONSISTENCYLEVEL). Batched statements
- default to CONSISTENCY.ONE when left unspecified.
-
- Only data modification statements (specifically, UPDATE, INSERT,
- and DELETE) are allowed in a BATCH statement. BATCH is _not_ an
- analogue for SQL transactions.
-
- _NOTE: While there are no isolation guarantees, UPDATE queries are
- atomic within a given record._
- """
- help_apply = help_begin
-
- def help_alter(self):
- print """
- ALTER TABLE <tablename> ALTER <columnname> TYPE <type>;
- ALTER TABLE <tablename> ADD <columnname> <type>;
- ALTER TABLE <tablename> DROP <columnname>;
- ALTER TABLE <tablename> WITH <optionname> = <val> [AND <optionname> = <val> [...]];
-
- An ALTER statement is used to manipulate table metadata. It allows you
- to add new typed columns, drop existing columns, change the data
- storage type of existing columns, or change table properties.
- No results are returned.
-
- See one of the following for more information:
-
- HELP ALTER_ALTER;
- HELP ALTER_ADD;
- HELP ALTER_DROP;
- HELP ALTER_WITH;
- """
-
- def help_alter_alter(self):
- print """
- ALTER TABLE: altering existing typed columns
-
- ALTER TABLE addamsFamily ALTER lastKnownLocation TYPE uuid;
-
- ALTER TABLE ... ALTER changes the expected storage type for a column.
- The column must already have a type in the column family metadata. The
- column may or may not already exist in current rows-- but be aware that
- no validation of existing data is done. The bytes stored in values for
- that column will remain unchanged, and if existing data is not
- deserializable according to the new type, this may cause your CQL
- driver or interface to report errors.
- """
-
- def help_alter_add(self):
- print """
- ALTER TABLE: adding a typed column
-
- ALTER TABLE addamsFamily ADD gravesite varchar;
-
- The ALTER TABLE ... ADD variant adds a typed column to a column
- family. The column must not already have a type in the column family
- metadata. See the warnings on HELP ALTER_ALTER regarding the lack of
- validation of existing data; they apply here as well.
- """
-
- def help_alter_drop(self):
- print """
- ALTER TABLE: dropping a typed column
-
- ALTER TABLE addamsFamily DROP gender;
-
- An ALTER TABLE ... DROP statement removes the type of a column
- from the column family metadata. Note that this does _not_ remove the
- column from current rows; it just removes the metadata saying that the
- bytes stored under that column are expected to be deserializable
- according to a certain type.
- """
-
- def help_alter_with(self):
- print """
- ALTER TABLE: changing column family properties
-
- ALTER TABLE addamsFamily WITH comment = 'Glad to be here!'
- AND read_repair_chance = 0.2;
-
- An ALTER TABLE ... WITH statement makes adjustments to the
- table properties, as defined when the table was created (see
- HELP CREATE_TABLE_OPTIONS and your Cassandra documentation for
- information about the supported parameter names and values).
- """
-
- def applycolor(self, text, color=None):
- if not color or not self.color:
- return text
- return color + text + ANSI_RESET
-
- def writeresult(self, text, color=None, newline=True, out=None):
- if out is None:
- out = self.query_out
- out.write(self.applycolor(str(text), color) + ('\n' if newline else ''))
-
- def printerr(self, text, color=RED, newline=True, shownum=None):
- if shownum is None:
- shownum = self.show_line_nums
- if shownum:
- text = '%s:%d:%s' % (self.stdin.name, self.lineno, text)
- self.writeresult(text, color, newline=newline, out=sys.stderr)
-
- def add_assumption(self, ksname, cfname, colname, valtype, valclass):
- try:
- v_info = self.schema_overrides[(ksname, cfname)]
- except KeyError:
- v_info = self.schema_overrides[(ksname, cfname)] = FakeCqlMetadata()
- if valtype == 'names':
- v_info.default_name_type = valclass
- elif valtype == 'values':
- v_info.default_value_type = valclass
- elif valtype == 'colvalues':
- v_info.value_types[colname] = valclass
-
-
-class FakeCqlMetadata:
- def __init__(self):
- self.name_types = {}
- self.value_types = {}
- self.default_name_type = None
- self.default_value_type = None
-
-class OverrideableSchemaDecoder(cql.decoders.SchemaDecoder):
- def __init__(self, schema, overrides=None):
- cql.decoders.SchemaDecoder.__init__(self, schema)
- self.apply_schema_overrides(overrides)
-
- def apply_schema_overrides(self, overrides):
- if overrides is None:
- return
- if overrides.default_name_type is not None:
- self.schema.default_name_type = overrides.default_name_type
- if overrides.default_value_type is not None:
- self.schema.default_value_type = overrides.default_value_type
- self.schema.name_types.update(overrides.name_types)
- self.schema.value_types.update(overrides.value_types)
-
-class ErrorHandlingSchemaDecoder(OverrideableSchemaDecoder):
- def name_decode_error(self, err, namebytes, expectedtype):
- return DecodeError(namebytes, err, expectedtype)
-
- def value_decode_error(self, err, namebytes, valuebytes, expectedtype):
- return DecodeError(valuebytes, err, expectedtype, colname=namebytes)
-
-
-def option_with_default(cparser_getter, section, option, default=None):
- try:
- return cparser_getter(section, option)
- except ConfigParser.Error:
- return default
-
-def should_use_color():
- if not sys.stdout.isatty():
- return False
- if os.environ.get('TERM', 'dumb') == 'dumb':
- return False
- try:
- import subprocess
- p = subprocess.Popen(['tput', 'colors'], stdout=subprocess.PIPE)
- stdout, _ = p.communicate()
- if int(stdout.strip()) < 8:
- return False
- except (OSError, ImportError):
- # oh well, we tried. at least we know there's a $TERM and it's
- # not "dumb".
- pass
- return True
-
-def read_options(cmdlineargs, environment):
- configs = ConfigParser.SafeConfigParser()
- configs.read(CONFIG_FILE)
-
- optvalues = optparse.Values()
- optvalues.username = option_with_default(configs.get, 'authentication', 'username')
- optvalues.password = option_with_default(configs.get, 'authentication', 'password')
- optvalues.keyspace = option_with_default(configs.get, 'authentication', 'keyspace')
- optvalues.completekey = option_with_default(configs.get, 'ui', 'completekey', 'tab')
- optvalues.color = option_with_default(configs.getboolean, 'ui', 'color')
- if optvalues.color is None:
- # default yes if tty
- optvalues.color = should_use_color()
- optvalues.debug = False
- optvalues.file = None
- optvalues.tty = sys.stdin.isatty()
- optvalues.cqlversion = option_with_default(configs.get, 'cql', 'version', DEFAULT_CQLVER)
-
- (options, arguments) = parser.parse_args(cmdlineargs, values=optvalues)
-
- hostname = option_with_default(configs.get, 'connection', 'hostname', DEFAULT_HOST)
- port = option_with_default(configs.get, 'connection', 'port', DEFAULT_PORT)
-
- hostname = environment.get('CQLSH_HOST', hostname)
- port = environment.get('CQLSH_PORT', port)
-
- if len(arguments) > 0:
- hostname = arguments[0]
- if len(arguments) > 1:
- port = arguments[1]
-
- if options.file is not None:
- options.color = False
- options.tty = False
-
- options.cqlversion, cqlvertup = full_cql_version(options.cqlversion)
- if cqlvertup[0] < 3:
- options.cqlmodule = cqlhandling
- else:
- options.cqlmodule = cql3handling
-
- try:
- port = int(port)
- except ValueError:
- parser.error('%r is not a valid port number.' % port)
-
- return options, hostname, port
-
-def setup_cqlruleset(cqlmodule):
- global cqlruleset
- cqlruleset = cqlmodule.CqlRuleSet
- cqlruleset.append_rules(cqlsh_extra_syntax_rules)
- for rulename, termname, func in cqlsh_syntax_completers:
- cqlruleset.completer_for(rulename, termname)(func)
- cqlruleset.commands_end_with_newline.update(my_commands_ending_with_newline)
-
-def main(options, hostname, port):
- setup_cqlruleset(options.cqlmodule)
-
- if os.path.exists(HISTORY) and readline is not None:
- readline.read_history_file(HISTORY)
- delims = readline.get_completer_delims()
- delims.replace("'", "")
- delims += '.'
- readline.set_completer_delims(delims)
-
- if options.file is None:
- stdin = None
- else:
- try:
- stdin = open(options.file, 'r')
- except IOError, e:
- sys.exit("Can't open %r: %s" % (options.file, e))
-
- if options.debug:
- import thrift
- sys.stderr.write("Using CQL driver: %s\n" % (cql,))
- sys.stderr.write("Using thrift lib: %s\n" % (thrift,))
-
- try:
- shell = Shell(hostname,
- port,
- color=options.color,
- username=options.username,
- password=options.password,
- stdin=stdin,
- tty=options.tty,
- completekey=options.completekey,
- cqlver=options.cqlversion,
- keyspace=options.keyspace)
- except KeyboardInterrupt:
- sys.exit('Connection aborted.')
- except CQL_ERRORS, e:
- sys.exit('Connection error: %s' % (e,))
- except VersionNotSupported, e:
- sys.exit('Unsupported CQL version: %s' % (e,))
- if options.debug:
- shell.debug = True
-
- shell.cmdloop()
-
- if readline is not None:
- readline.write_history_file(HISTORY)
-
-if __name__ == '__main__':
- main(*read_options(sys.argv[1:], os.environ))
-
-# vim: set ft=python et ts=4 sw=4 :
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cqlshrc.sample b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cqlshrc.sample
deleted file mode 100755
index 07cf73f..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/cqlshrc.sample
+++ /dev/null
@@ -1,35 +0,0 @@
-; Licensed to the Apache Software Foundation (ASF) under one
-; or more contributor license agreements. See the NOTICE file
-; distributed with this work for additional information
-; regarding copyright ownership. The ASF licenses this file
-; to you 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
-;
-; http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing,
-; software distributed under the License is distributed on an
-; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-; KIND, either express or implied. See the License for the
-; specific language governing permissions and limitations
-; under the License.
-;
-; Sample ~/.cqlshrc file.
-
-[authentication]
-username = fred
-password = !!bang!!$
-
-[ui]
-color = on
-completekey = tab
-
-[connection]
-hostname = 127.0.0.1
-port = 9160
-
-[cql]
-version = 2.0
-
-; vim: set ft=dosini :
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/json2sstable b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/json2sstable
deleted file mode 100755
index 02ebaaf..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/json2sstable
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-if [ "x$CASSANDRA_INCLUDE" = "x" ]; then
- for include in /usr/share/cassandra/cassandra.in.sh \
- /usr/local/share/cassandra/cassandra.in.sh \
- /opt/cassandra/cassandra.in.sh \
- ~/.cassandra.in.sh \
- `dirname $0`/cassandra.in.sh; do
- if [ -r $include ]; then
- . $include
- break
- fi
- done
-elif [ -r $CASSANDRA_INCLUDE ]; then
- . $CASSANDRA_INCLUDE
-fi
-
-# Use JAVA_HOME if set, otherwise look for java in PATH
-if [ -x $JAVA_HOME/bin/java ]; then
- JAVA=$JAVA_HOME/bin/java
-else
- JAVA=`which java`
-fi
-
-if [ -z $CLASSPATH ]; then
- echo "You must set the CLASSPATH var" >&2
- exit 1
-fi
-
-$JAVA -cp $CLASSPATH -Dstorage-config=$CASSANDRA_CONF \
- -Dlog4j.configuration=log4j-tools.properties \
- org.apache.cassandra.tools.SSTableImport "$@"
-
-# vi:ai sw=4 ts=4 tw=0 et
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/json2sstable.bat b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/json2sstable.bat
deleted file mode 100755
index dc1e8f6..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/json2sstable.bat
+++ /dev/null
@@ -1,67 +0,0 @@
-@REM
-@REM Licensed to the Apache Software Foundation (ASF) under one or more
-@REM contributor license agreements. See the NOTICE file distributed with
-@REM this work for additional information regarding copyright ownership.
-@REM The ASF licenses this file to You under the Apache License, Version 2.0
-@REM (the "License"); you may not use this file except in compliance with
-@REM the License. You may obtain a copy of the License at
-@REM
-@REM http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing, software
-@REM distributed under the License is distributed on an "AS IS" BASIS,
-@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@REM See the License for the specific language governing permissions and
-@REM limitations under the License.
-
-@echo off
-if "%OS%" == "Windows_NT" setlocal
-
-if NOT DEFINED CASSANDRA_HOME set CASSANDRA_HOME=%~dp0..
-if NOT DEFINED CASSANDRA_CONF set CASSANDRA_CONF="%CASSANDRA_HOME%\conf"
-if NOT DEFINED CASSANDRA_MAIN set CASSANDRA_MAIN=org.apache.cassandra.tools.SSTableImport
-if NOT DEFINED JAVA_HOME goto :err
-
-REM ***** JAVA options *****
-set JAVA_OPTS=^
- -Dlog4j.configuration=log4j-tools.properties
-
-REM ***** CLASSPATH library setting *****
-
-REM Ensure that any user defined CLASSPATH variables are not used on startup
-set CLASSPATH="%CASSANDRA_HOME%\conf"
-
-REM For each jar in the CASSANDRA_HOME lib directory call append to build the CLASSPATH variable.
-for %%i in ("%CASSANDRA_HOME%\lib\*.jar") do call :append "%%i"
-goto okClasspath
-
-:append
-set CLASSPATH=%CLASSPATH%;%1
-goto :eof
-
-:okClasspath
-REM Include the build\classes\main directory so it works in development
-set CASSANDRA_CLASSPATH=%CLASSPATH%;"%CASSANDRA_HOME%\build\classes\main";%CASSANDRA_CONF%;"%CASSANDRA_HOME%\build\classes\thrift"
-
-set CASSANDRA_PARAMS=
-set TOOLS_PARAMS=
-
-FOR %%A IN (%*) DO call :appendToolsParams %%A
-
-goto runTool
-
-:appendToolsParams
-set TOOLS_PARAMS=%TOOLS_PARAMS% %1
-goto :eof
-
-:runTool
-"%JAVA_HOME%\bin\java" %JAVA_OPTS% %CASSANDRA_PARAMS% -cp %CASSANDRA_CLASSPATH% "%CASSANDRA_MAIN%" %TOOLS_PARAMS%
-goto finally
-
-:err
-echo JAVA_HOME environment variable must be set!
-pause
-
-:finally
-
-ENDLOCAL
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/nodetool b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/nodetool
deleted file mode 100755
index 6678942..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/nodetool
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/bin/sh
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-if [ `basename $0` = 'nodeprobe' ]; then
- echo "***************************************************************" >&2
- echo "WARNING: $0 is obsolete, use `dirname $0`/nodetool instead" >&2
- echo "***************************************************************" >&2
-fi
-
-if [ "x$CASSANDRA_INCLUDE" = "x" ]; then
- for include in /usr/share/cassandra/cassandra.in.sh \
- /usr/local/share/cassandra/cassandra.in.sh \
- /opt/cassandra/cassandra.in.sh \
- `dirname $0`/cassandra.in.sh; do
- if [ -r $include ]; then
- . $include
- break
- fi
- done
-elif [ -r $CASSANDRA_INCLUDE ]; then
- . $CASSANDRA_INCLUDE
-fi
-
-# Use JAVA_HOME if set, otherwise look for java in PATH
-if [ -x $JAVA_HOME/bin/java ]; then
- JAVA=$JAVA_HOME/bin/java
-else
- JAVA=`which java`
-fi
-
-if [ -z $CASSANDRA_CONF -o -z $CLASSPATH ]; then
- echo "You must set the CASSANDRA_CONF and CLASSPATH vars" >&2
- exit 1
-fi
-
-# Special-case path variables.
-case "`uname`" in
- CYGWIN*)
- CLASSPATH=`cygpath -p -w "$CLASSPATH"`
- CASSANDRA_CONF=`cygpath -p -w "$CASSANDRA_CONF"`
- ;;
-esac
-
-$JAVA -cp $CLASSPATH \
- -Xmx32m \
- -Dlog4j.configuration=log4j-tools.properties \
- -Dstorage-config=$CASSANDRA_CONF \
- org.apache.cassandra.tools.NodeCmd $@
-
-# vi:ai sw=4 ts=4 tw=0 et
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/nodetool.bat b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/nodetool.bat
deleted file mode 100755
index 2f74687..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/nodetool.bat
+++ /dev/null
@@ -1,50 +0,0 @@
-@REM
-@REM Licensed to the Apache Software Foundation (ASF) under one or more
-@REM contributor license agreements. See the NOTICE file distributed with
-@REM this work for additional information regarding copyright ownership.
-@REM The ASF licenses this file to You under the Apache License, Version 2.0
-@REM (the "License"); you may not use this file except in compliance with
-@REM the License. You may obtain a copy of the License at
-@REM
-@REM http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing, software
-@REM distributed under the License is distributed on an "AS IS" BASIS,
-@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@REM See the License for the specific language governing permissions and
-@REM limitations under the License.
-
-@echo off
-if "%OS%" == "Windows_NT" setlocal
-
-if NOT DEFINED CASSANDRA_HOME set CASSANDRA_HOME=%~dp0..
-if NOT DEFINED JAVA_HOME goto :err
-
-REM Ensure that any user defined CLASSPATH variables are not used on startup
-set CLASSPATH="%CASSANDRA_HOME%\conf"
-
-REM For each jar in the CASSANDRA_HOME lib directory call append to build the CLASSPATH variable.
-for %%i in ("%CASSANDRA_HOME%\lib\*.jar") do call :append "%%i"
-goto okClasspath
-
-:append
-set CLASSPATH=%CLASSPATH%;%1
-goto :eof
-
-:okClasspath
-REM Include the build\classes\main directory so it works in development
-set CASSANDRA_CLASSPATH=%CLASSPATH%;"%CASSANDRA_HOME%\build\classes\main";"%CASSANDRA_HOME%\build\classes\thrift"
-goto runNodeTool
-
-:runNodeTool
-echo Starting NodeTool
-"%JAVA_HOME%\bin\java" -cp %CASSANDRA_CLASSPATH% -Dlog4j.configuration=log4j-tools.properties org.apache.cassandra.tools.NodeCmd %*
-goto finally
-
-:err
-echo The JAVA_HOME environment variable must be set to run this program!
-pause
-
-:finally
-
-ENDLOCAL
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstable2json b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstable2json
deleted file mode 100755
index dca2bd6..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstable2json
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-if [ "x$CASSANDRA_INCLUDE" = "x" ]; then
- for include in /usr/share/cassandra/cassandra.in.sh \
- /usr/local/share/cassandra/cassandra.in.sh \
- /opt/cassandra/cassandra.in.sh \
- ~/.cassandra.in.sh \
- `dirname $0`/cassandra.in.sh; do
- if [ -r $include ]; then
- . $include
- break
- fi
- done
-elif [ -r $CASSANDRA_INCLUDE ]; then
- . $CASSANDRA_INCLUDE
-fi
-
-
-# Use JAVA_HOME if set, otherwise look for java in PATH
-if [ -x $JAVA_HOME/bin/java ]; then
- JAVA=$JAVA_HOME/bin/java
-else
- JAVA=`which java`
-fi
-
-if [ -z $CLASSPATH ]; then
- echo "You must set the CLASSPATH var" >&2
- exit 1
-fi
-
-$JAVA -cp $CLASSPATH -Dstorage-config=$CASSANDRA_CONF \
- -Dlog4j.configuration=log4j-tools.properties \
- org.apache.cassandra.tools.SSTableExport "$@"
-
-# vi:ai sw=4 ts=4 tw=0 et
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstable2json.bat b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstable2json.bat
deleted file mode 100755
index 9544e0c..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstable2json.bat
+++ /dev/null
@@ -1,67 +0,0 @@
-@REM
-@REM Licensed to the Apache Software Foundation (ASF) under one or more
-@REM contributor license agreements. See the NOTICE file distributed with
-@REM this work for additional information regarding copyright ownership.
-@REM The ASF licenses this file to You under the Apache License, Version 2.0
-@REM (the "License"); you may not use this file except in compliance with
-@REM the License. You may obtain a copy of the License at
-@REM
-@REM http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing, software
-@REM distributed under the License is distributed on an "AS IS" BASIS,
-@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@REM See the License for the specific language governing permissions and
-@REM limitations under the License.
-
-@echo off
-if "%OS%" == "Windows_NT" setlocal
-
-if NOT DEFINED CASSANDRA_HOME set CASSANDRA_HOME=%~dp0..
-if NOT DEFINED CASSANDRA_CONF set CASSANDRA_CONF="%CASSANDRA_HOME%\conf"
-if NOT DEFINED CASSANDRA_MAIN set CASSANDRA_MAIN=org.apache.cassandra.tools.SSTableExport
-if NOT DEFINED JAVA_HOME goto :err
-
-REM ***** JAVA options *****
-set JAVA_OPTS=^
- -Dlog4j.configuration=log4j-tools.properties
-
-REM ***** CLASSPATH library setting *****
-
-REM Ensure that any user defined CLASSPATH variables are not used on startup
-set CLASSPATH="%CASSANDRA_HOME%\conf"
-
-REM For each jar in the CASSANDRA_HOME lib directory call append to build the CLASSPATH variable.
-for %%i in ("%CASSANDRA_HOME%\lib\*.jar") do call :append "%%i"
-goto okClasspath
-
-:append
-set CLASSPATH=%CLASSPATH%;%1
-goto :eof
-
-:okClasspath
-REM Include the build\classes\main directory so it works in development
-set CASSANDRA_CLASSPATH=%CLASSPATH%;"%CASSANDRA_HOME%\build\classes\main";%CASSANDRA_CONF%;"%CASSANDRA_HOME%\build\classes\thrift"
-
-set CASSANDRA_PARAMS=
-set TOOLS_PARAMS=
-
-FOR %%A IN (%*) DO call :appendToolsParams %%A
-
-goto runTool
-
-:appendToolsParams
-set TOOLS_PARAMS=%TOOLS_PARAMS% %1
-goto :eof
-
-:runTool
-"%JAVA_HOME%\bin\java" %JAVA_OPTS% %CASSANDRA_PARAMS% -cp %CASSANDRA_CLASSPATH% "%CASSANDRA_MAIN%" %TOOLS_PARAMS%
-goto finally
-
-:err
-echo JAVA_HOME environment variable must be set!
-pause
-
-:finally
-
-ENDLOCAL
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstablekeys b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstablekeys
deleted file mode 100755
index 4c87bb5..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstablekeys
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-if [ "x$CASSANDRA_INCLUDE" = "x" ]; then
- for include in /usr/share/cassandra/cassandra.in.sh \
- /usr/local/share/cassandra/cassandra.in.sh \
- /opt/cassandra/cassandra.in.sh \
- ~/.cassandra.in.sh \
- `dirname $0`/cassandra.in.sh; do
- if [ -r $include ]; then
- . $include
- break
- fi
- done
-elif [ -r $CASSANDRA_INCLUDE ]; then
- . $CASSANDRA_INCLUDE
-fi
-
-
-# Use JAVA_HOME if set, otherwise look for java in PATH
-if [ -x $JAVA_HOME/bin/java ]; then
- JAVA=$JAVA_HOME/bin/java
-else
- JAVA=`which java`
-fi
-
-if [ -z $CLASSPATH ]; then
- echo "You must set the CLASSPATH var" >&2
- exit 1
-fi
-if [ $# -eq "0" ]; then
- echo "Usage: `basename $0` <sstable>"
- exit 2
-fi
-
-$JAVA -cp $CLASSPATH -Dstorage-config=$CASSANDRA_CONF \
- -Dlog4j.configuration=log4j-tools.properties \
- org.apache.cassandra.tools.SSTableExport "$@" -e
-
-# vi:ai sw=4 ts=4 tw=0 et
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstablekeys.bat b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstablekeys.bat
deleted file mode 100755
index 6a483ba..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstablekeys.bat
+++ /dev/null
@@ -1,61 +0,0 @@
-@REM
-@REM Licensed to the Apache Software Foundation (ASF) under one or more
-@REM contributor license agreements. See the NOTICE file distributed with
-@REM this work for additional information regarding copyright ownership.
-@REM The ASF licenses this file to You under the Apache License, Version 2.0
-@REM (the "License"); you may not use this file except in compliance with
-@REM the License. You may obtain a copy of the License at
-@REM
-@REM http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing, software
-@REM distributed under the License is distributed on an "AS IS" BASIS,
-@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@REM See the License for the specific language governing permissions and
-@REM limitations under the License.
-
-@echo off
-if "%OS%" == "Windows_NT" setlocal
-
-if NOT DEFINED CASSANDRA_HOME set CASSANDRA_HOME=%~dp0..
-if NOT DEFINED CASSANDRA_CONF set CASSANDRA_CONF="%CASSANDRA_HOME%\conf"
-if NOT DEFINED CASSANDRA_MAIN set CASSANDRA_MAIN=org.apache.cassandra.tools.SSTableExport
-if NOT DEFINED JAVA_HOME goto :err
-
-REM ***** JAVA options *****
-set JAVA_OPTS=^
- -Dlog4j.configuration=log4j-tools.properties
-
-REM ***** CLASSPATH library setting *****
-
-REM Ensure that any user defined CLASSPATH variables are not used on startup
-set CLASSPATH="%CASSANDRA_HOME%\conf"
-
-REM For each jar in the CASSANDRA_HOME lib directory call append to build the CLASSPATH variable.
-for %%i in ("%CASSANDRA_HOME%\lib\*.jar") do call :append "%%i"
-goto okClasspath
-
-:append
-set CLASSPATH=%CLASSPATH%;%1
-goto :eof
-
-:okClasspath
-REM Include the build\classes\main directory so it works in development
-set CASSANDRA_CLASSPATH=%CLASSPATH%;"%CASSANDRA_HOME%\build\classes\main";%CASSANDRA_CONF%;"%CASSANDRA_HOME%\build\classes\thrift"
-
-set CASSANDRA_PARAMS=
-set TOOLS_PARAMS=
-
-goto runTool
-
-:runTool
-"%JAVA_HOME%\bin\java" %JAVA_OPTS% %CASSANDRA_PARAMS% -cp %CASSANDRA_CLASSPATH% "%CASSANDRA_MAIN%" %1 -e
-goto finally
-
-:err
-echo JAVA_HOME environment variable must be set!
-pause
-
-:finally
-
-ENDLOCAL
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstableloader b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstableloader
deleted file mode 100755
index 2c82aa9..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstableloader
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-if [ "x$CASSANDRA_INCLUDE" = "x" ]; then
- for include in /usr/share/cassandra/cassandra.in.sh \
- /usr/local/share/cassandra/cassandra.in.sh \
- /opt/cassandra/cassandra.in.sh \
- ~/.cassandra.in.sh \
- `dirname $0`/cassandra.in.sh; do
- if [ -r $include ]; then
- . $include
- break
- fi
- done
-elif [ -r $CASSANDRA_INCLUDE ]; then
- . $CASSANDRA_INCLUDE
-fi
-
-# Use JAVA_HOME if set, otherwise look for java in PATH
-if [ -x $JAVA_HOME/bin/java ]; then
- JAVA=$JAVA_HOME/bin/java
-else
- JAVA=`which java`
-fi
-
-if [ -z $CLASSPATH ]; then
- echo "You must set the CLASSPATH var" >&2
- exit 1
-fi
-
-$JAVA -ea -cp $CLASSPATH -Xmx256M \
- -Dlog4j.configuration=log4j-tools.properties \
- org.apache.cassandra.tools.BulkLoader "$@"
-
-# vi:ai sw=4 ts=4 tw=0 et
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstablescrub b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstablescrub
deleted file mode 100755
index 437bee0..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/sstablescrub
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-if [ "x$CASSANDRA_INCLUDE" = "x" ]; then
- for include in /usr/share/cassandra/cassandra.in.sh \
- /usr/local/share/cassandra/cassandra.in.sh \
- /opt/cassandra/cassandra.in.sh \
- ~/.cassandra.in.sh \
- `dirname $0`/cassandra.in.sh; do
- if [ -r $include ]; then
- . $include
- break
- fi
- done
-elif [ -r $CASSANDRA_INCLUDE ]; then
- . $CASSANDRA_INCLUDE
-fi
-
-# Use JAVA_HOME if set, otherwise look for java in PATH
-if [ -x $JAVA_HOME/bin/java ]; then
- JAVA=$JAVA_HOME/bin/java
-else
- JAVA=`which java`
-fi
-
-if [ -z $CLASSPATH ]; then
- echo "You must set the CLASSPATH var" >&2
- exit 1
-fi
-
-$JAVA -ea -cp $CLASSPATH -Xmx256M \
- -Dlog4j.configuration=log4j-tools.properties \
- org.apache.cassandra.tools.StandaloneScrubber "$@"
-
-# vi:ai sw=4 ts=4 tw=0 et
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/stop-server b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/stop-server
deleted file mode 100755
index 45049d8..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/bin/stop-server
+++ /dev/null
@@ -1,31 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-echo "please read the stop-server script before use"
-
-# if you are using the cassandra start script with -p, this
-# is the best way to stop:
-
-# kill `cat <pidfile>`
-
-
-# otherwise, you can run something like this, but
-# this is a shotgun approach and will kill other processes
-# with cassandra in their name or arguments too:
-
-# user=`whoami`
-# pgrep -u $user -f cassandra | xargs kill -9
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/README.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/README.txt
deleted file mode 100644
index c3fd98d..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/README.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Required configuration files
-============================
-
-cassandra.yaml: main Cassandra configuration file
-log4j-server.proprties: log4j configuration file for Cassandra server
-
-
-Optional configuration files
-============================
-
-cassandra-topology.properties: used by PropertyFileSnitch
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/cassandra-env.sh b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/cassandra-env.sh
deleted file mode 100644
index fc278c9..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/cassandra-env.sh
+++ /dev/null
@@ -1,231 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-calculate_heap_sizes()
-{
- case "`uname`" in
- Linux)
- system_memory_in_mb=`free -m | awk '/Mem:/ {print $2}'`
- system_cpu_cores=`egrep -c 'processor([[:space:]]+):.*' /proc/cpuinfo`
- ;;
- FreeBSD)
- system_memory_in_bytes=`sysctl hw.physmem | awk '{print $2}'`
- system_memory_in_mb=`expr $system_memory_in_bytes / 1024 / 1024`
- system_cpu_cores=`sysctl hw.ncpu | awk '{print $2}'`
- ;;
- SunOS)
- system_memory_in_mb=`prtconf | awk '/Memory size:/ {print $3}'`
- system_cpu_cores=`psrinfo | wc -l`
- ;;
- *)
- # assume reasonable defaults for e.g. a modern desktop or
- # cheap server
- system_memory_in_mb="2048"
- system_cpu_cores="2"
- ;;
- esac
-
- # some systems like the raspberry pi don't report cores, use at least 1
- if [ "$system_cpu_cores" -lt "1" ]
- then
- system_cpu_cores="1"
- fi
-
- # set max heap size based on the following
- # max(min(1/2 ram, 1024MB), min(1/4 ram, 8GB))
- # calculate 1/2 ram and cap to 1024MB
- # calculate 1/4 ram and cap to 8192MB
- # pick the max
- half_system_memory_in_mb=`expr $system_memory_in_mb / 2`
- quarter_system_memory_in_mb=`expr $half_system_memory_in_mb / 2`
- if [ "$half_system_memory_in_mb" -gt "1024" ]
- then
- half_system_memory_in_mb="1024"
- fi
- if [ "$quarter_system_memory_in_mb" -gt "8192" ]
- then
- quarter_system_memory_in_mb="8192"
- fi
- if [ "$half_system_memory_in_mb" -gt "$quarter_system_memory_in_mb" ]
- then
- max_heap_size_in_mb="$half_system_memory_in_mb"
- else
- max_heap_size_in_mb="$quarter_system_memory_in_mb"
- fi
- MAX_HEAP_SIZE="${max_heap_size_in_mb}M"
-
- # Young gen: min(max_sensible_per_modern_cpu_core * num_cores, 1/4 * heap size)
- max_sensible_yg_per_core_in_mb="100"
- max_sensible_yg_in_mb=`expr $max_sensible_yg_per_core_in_mb "*" $system_cpu_cores`
-
- desired_yg_in_mb=`expr $max_heap_size_in_mb / 4`
-
- if [ "$desired_yg_in_mb" -gt "$max_sensible_yg_in_mb" ]
- then
- HEAP_NEWSIZE="${max_sensible_yg_in_mb}M"
- else
- HEAP_NEWSIZE="${desired_yg_in_mb}M"
- fi
-}
-
-# Determine the sort of JVM we'll be running on.
-
-java_ver_output=`"${JAVA:-java}" -version 2>&1`
-
-jvmver=`echo "$java_ver_output" | awk -F'"' 'NR==1 {print $2}'`
-JVM_VERSION=${jvmver%_*}
-JVM_PATCH_VERSION=${jvmver#*_}
-
-jvm=`echo "$java_ver_output" | awk 'NR==2 {print $1}'`
-case "$jvm" in
- OpenJDK)
- JVM_VENDOR=OpenJDK
- # this will be "64-Bit" or "32-Bit"
- JVM_ARCH=`echo "$java_ver_output" | awk 'NR==3 {print $2}'`
- ;;
- "Java(TM)")
- JVM_VENDOR=Oracle
- # this will be "64-Bit" or "32-Bit"
- JVM_ARCH=`echo "$java_ver_output" | awk 'NR==3 {print $3}'`
- ;;
- *)
- # Help fill in other JVM values
- JVM_VENDOR=other
- JVM_ARCH=unknown
- ;;
-esac
-
-
-# Override these to set the amount of memory to allocate to the JVM at
-# start-up. For production use you may wish to adjust this for your
-# environment. MAX_HEAP_SIZE is the total amount of memory dedicated
-# to the Java heap; HEAP_NEWSIZE refers to the size of the young
-# generation. Both MAX_HEAP_SIZE and HEAP_NEWSIZE should be either set
-# or not (if you set one, set the other).
-#
-# The main trade-off for the young generation is that the larger it
-# is, the longer GC pause times will be. The shorter it is, the more
-# expensive GC will be (usually).
-#
-# The example HEAP_NEWSIZE assumes a modern 8-core+ machine for decent pause
-# times. If in doubt, and if you do not particularly want to tweak, go with
-# 100 MB per physical CPU core.
-
-#MAX_HEAP_SIZE="4G"
-#HEAP_NEWSIZE="800M"
-
-if [ "x$MAX_HEAP_SIZE" = "x" ] && [ "x$HEAP_NEWSIZE" = "x" ]; then
- calculate_heap_sizes
-else
- if [ "x$MAX_HEAP_SIZE" = "x" ] || [ "x$HEAP_NEWSIZE" = "x" ]; then
- echo "please set or unset MAX_HEAP_SIZE and HEAP_NEWSIZE in pairs (see cassandra-env.sh)"
- exit 1
- fi
-fi
-
-# Specifies the default port over which Cassandra will be available for
-# JMX connections.
-JMX_PORT="@@jmx.port(a)@"
-
-
-# Here we create the arguments that will get passed to the jvm when
-# starting cassandra.
-
-# enable assertions. disabling this in production will give a modest
-# performance benefit (around 5%).
-JVM_OPTS="$JVM_OPTS -ea"
-
-# add the jamm javaagent
-if [ "$JVM_VENDOR" != "OpenJDK" -o "$JVM_VERSION" \> "1.6.0" ] \
- || [ "$JVM_VERSION" = "1.6.0" -a "$JVM_PATCH_VERSION" -ge 23 ]
-then
- JVM_OPTS="$JVM_OPTS -javaagent:$CASSANDRA_HOME/lib/jamm-0.2.5.jar"
-fi
-
-# enable thread priorities, primarily so we can give periodic tasks
-# a lower priority to avoid interfering with client workload
-JVM_OPTS="$JVM_OPTS -XX:+UseThreadPriorities"
-# allows lowering thread priority without being root. see
-# http://tech.stolsvik.com/2010/01/linux-java-thread-priorities-workaround....
-JVM_OPTS="$JVM_OPTS -XX:ThreadPriorityPolicy=42"
-
-# min and max heap sizes should be set to the same value to avoid
-# stop-the-world GC pauses during resize, and so that we can lock the
-# heap in memory on startup to prevent any of it from being swapped
-# out.
-JVM_OPTS="$JVM_OPTS -Xms${MAX_HEAP_SIZE}"
-JVM_OPTS="$JVM_OPTS -Xmx${MAX_HEAP_SIZE}"
-JVM_OPTS="$JVM_OPTS -Xmn${HEAP_NEWSIZE}"
-JVM_OPTS="$JVM_OPTS -XX:+HeapDumpOnOutOfMemoryError"
-
-# set jvm HeapDumpPath with CASSANDRA_HEAPDUMP_DIR
-if [ "x$CASSANDRA_HEAPDUMP_DIR" != "x" ]; then
- JVM_OPTS="$JVM_OPTS -XX:HeapDumpPath=$CASSANDRA_HEAPDUMP_DIR/cassandra-`date +%s`-pid$$.hprof"
-fi
-
-
-startswith() { [ "${1#$2}" != "$1" ]; }
-
-if [ "`uname`" = "Linux" ] ; then
- # reduce the per-thread stack size to minimize the impact of Thrift
- # thread-per-client. (Best practice is for client connections to
- # be pooled anyway.) Only do so on Linux where it is known to be
- # supported.
- # u34 and greater need 180k
- JVM_OPTS="$JVM_OPTS -Xss180k"
-fi
-echo "xss = $JVM_OPTS"
-
-# GC tuning options
-JVM_OPTS="$JVM_OPTS -XX:+UseParNewGC"
-JVM_OPTS="$JVM_OPTS -XX:+UseConcMarkSweepGC"
-JVM_OPTS="$JVM_OPTS -XX:+CMSParallelRemarkEnabled"
-JVM_OPTS="$JVM_OPTS -XX:SurvivorRatio=8"
-JVM_OPTS="$JVM_OPTS -XX:MaxTenuringThreshold=1"
-JVM_OPTS="$JVM_OPTS -XX:CMSInitiatingOccupancyFraction=75"
-JVM_OPTS="$JVM_OPTS -XX:+UseCMSInitiatingOccupancyOnly"
-
-# GC logging options -- uncomment to enable
-# JVM_OPTS="$JVM_OPTS -XX:+PrintGCDetails"
-# JVM_OPTS="$JVM_OPTS -XX:+PrintGCDateStamps"
-# JVM_OPTS="$JVM_OPTS -XX:+PrintHeapAtGC"
-# JVM_OPTS="$JVM_OPTS -XX:+PrintTenuringDistribution"
-# JVM_OPTS="$JVM_OPTS -XX:+PrintGCApplicationStoppedTime"
-# JVM_OPTS="$JVM_OPTS -XX:+PrintPromotionFailure"
-# JVM_OPTS="$JVM_OPTS -XX:PrintFLSStatistics=1"
-# JVM_OPTS="$JVM_OPTS -Xloggc:/var/log/cassandra/gc-`date +%s`.log"
-
-# uncomment to have Cassandra JVM listen for remote debuggers/profilers on port 1414
-# JVM_OPTS="$JVM_OPTS -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1414"
-
-# Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See
-# http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version:
-# comment out this entry to enable IPv6 support).
-JVM_OPTS="$JVM_OPTS -Djava.net.preferIPv4Stack=true"
-
-# jmx: metrics and administration interface
-#
-# add this if you're having trouble connecting:
-# JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<public name>"
-#
-# see
-# https://blogs.oracle.com/jmxetc/entry/troubleshooting_connection_problems...
-# for more on configuring JMX through firewalls, etc. (Short version:
-# get it working with no firewall first.)
-JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT"
-JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl=false"
-JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
-JVM_OPTS="$JVM_OPTS $JVM_EXTRA_OPTS"
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/cassandra-rackdc.properties b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/cassandra-rackdc.properties
deleted file mode 100644
index b792885..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/cassandra-rackdc.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# This file is specifically for the GossipingPropertyFileSnitch and will
-# indicate the rack and dc for this node
-dc=DC1
-rack=RAC1
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/cassandra-topology.properties b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/cassandra-topology.properties
deleted file mode 100644
index d1423d4..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/cassandra-topology.properties
+++ /dev/null
@@ -1,41 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Cassandra Node IP=Data Center:Rack
-192.168.1.100=DC1:RAC1
-192.168.2.200=DC2:RAC2
-
-10.0.0.10=DC1:RAC1
-10.0.0.11=DC1:RAC1
-10.0.0.12=DC1:RAC2
-
-10.20.114.10=DC2:RAC1
-10.20.114.11=DC2:RAC1
-
-10.21.119.13=DC3:RAC1
-10.21.119.10=DC3:RAC1
-
-10.0.0.13=DC1:RAC2
-10.21.119.14=DC3:RAC2
-10.20.114.15=DC2:RAC2
-
-# default for unknown nodes
-default=DC1:r1
-
-# Native IPv6 is supported, however you must escape the colon in the IPv6 Address
-# Also be sure to comment out JVM_OPTS="$JVM_OPTS -Djava.net.preferIPv4Stack=true"
-# in cassandra-env.sh
-fe80\:0\:0\:0\:202\:b3ff\:fe1e\:8329=DC1:RAC3
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/cassandra.yaml b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/cassandra.yaml
deleted file mode 100644
index 87a0d95..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/cassandra.yaml
+++ /dev/null
@@ -1,575 +0,0 @@
-# Cassandra storage config YAML
-
-# NOTE:
-# See http://wiki.apache.org/cassandra/StorageConfiguration for
-# full explanations of configuration directives
-# /NOTE
-
-# The name of the cluster. This is mainly used to prevent machines in
-# one logical cluster from joining another.
-cluster_name: @@cluster.name(a)@
-
-# You should always specify InitialToken when setting up a production
-# cluster for the first time, and often when adding capacity later.
-# The principle is that each node should be given an equal slice of
-# the token ring; see http://wiki.apache.org/cassandra/Operations
-# for more details.
-#
-# If blank, Cassandra will request a token bisecting the range of
-# the heaviest-loaded existing node. If there is no load information
-# available, such as is the case with a new cluster, it will pick
-# a random token, which will lead to hot spots.
-initial_token: @@initial.token(a)@
-
-# Set to true to make new (non-seed) node that automatically migrates
-# the right data to itself. If no initial token is specified, the node
-# will pick one such that it will get half the range of the most loaded
-# node. If a node starts up without boostrapping, it will mark itself
-# bootstrapped so that you cannot subsequently accidently boostrap a
-# node with data on it.
-auto_bootstrap: @@auto.bootstrap(a)@
-
-# See http://wiki.apache.org/cassandra/HintedHandoff
-hinted_handoff_enabled: true
-# this defines the maximum amount of time a dead host will have hints
-# generated. After it has been dead this long, hints will be dropped.
-max_hint_window_in_ms: 3600000 # one hour
-# Sleep this long after delivering each hint
-hinted_handoff_throttle_delay_in_ms: 1
-
-# The following setting populates the page cache on memtable flush and compaction
-# WARNING: Enable this setting only when the whole node's data fits in memory.
-# Defaults to: false
-# populate_io_cache_on_flush: false
-
-# authentication backend, implementing IAuthenticator; used to identify users
-authenticator: org.apache.cassandra.auth.AllowAllAuthenticator
-
-# authorization backend, implementing IAuthority; used to limit access/provide permissions
-authority: org.apache.cassandra.auth.AllowAllAuthority
-
-# The partitioner is responsible for distributing rows (by key) across
-# nodes in the cluster. Any IPartitioner may be used, including your
-# own as long as it is on the classpath. Out of the box, Cassandra
-# provides org.apache.cassandra.dht.RandomPartitioner
-# org.apache.cassandra.dht.ByteOrderedPartitioner,
-# org.apache.cassandra.dht.OrderPreservingPartitioner (deprecated),
-# and org.apache.cassandra.dht.CollatingOrderPreservingPartitioner
-# (deprecated).
-#
-# - RandomPartitioner distributes rows across the cluster evenly by md5.
-# When in doubt, this is the best option.
-# - ByteOrderedPartitioner orders rows lexically by key bytes. BOP allows
-# scanning rows in key order, but the ordering can generate hot spots
-# for sequential insertion workloads.
-# - OrderPreservingPartitioner is an obsolete form of BOP, that stores
-# - keys in a less-efficient format and only works with keys that are
-# UTF8-encoded Strings.
-# - CollatingOPP colates according to EN,US rules rather than lexical byte
-# ordering. Use this as an example if you need custom collation.
-#
-# See http://wiki.apache.org/cassandra/Operations for more on
-# partitioners and token selection.
-partitioner: org.apache.cassandra.dht.RandomPartitioner
-
-# directories where Cassandra should store data on disk.
-data_file_directories:
- - @@rhq.deploy.dir@@/@@data.dir(a)@
-
-# commit log
-commitlog_directory: @@rhq.deploy.dir@@/@@commitlog.dir(a)@
-
-# Maximum size of the key cache in memory.
-#
-# Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the
-# minimum, sometimes more. The key cache is fairly tiny for the amount of
-# time it saves, so it's worthwhile to use it at large numbers.
-# The row cache saves even more time, but must store the whole values of
-# its rows, so it is extremely space-intensive. It's best to only use the
-# row cache if you have hot rows or static rows.
-#
-# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.
-#
-# Default value is empty to make it "auto" (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache.
-key_cache_size_in_mb:
-
-# Duration in seconds after which Cassandra should
-# safe the keys cache. Caches are saved to saved_caches_directory as
-# specified in this configuration file.
-#
-# Saved caches greatly improve cold-start speeds, and is relatively cheap in
-# terms of I/O for the key cache. Row cache saving is much more expensive and
-# has limited use.
-#
-# Default is 14400 or 4 hours.
-key_cache_save_period: 14400
-
-# Number of keys from the key cache to save
-# Disabled by default, meaning all keys are going to be saved
-# key_cache_keys_to_save: 100
-
-# Maximum size of the row cache in memory.
-# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.
-#
-# Default value is 0, to disable row caching.
-row_cache_size_in_mb: 0
-
-# Duration in seconds after which Cassandra should
-# safe the row cache. Caches are saved to saved_caches_directory as specified
-# in this configuration file.
-#
-# Saved caches greatly improve cold-start speeds, and is relatively cheap in
-# terms of I/O for the key cache. Row cache saving is much more expensive and
-# has limited use.
-#
-# Default is 0 to disable saving the row cache.
-row_cache_save_period: 0
-
-# Number of keys from the row cache to save
-# Disabled by default, meaning all keys are going to be saved
-# row_cache_keys_to_save: 100
-
-# The provider for the row cache to use.
-#
-# Supported values are: ConcurrentLinkedHashCacheProvider, SerializingCacheProvider
-#
-# SerializingCacheProvider serialises the contents of the row and stores
-# it in native memory, i.e., off the JVM Heap. Serialized rows take
-# significantly less memory than "live" rows in the JVM, so you can cache
-# more rows in a given memory footprint. And storing the cache off-heap
-# means you can use smaller heap sizes, reducing the impact of GC pauses.
-#
-# It is also valid to specify the fully-qualified class name to a class
-# that implements org.apache.cassandra.cache.IRowCacheProvider.
-#
-# Defaults to SerializingCacheProvider
-row_cache_provider: SerializingCacheProvider
-
-# saved caches
-saved_caches_directory: @@rhq.deploy.dir@@/@@saved.caches.dir(a)@
-
-# commitlog_sync may be either "periodic" or "batch."
-# When in batch mode, Cassandra won't ack writes until the commit log
-# has been fsynced to disk. It will wait up to
-# commitlog_sync_batch_window_in_ms milliseconds for other writes, before
-# performing the sync.
-#
-# commitlog_sync: batch
-# commitlog_sync_batch_window_in_ms: 50
-#
-# the other option is "periodic" where writes may be acked immediately
-# and the CommitLog is simply synced every commitlog_sync_period_in_ms
-# milliseconds.
-commitlog_sync: periodic
-commitlog_sync_period_in_ms: 10000
-
-# The size of the individual commitlog file segments. A commitlog
-# segment may be archived, deleted, or recycled once all the data
-# in it (potentally from each columnfamily in the system) has been
-# flushed to sstables.
-#
-# The default size is 32, which is almost always fine, but if you are
-# archiving commitlog segments (see commitlog_archiving.properties),
-# then you probably want a finer granularity of archiving; 8 or 16 MB
-# is reasonable.
-commitlog_segment_size_in_mb: 32
-
-# any class that implements the SeedProvider interface and has a
-# constructor that takes a Map<String, String> of parameters will do.
-seed_provider:
- # Addresses of hosts that are deemed contact points.
- # Cassandra nodes use this list of hosts to find each other and learn
- # the topology of the ring. You must change this if you are running
- # multiple nodes!
- - class_name: org.apache.cassandra.locator.SimpleSeedProvider
- parameters:
- # seeds is actually a comma-delimited list of addresses.
- # Ex: "<ip1>,<ip2>,<ip3>"
- - seeds: "@@seeds@@"
-
-# emergency pressure valve: each time heap usage after a full (CMS)
-# garbage collection is above this fraction of the max, Cassandra will
-# flush the largest memtables.
-#
-# Set to 1.0 to disable. Setting this lower than
-# CMSInitiatingOccupancyFraction is not likely to be useful.
-#
-# RELYING ON THIS AS YOUR PRIMARY TUNING MECHANISM WILL WORK POORLY:
-# it is most effective under light to moderate load, or read-heavy
-# workloads; under truly massive write load, it will often be too
-# little, too late.
-flush_largest_memtables_at: 0.75
-
-# emergency pressure valve #2: the first time heap usage after a full
-# (CMS) garbage collection is above this fraction of the max,
-# Cassandra will reduce cache maximum _capacity_ to the given fraction
-# of the current _size_. Should usually be set substantially above
-# flush_largest_memtables_at, since that will have less long-term
-# impact on the system.
-#
-# Set to 1.0 to disable. Setting this lower than
-# CMSInitiatingOccupancyFraction is not likely to be useful.
-reduce_cache_sizes_at: 0.85
-reduce_cache_capacity_to: 0.6
-
-# For workloads with more data than can fit in memory, Cassandra's
-# bottleneck will be reads that need to fetch data from
-# disk. "concurrent_reads" should be set to (16 * number_of_drives) in
-# order to allow the operations to enqueue low enough in the stack
-# that the OS and drives can reorder them.
-#
-# On the other hand, since writes are almost never IO bound, the ideal
-# number of "concurrent_writes" is dependent on the number of cores in
-# your system; (8 * number_of_cores) is a good rule of thumb.
-concurrent_reads: 32
-concurrent_writes: 32
-
-# Total memory to use for memtables. Cassandra will flush the largest
-# memtable when this much memory is used.
-# If omitted, Cassandra will set it to 1/3 of the heap.
-# memtable_total_space_in_mb: 2048
-
-# Total space to use for commitlogs. Since commitlog segments are
-# mmapped, and hence use up address space, the default size is 32
-# on 32-bit JVMs, and 1024 on 64-bit JVMs.
-#
-# If space gets above this value (it will round up to the next nearest
-# segment multiple), Cassandra will flush every dirty CF in the oldest
-# segment and remove it. So a small total commitlog space will tend
-# to cause more flush activity on less-active columnfamilies.
-# commitlog_total_space_in_mb: 4096
-
-# This sets the amount of memtable flush writer threads. These will
-# be blocked by disk io, and each one will hold a memtable in memory
-# while blocked. If you have a large heap and many data directories,
-# you can increase this value for better flush performance.
-# By default this will be set to the amount of data directories defined.
-#memtable_flush_writers: 1
-
-# the number of full memtables to allow pending flush, that is,
-# waiting for a writer thread. At a minimum, this should be set to
-# the maximum number of secondary indexes created on a single CF.
-memtable_flush_queue_size: 4
-
-# Whether to, when doing sequential writing, fsync() at intervals in
-# order to force the operating system to flush the dirty
-# buffers. Enable this to avoid sudden dirty buffer flushing from
-# impacting read latencies. Almost always a good idea on SSD:s; not
-# necessarily on platters.
-trickle_fsync: false
-trickle_fsync_interval_in_kb: 10240
-
-# TCP port, for commands and data
-storage_port: 7000
-
-# SSL port, for encrypted communication. Unused unless enabled in
-# encryption_options
-ssl_storage_port: 7001
-
-# Address to bind to and tell other Cassandra nodes to connect to. You
-# _must_ change this if you want multiple nodes to be able to
-# communicate!
-#
-# Leaving it blank leaves it up to InetAddress.getLocalHost(). This
-# will always do the Right Thing *if* the node is properly configured
-# (hostname, name resolution, etc), and the Right Thing is to use the
-# address associated with the hostname (it might not be).
-#
-# Setting this to 0.0.0.0 is always wrong.
-listen_address: @@listen.address(a)@
-
-# Address to broadcast to other Cassandra nodes
-# Leaving this blank will set it to the same value as listen_address
-# broadcast_address: 1.2.3.4
-
-# The address to bind the Thrift RPC service to -- clients connect
-# here. Unlike ListenAddress above, you *can* specify 0.0.0.0 here if
-# you want Thrift to listen on all interfaces.
-#
-# Leaving this blank has the same effect it does for ListenAddress,
-# (i.e. it will be based on the configured hostname of the node).
-rpc_address: @@rpc.address(a)@
-# port for Thrift to listen for clients on
-rpc_port: 9160
-
-# enable or disable keepalive on rpc connections
-rpc_keepalive: true
-
-# Cassandra provides three options for the RPC Server:
-#
-# sync -> One connection per thread in the rpc pool (see below).
-# For a very large number of clients, memory will be your limiting
-# factor; on a 64 bit JVM, 128KB is the minimum stack size per thread.
-# Connection pooling is very, very strongly recommended.
-#
-# async -> Nonblocking server implementation with one thread to serve
-# rpc connections. This is not recommended for high throughput use
-# cases. Async has been tested to be about 50% slower than sync
-# or hsha and is deprecated: it will be removed in the next major release.
-#
-# hsha -> Stands for "half synchronous, half asynchronous." The rpc thread pool
-# (see below) is used to manage requests, but the threads are multiplexed
-# across the different clients.
-#
-# The default is sync because on Windows hsha is about 30% slower. On Linux,
-# sync/hsha performance is about the same, with hsha of course using less memory.
-rpc_server_type: sync
-
-# Uncomment rpc_min|max|thread to set request pool size.
-# You would primarily set max for the sync server to safeguard against
-# misbehaved clients; if you do hit the max, Cassandra will block until one
-# disconnects before accepting more. The defaults for sync are min of 16 and max
-# unlimited.
-#
-# For the Hsha server, the min and max both default to quadruple the number of
-# CPU cores.
-#
-# This configuration is ignored by the async server.
-#
-# rpc_min_threads: 16
-# rpc_max_threads: 2048
-
-# uncomment to set socket buffer sizes on rpc connections
-# rpc_send_buff_size_in_bytes:
-# rpc_recv_buff_size_in_bytes:
-
-# Frame size for thrift (maximum field length).
-# 0 disables TFramedTransport in favor of TSocket. This option
-# is deprecated; we strongly recommend using Framed mode.
-thrift_framed_transport_size_in_mb: 15
-
-# The max length of a thrift message, including all fields and
-# internal thrift overhead.
-thrift_max_message_length_in_mb: 16
-
-# Set to true to have Cassandra create a hard link to each sstable
-# flushed or streamed locally in a backups/ subdirectory of the
-# Keyspace data. Removing these links is the operator's
-# responsibility.
-incremental_backups: false
-
-# Whether or not to take a snapshot before each compaction. Be
-# careful using this option, since Cassandra won't clean up the
-# snapshots for you. Mostly useful if you're paranoid when there
-# is a data format change.
-snapshot_before_compaction: false
-
-# Whether or not a snapshot is taken of the data before keyspace truncation
-# or dropping of column families. The STRONGLY advised default of true
-# should be used to provide data safety. If you set this flag to false, you will
-# lose data on truncation or drop.
-auto_snapshot: true
-
-# Add column indexes to a row after its contents reach this size.
-# Increase if your column values are large, or if you have a very large
-# number of columns. The competing causes are, Cassandra has to
-# deserialize this much of the row to read a single column, so you want
-# it to be small - at least if you do many partial-row reads - but all
-# the index data is read for each access, so you don't want to generate
-# that wastefully either.
-column_index_size_in_kb: 64
-
-# Size limit for rows being compacted in memory. Larger rows will spill
-# over to disk and use a slower two-pass compaction process. A message
-# will be logged specifying the row key.
-in_memory_compaction_limit_in_mb: 64
-
-# Number of simultaneous compactions to allow, NOT including
-# validation "compactions" for anti-entropy repair. Simultaneous
-# compactions can help preserve read performance in a mixed read/write
-# workload, by mitigating the tendency of small sstables to accumulate
-# during a single long running compactions. The default is usually
-# fine and if you experience problems with compaction running too
-# slowly or too fast, you should look at
-# compaction_throughput_mb_per_sec first.
-#
-# This setting has no effect on LeveledCompactionStrategy.
-#
-# concurrent_compactors defaults to the number of cores.
-# Uncomment to make compaction mono-threaded, the pre-0.8 default.
-#concurrent_compactors: 1
-
-# Multi-threaded compaction. When enabled, each compaction will use
-# up to one thread per core, plus one thread per sstable being merged.
-# This is usually only useful for SSD-based hardware: otherwise,
-# your concern is usually to get compaction to do LESS i/o (see:
-# compaction_throughput_mb_per_sec), not more.
-multithreaded_compaction: false
-
-# Throttles compaction to the given total throughput across the entire
-# system. The faster you insert data, the faster you need to compact in
-# order to keep the sstable count down, but in general, setting this to
-# 16 to 32 times the rate you are inserting data is more than sufficient.
-# Setting this to 0 disables throttling. Note that this account for all types
-# of compaction, including validation compaction.
-compaction_throughput_mb_per_sec: 16
-
-# Track cached row keys during compaction, and re-cache their new
-# positions in the compacted sstable. Disable if you use really large
-# key caches.
-compaction_preheat_key_cache: true
-
-# Throttles all outbound streaming file transfers on this node to the
-# given total throughput in Mbps. This is necessary because Cassandra does
-# mostly sequential IO when streaming data during bootstrap or repair, which
-# can lead to saturating the network connection and degrading rpc performance.
-# When unset, the default is 400 Mbps or 50 MB/s.
-# stream_throughput_outbound_megabits_per_sec: 400
-
-# Time to wait for a reply from other nodes before failing the command
-rpc_timeout_in_ms: 10000
-
-# Enable socket timeout for streaming operation.
-# When a timeout occurs during streaming, streaming is retried from the start
-# of the current file. This *can* involve re-streaming an important amount of
-# data, so you should avoid setting the value too low.
-# Default value is 0, which never timeout streams.
-# streaming_socket_timeout_in_ms: 0
-
-# phi value that must be reached for a host to be marked down.
-# most users should never need to adjust this.
-# phi_convict_threshold: 8
-
-# endpoint_snitch -- Set this to a class that implements
-# IEndpointSnitch. The snitch has two functions:
-# - it teaches Cassandra enough about your network topology to route
-# requests efficiently
-# - it allows Cassandra to spread replicas around your cluster to avoid
-# correlated failures. It does this by grouping machines into
-# "datacenters" and "racks." Cassandra will do its best not to have
-# more than one replica on the same "rack" (which may not actually
-# be a physical location)
-#
-# IF YOU CHANGE THE SNITCH AFTER DATA IS INSERTED INTO THE CLUSTER,
-# YOU MUST RUN A FULL REPAIR, SINCE THE SNITCH AFFECTS WHERE REPLICAS
-# ARE PLACED.
-#
-# Out of the box, Cassandra provides
-# - SimpleSnitch:
-# Treats Strategy order as proximity. This improves cache locality
-# when disabling read repair, which can further improve throughput.
-# Only appropriate for single-datacenter deployments.
-# - PropertyFileSnitch:
-# Proximity is determined by rack and data center, which are
-# explicitly configured in cassandra-topology.properties.
-# - GossipingPropertyFileSnitch
-# The rack and datacenter for the local node are defined in
-# cassandra-rackdc.properties and propagated to other nodes via gossip. If
-# cassandra-topology.properties exists, it is used as a fallback, allowing
-# migration from the PropertyFileSnitch.
-# - RackInferringSnitch:
-# Proximity is determined by rack and data center, which are
-# assumed to correspond to the 3rd and 2nd octet of each node's
-# IP address, respectively. Unless this happens to match your
-# deployment conventions (as it did Facebook's), this is best used
-# as an example of writing a custom Snitch class.
-# - Ec2Snitch:
-# Appropriate for EC2 deployments in a single Region. Loads Region
-# and Availability Zone information from the EC2 API. The Region is
-# treated as the Datacenter, and the Availability Zone as the rack.
-# Only private IPs are used, so this will not work across multiple
-# Regions.
-# - Ec2MultiRegionSnitch:
-# Uses public IPs as broadcast_address to allow cross-region
-# connectivity. (Thus, you should set seed addresses to the public
-# IP as well.) You will need to open the storage_port or
-# ssl_storage_port on the public IP firewall. (For intra-Region
-# traffic, Cassandra will switch to the private IP after
-# establishing a connection.)
-#
-# You can use a custom Snitch by setting this to the full class name
-# of the snitch, which will be assumed to be on your classpath.
-endpoint_snitch: SimpleSnitch
-
-# controls how often to perform the more expensive part of host score
-# calculation
-dynamic_snitch_update_interval_in_ms: 100
-# controls how often to reset all host scores, allowing a bad host to
-# possibly recover
-dynamic_snitch_reset_interval_in_ms: 600000
-# if set greater than zero and read_repair_chance is < 1.0, this will allow
-# 'pinning' of replicas to hosts in order to increase cache capacity.
-# The badness threshold will control how much worse the pinned host has to be
-# before the dynamic snitch will prefer other replicas over it. This is
-# expressed as a double which represents a percentage. Thus, a value of
-# 0.2 means Cassandra would continue to prefer the static snitch values
-# until the pinned host was 20% worse than the fastest.
-dynamic_snitch_badness_threshold: 0.1
-
-# request_scheduler -- Set this to a class that implements
-# RequestScheduler, which will schedule incoming client requests
-# according to the specific policy. This is useful for multi-tenancy
-# with a single Cassandra cluster.
-# NOTE: This is specifically for requests from the client and does
-# not affect inter node communication.
-# org.apache.cassandra.scheduler.NoScheduler - No scheduling takes place
-# org.apache.cassandra.scheduler.RoundRobinScheduler - Round robin of
-# client requests to a node with a separate queue for each
-# request_scheduler_id. The scheduler is further customized by
-# request_scheduler_options as described below.
-request_scheduler: org.apache.cassandra.scheduler.NoScheduler
-
-# Scheduler Options vary based on the type of scheduler
-# NoScheduler - Has no options
-# RoundRobin
-# - throttle_limit -- The throttle_limit is the number of in-flight
-# requests per client. Requests beyond
-# that limit are queued up until
-# running requests can complete.
-# The value of 80 here is twice the number of
-# concurrent_reads + concurrent_writes.
-# - default_weight -- default_weight is optional and allows for
-# overriding the default which is 1.
-# - weights -- Weights are optional and will default to 1 or the
-# overridden default_weight. The weight translates into how
-# many requests are handled during each turn of the
-# RoundRobin, based on the scheduler id.
-#
-# request_scheduler_options:
-# throttle_limit: 80
-# default_weight: 5
-# weights:
-# Keyspace1: 1
-# Keyspace2: 5
-
-# request_scheduler_id -- An identifer based on which to perform
-# the request scheduling. Currently the only valid option is keyspace.
-# request_scheduler_id: keyspace
-
-# index_interval controls the sampling of entries from the primrary
-# row index in terms of space versus time. The larger the interval,
-# the smaller and less effective the sampling will be. In technicial
-# terms, the interval coresponds to the number of index entries that
-# are skipped between taking each sample. All the sampled entries
-# must fit in memory. Generally, a value between 128 and 512 here
-# coupled with a large key cache size on CFs results in the best trade
-# offs. This value is not often changed, however if you have many
-# very small rows (many to an OS page), then increasing this will
-# often lower memory usage without a impact on performance.
-index_interval: 128
-
-# Enable or disable inter-node encryption
-# Default settings are TLS v1, RSA 1024-bit keys (it is imperative that
-# users generate their own keys) TLS_RSA_WITH_AES_128_CBC_SHA as the cipher
-# suite for authentication, key exchange and encryption of the actual data transfers.
-# NOTE: No custom encryption options are enabled at the moment
-# The available internode options are : all, none, dc, rack
-#
-# If set to dc cassandra will encrypt the traffic between the DCs
-# If set to rack cassandra will encrypt the traffic between the racks
-#
-# The passwords used in these options must match the passwords used when generating
-# the keystore and truststore. For instructions on generating these files, see:
-# http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/J...
-#
-encryption_options:
- internode_encryption: none
- keystore: conf/.keystore
- keystore_password: cassandra
- truststore: conf/.truststore
- truststore_password: cassandra
- # More advanced defaults below:
- # protocol: TLS
- # algorithm: SunX509
- # store_type: JKS
- # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA]
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/commitlog_archiving.properties b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/commitlog_archiving.properties
deleted file mode 100644
index 23adaeb..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/commitlog_archiving.properties
+++ /dev/null
@@ -1,54 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# commitlog archiving configuration. Leave blank to disable.
-
-# Command to execute to archive a commitlog segment
-# Parameters: %path => Fully qualified path of the segment to archive
-# %name => Name of the commit log.
-# Example: archive_command=/bin/ln %path /backup/%name
-#
-# commitlog archiving configuration. Leave blank to disable.
-
-# Command to execute to archive a commitlog segment
-# Parameters: %path => Fully qualified path of the segment to archive
-# %name => Name of the commit log.
-# Example: archive_command=/bin/ln %path /backup/%name
-#
-# Limitation: *_command= expects one command with arguments. STDOUT
-# and STDIN or multiple commands cannot be executed. You might want
-# to script multiple commands and add a pointer here.
-archive_command=
-
-# Command to execute to make an archived commitlog live again.
-# Parameters: %from is the full path to an archived commitlog segment (from restore_directories)
-# %to is the live commitlog directory
-# Example: restore_command=cp -f %from %to
-restore_command=
-
-# Directory to scan the recovery files in.
-restore_directories=
-
-# Restore mutations created up to and including this timestamp.
-# Format: 2012-04-31 20:43:12
-#
-# Note! Recovery will stop when the first client-supplied timestamp
-# greater than this time is encountered. Since the order Cassandra
-# receives mutations does not always strictly follow timestamp order,
-# this may leave some mutations with timestamps earlier than the
-# point-in-time unrecovered.
-restore_point_in_time=
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/log4j-server.properties b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/log4j-server.properties
deleted file mode 100644
index d3b1874..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/log4j-server.properties
+++ /dev/null
@@ -1,44 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# for production, you should probably set pattern to %c instead of %l.
-# (%l is slower.)
-
-# output messages into a rolling log file as well as stdout
-log4j.rootLogger=@@logging.level@(a),stdout,R
-
-# stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%5p %d{HH:mm:ss,SSS} %m%n
-
-# rolling log file
-log4j.appender.R=org.apache.log4j.RollingFileAppender
-log4j.appender.R.maxFileSize=20MB
-log4j.appender.R.maxBackupIndex=50
-log4j.appender.R.layout=org.apache.log4j.PatternLayout
-log4j.appender.R.layout.ConversionPattern=%5p [%t] %d{ISO8601} %F (line %L) %m%n
-# Edit the next line to point to your logs directory
-log4j.appender.R.File=@@rhq.deploy.dir@@/@@log.dir@(a)/system.log
-
-# Application logging options
-#log4j.logger.org.apache.cassandra=DEBUG
-#log4j.logger.org.apache.cassandra.db=DEBUG
-#log4j.logger.org.apache.cassandra.service.StorageProxy=DEBUG
-
-# Adding this to avoid thrift logging disconnect errors.
-log4j.logger.org.apache.thrift.server.TNonblockingServer=ERROR
-
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/log4j-tools.properties b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/log4j-tools.properties
deleted file mode 100644
index a8f4d9f..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/conf/log4j-tools.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# for production, you should probably set the root to INFO
-# and the pattern to %c instead of %l. (%l is slower.)
-
-# output messages into a rolling log file as well as stdout
-log4j.rootLogger=WARN,stderr
-
-# stderr
-log4j.appender.stderr=org.apache.log4j.ConsoleAppender
-log4j.appender.stderr.target=System.err
-log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
-log4j.appender.stderr.layout.ConversionPattern=%5p %d{HH:mm:ss,SSS} %m%n
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/interface/cassandra.thrift b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/interface/cassandra.thrift
deleted file mode 100644
index 6df9628..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/interface/cassandra.thrift
+++ /dev/null
@@ -1,768 +0,0 @@
-#!/usr/local/bin/thrift --java --php --py
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# *** PLEASE REMEMBER TO EDIT THE VERSION CONSTANT WHEN MAKING CHANGES ***
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-#
-# Interface definition for Cassandra Service
-#
-
-namespace java org.apache.cassandra.thrift
-namespace cpp org.apache.cassandra
-namespace csharp Apache.Cassandra
-namespace py cassandra
-namespace php cassandra
-namespace perl Cassandra
-
-# Thrift.rb has a bug where top-level modules that include modules
-# with the same name are not properly referenced, so we can't do
-# Cassandra::Cassandra::Client.
-namespace rb CassandraThrift
-
-# The API version (NOT the product version), composed as a dot delimited
-# string with major, minor, and patch level components.
-#
-# - Major: Incremented for backward incompatible changes. An example would
-# be changes to the number or disposition of method arguments.
-# - Minor: Incremented for backward compatible changes. An example would
-# be the addition of a new (optional) method.
-# - Patch: Incremented for bug fixes. The patch level should be increased
-# for every edit that doesn't result in a change to major/minor.
-#
-# See the Semantic Versioning Specification (SemVer) http://semver.org .
-#
-# Note that this backwards compatibility is from the perspective of the server,
-# not the client. Cassandra should always be able to talk to older client
-# software, but client software may not be able to talk to older Cassandra
-# instances.
-#
-# An effort should be made not to break forward-client-compatibility either
-# (e.g. one should avoid removing obsolete fields from the IDL), but no
-# guarantees in this respect are made by the Cassandra project.
-const string VERSION = "19.32.0"
-
-
-#
-# data structures
-#
-
-/** Basic unit of data within a ColumnFamily.
- * @param name, the name by which this column is set and retrieved. Maximum 64KB long.
- * @param value. The data associated with the name. Maximum 2GB long, but in practice you should limit it to small numbers of MB (since Thrift must read the full value into memory to operate on it).
- * @param timestamp. The timestamp is used for conflict detection/resolution when two columns with same name need to be compared.
- * @param ttl. An optional, positive delay (in seconds) after which the column will be automatically deleted.
- */
-struct Column {
- 1: required binary name,
- 2: optional binary value,
- 3: optional i64 timestamp,
- 4: optional i32 ttl,
-}
-
-/** A named list of columns.
- * @param name. see Column.name.
- * @param columns. A collection of standard Columns. The columns within a super column are defined in an adhoc manner.
- * Columns within a super column do not have to have matching structures (similarly named child columns).
- */
-struct SuperColumn {
- 1: required binary name,
- 2: required list<Column> columns,
-}
-
-struct CounterColumn {
- 1: required binary name,
- 2: required i64 value
-}
-
-struct CounterSuperColumn {
- 1: required binary name,
- 2: required list<CounterColumn> columns
-}
-
-/**
- Methods for fetching rows/records from Cassandra will return either a single instance of ColumnOrSuperColumn or a list
- of ColumnOrSuperColumns (get_slice()). If you're looking up a SuperColumn (or list of SuperColumns) then the resulting
- instances of ColumnOrSuperColumn will have the requested SuperColumn in the attribute super_column. For queries resulting
- in Columns, those values will be in the attribute column. This change was made between 0.3 and 0.4 to standardize on
- single query methods that may return either a SuperColumn or Column.
-
- If the query was on a counter column family, you will either get a counter_column (instead of a column) or a
- counter_super_column (instead of a super_column)
-
- @param column. The Column returned by get() or get_slice().
- @param super_column. The SuperColumn returned by get() or get_slice().
- @param counter_column. The Counterolumn returned by get() or get_slice().
- @param counter_super_column. The CounterSuperColumn returned by get() or get_slice().
- */
-struct ColumnOrSuperColumn {
- 1: optional Column column,
- 2: optional SuperColumn super_column,
- 3: optional CounterColumn counter_column,
- 4: optional CounterSuperColumn counter_super_column
-}
-
-
-#
-# Exceptions
-# (note that internal server errors will raise a TApplicationException, courtesy of Thrift)
-#
-
-/** A specific column was requested that does not exist. */
-exception NotFoundException {
-}
-
-/** Invalid request could mean keyspace or column family does not exist, required parameters are missing, or a parameter is malformed.
- why contains an associated error message.
-*/
-exception InvalidRequestException {
- 1: required string why
-}
-
-/** Not all the replicas required could be created and/or read. */
-exception UnavailableException {
-}
-
-/** RPC timeout was exceeded. either a node failed mid-operation, or load was too high, or the requested op was too large. */
-exception TimedOutException {
-}
-
-/** invalid authentication request (invalid keyspace, user does not exist, or credentials invalid) */
-exception AuthenticationException {
- 1: required string why
-}
-
-/** invalid authorization request (user does not have access to keyspace) */
-exception AuthorizationException {
- 1: required string why
-}
-
-/** schemas are not in agreement across all nodes */
-exception SchemaDisagreementException {
-}
-
-
-#
-# service api
-#
-/**
- * The ConsistencyLevel is an enum that controls both read and write
- * behavior based on the ReplicationFactor of the keyspace. The
- * different consistency levels have different meanings, depending on
- * if you're doing a write or read operation.
- *
- * If W + R > ReplicationFactor, where W is the number of nodes to
- * block for on write, and R the number to block for on reads, you
- * will have strongly consistent behavior; that is, readers will
- * always see the most recent write. Of these, the most interesting is
- * to do QUORUM reads and writes, which gives you consistency while
- * still allowing availability in the face of node failures up to half
- * of <ReplicationFactor>. Of course if latency is more important than
- * consistency then you can use lower values for either or both.
- *
- * Some ConsistencyLevels (ONE, TWO, THREE) refer to a specific number
- * of replicas rather than a logical concept that adjusts
- * automatically with the replication factor. Of these, only ONE is
- * commonly used; TWO and (even more rarely) THREE are only useful
- * when you care more about guaranteeing a certain level of
- * durability, than consistency.
- *
- * Write consistency levels make the following guarantees before reporting success to the client:
- * ANY Ensure that the write has been written once somewhere, including possibly being hinted in a non-target node.
- * ONE Ensure that the write has been written to at least 1 node's commit log and memory table
- * TWO Ensure that the write has been written to at least 2 node's commit log and memory table
- * THREE Ensure that the write has been written to at least 3 node's commit log and memory table
- * QUORUM Ensure that the write has been written to <ReplicationFactor> / 2 + 1 nodes
- * LOCAL_QUORUM Ensure that the write has been written to <ReplicationFactor> / 2 + 1 nodes, within the local datacenter (requires NetworkTopologyStrategy)
- * EACH_QUORUM Ensure that the write has been written to <ReplicationFactor> / 2 + 1 nodes in each datacenter (requires NetworkTopologyStrategy)
- * ALL Ensure that the write is written to <code><ReplicationFactor></code> nodes before responding to the client.
- *
- * Read consistency levels make the following guarantees before returning successful results to the client:
- * ANY Not supported. You probably want ONE instead.
- * ONE Returns the record obtained from a single replica.
- * TWO Returns the record with the most recent timestamp once two replicas have replied.
- * THREE Returns the record with the most recent timestamp once three replicas have replied.
- * QUORUM Returns the record with the most recent timestamp once a majority of replicas have replied.
- * LOCAL_QUORUM Returns the record with the most recent timestamp once a majority of replicas within the local datacenter have replied.
- * EACH_QUORUM Returns the record with the most recent timestamp once a majority of replicas within each datacenter have replied.
- * ALL Returns the record with the most recent timestamp once all replicas have replied (implies no replica may be down)..
-*/
-enum ConsistencyLevel {
- ONE = 1,
- QUORUM = 2,
- LOCAL_QUORUM = 3,
- EACH_QUORUM = 4,
- ALL = 5,
- ANY = 6,
- TWO = 7,
- THREE = 8,
-}
-
-/**
- ColumnParent is used when selecting groups of columns from the same ColumnFamily. In directory structure terms, imagine
- ColumnParent as ColumnPath + '/../'.
-
- See also <a href="cassandra.html#Struct_ColumnPath">ColumnPath</a>
- */
-struct ColumnParent {
- 3: required string column_family,
- 4: optional binary super_column,
-}
-
-/** The ColumnPath is the path to a single column in Cassandra. It might make sense to think of ColumnPath and
- * ColumnParent in terms of a directory structure.
- *
- * ColumnPath is used to looking up a single column.
- *
- * @param column_family. The name of the CF of the column being looked up.
- * @param super_column. The super column name.
- * @param column. The column name.
- */
-struct ColumnPath {
- 3: required string column_family,
- 4: optional binary super_column,
- 5: optional binary column,
-}
-
-/**
- A slice range is a structure that stores basic range, ordering and limit information for a query that will return
- multiple columns. It could be thought of as Cassandra's version of LIMIT and ORDER BY
-
- @param start. The column name to start the slice with. This attribute is not required, though there is no default value,
- and can be safely set to '', i.e., an empty byte array, to start with the first column name. Otherwise, it
- must a valid value under the rules of the Comparator defined for the given ColumnFamily.
- @param finish. The column name to stop the slice at. This attribute is not required, though there is no default value,
- and can be safely set to an empty byte array to not stop until 'count' results are seen. Otherwise, it
- must also be a valid value to the ColumnFamily Comparator.
- @param reversed. Whether the results should be ordered in reversed order. Similar to ORDER BY blah DESC in SQL.
- @param count. How many columns to return. Similar to LIMIT in SQL. May be arbitrarily large, but Thrift will
- materialize the whole result into memory before returning it to the client, so be aware that you may
- be better served by iterating through slices by passing the last value of one call in as the 'start'
- of the next instead of increasing 'count' arbitrarily large.
- */
-struct SliceRange {
- 1: required binary start,
- 2: required binary finish,
- 3: required bool reversed=0,
- 4: required i32 count=100,
-}
-
-/**
- A SlicePredicate is similar to a mathematic predicate (see http://en.wikipedia.org/wiki/Predicate_(mathematical_logic) ),
- which is described as "a property that the elements of a set have in common."
-
- SlicePredicate's in Cassandra are described with either a list of column_names or a SliceRange. If column_names is
- specified, slice_range is ignored.
-
- @param column_name. A list of column names to retrieve. This can be used similar to Memcached's "multi-get" feature
- to fetch N known column names. For instance, if you know you wish to fetch columns 'Joe', 'Jack',
- and 'Jim' you can pass those column names as a list to fetch all three at once.
- @param slice_range. A SliceRange describing how to range, order, and/or limit the slice.
- */
-struct SlicePredicate {
- 1: optional list<binary> column_names,
- 2: optional SliceRange slice_range,
-}
-
-enum IndexOperator {
- EQ,
- GTE,
- GT,
- LTE,
- LT
-}
-
-struct IndexExpression {
- 1: required binary column_name,
- 2: required IndexOperator op,
- 3: required binary value,
-}
-
-/**
- * @Deprecated: use a KeyRange with row_filter in get_range_slices instead
- */
-struct IndexClause {
- 1: required list<IndexExpression> expressions,
- 2: required binary start_key,
- 3: required i32 count=100,
-}
-
-
-/**
-The semantics of start keys and tokens are slightly different.
-Keys are start-inclusive; tokens are start-exclusive. Token
-ranges may also wrap -- that is, the end token may be less
-than the start one. Thus, a range from keyX to keyX is a
-one-element range, but a range from tokenY to tokenY is the
-full ring.
-*/
-struct KeyRange {
- 1: optional binary start_key,
- 2: optional binary end_key,
- 3: optional string start_token,
- 4: optional string end_token,
- 6: optional list<IndexExpression> row_filter,
- 5: required i32 count=100
-}
-
-/**
- A KeySlice is key followed by the data it maps to. A collection of KeySlice is returned by the get_range_slice operation.
-
- @param key. a row key
- @param columns. List of data represented by the key. Typically, the list is pared down to only the columns specified by
- a SlicePredicate.
- */
-struct KeySlice {
- 1: required binary key,
- 2: required list<ColumnOrSuperColumn> columns,
-}
-
-struct KeyCount {
- 1: required binary key,
- 2: required i32 count
-}
-
-/**
- * Note that the timestamp is only optional in case of counter deletion.
- */
-struct Deletion {
- 1: optional i64 timestamp,
- 2: optional binary super_column,
- 3: optional SlicePredicate predicate,
-}
-
-/**
- A Mutation is either an insert (represented by filling column_or_supercolumn) or a deletion (represented by filling the deletion attribute).
- @param column_or_supercolumn. An insert to a column or supercolumn (possibly counter column or supercolumn)
- @param deletion. A deletion of a column or supercolumn
-*/
-struct Mutation {
- 1: optional ColumnOrSuperColumn column_or_supercolumn,
- 2: optional Deletion deletion,
-}
-
-struct EndpointDetails {
- 1: string host,
- 2: string datacenter,
- 3: optional string rack
-}
-
-/**
- A TokenRange describes part of the Cassandra ring, it is a mapping from a range to
- endpoints responsible for that range.
- @param start_token The first token in the range
- @param end_token The last token in the range
- @param endpoints The endpoints responsible for the range (listed by their configured listen_address)
- @param rpc_endpoints The endpoints responsible for the range (listed by their configured rpc_address)
-*/
-struct TokenRange {
- 1: required string start_token,
- 2: required string end_token,
- 3: required list<string> endpoints,
- 4: optional list<string> rpc_endpoints
- 5: optional list<EndpointDetails> endpoint_details,
-}
-
-/**
- Authentication requests can contain any data, dependent on the IAuthenticator used
-*/
-struct AuthenticationRequest {
- 1: required map<string, string> credentials
-}
-
-enum IndexType {
- KEYS,
- CUSTOM
-}
-
-/* describes a column in a column family. */
-struct ColumnDef {
- 1: required binary name,
- 2: required string validation_class,
- 3: optional IndexType index_type,
- 4: optional string index_name,
- 5: optional map<string,string> index_options
-}
-
-
-/* describes a column family. */
-struct CfDef {
- 1: required string keyspace,
- 2: required string name,
- 3: optional string column_type="Standard",
- 5: optional string comparator_type="BytesType",
- 6: optional string subcomparator_type,
- 8: optional string comment,
- 12: optional double read_repair_chance,
- 13: optional list<ColumnDef> column_metadata,
- 14: optional i32 gc_grace_seconds,
- 15: optional string default_validation_class,
- 16: optional i32 id,
- 17: optional i32 min_compaction_threshold,
- 18: optional i32 max_compaction_threshold,
- 24: optional bool replicate_on_write,
- 26: optional string key_validation_class,
- 28: optional binary key_alias,
- 29: optional string compaction_strategy,
- 30: optional map<string,string> compaction_strategy_options,
- 32: optional map<string,string> compression_options,
- 33: optional double bloom_filter_fp_chance,
- 34: optional string caching="keys_only",
- 37: optional double dclocal_read_repair_chance = 0.0,
-
- /* All of the following are now ignored and unsupplied. */
-
- /** @deprecated */
- 9: optional double row_cache_size,
- /** @deprecated */
- 11: optional double key_cache_size,
- /** @deprecated */
- 19: optional i32 row_cache_save_period_in_seconds,
- /** @deprecated */
- 20: optional i32 key_cache_save_period_in_seconds,
- /** @deprecated */
- 21: optional i32 memtable_flush_after_mins,
- /** @deprecated */
- 22: optional i32 memtable_throughput_in_mb,
- /** @deprecated */
- 23: optional double memtable_operations_in_millions,
- /** @deprecated */
- 25: optional double merge_shards_chance,
- /** @deprecated */
- 27: optional string row_cache_provider,
- /** @deprecated */
- 31: optional i32 row_cache_keys_to_save,
-}
-
-/* describes a keyspace. */
-struct KsDef {
- 1: required string name,
- 2: required string strategy_class,
- 3: optional map<string,string> strategy_options,
-
- /** @deprecated, ignored */
- 4: optional i32 replication_factor,
-
- 5: required list<CfDef> cf_defs,
- 6: optional bool durable_writes=1,
-}
-
-/** CQL query compression */
-enum Compression {
- GZIP = 1,
- NONE = 2
-}
-
-enum CqlResultType {
- ROWS = 1,
- VOID = 2,
- INT = 3
-}
-
-/** Row returned from a CQL query */
-struct CqlRow {
- 1: required binary key,
- 2: required list<Column> columns
-}
-
-struct CqlMetadata {
- 1: required map<binary,string> name_types,
- 2: required map<binary,string> value_types,
- 3: required string default_name_type,
- 4: required string default_value_type
-}
-
-struct CqlResult {
- 1: required CqlResultType type,
- 2: optional list<CqlRow> rows,
- 3: optional i32 num,
- 4: optional CqlMetadata schema
-}
-
-struct CqlPreparedResult {
- 1: required i32 itemId,
- 2: required i32 count,
- 3: optional list<string> variable_types,
- 4: optional list<string> variable_names
-}
-
-
-service Cassandra {
- # auth methods
- void login(1: required AuthenticationRequest auth_request) throws (1:AuthenticationException authnx, 2:AuthorizationException authzx),
-
- # set keyspace
- void set_keyspace(1: required string keyspace) throws (1:InvalidRequestException ire),
-
- # retrieval methods
-
- /**
- Get the Column or SuperColumn at the given column_path. If no value is present, NotFoundException is thrown. (This is
- the only method that can throw an exception under non-failure conditions.)
- */
- ColumnOrSuperColumn get(1:required binary key,
- 2:required ColumnPath column_path,
- 3:required ConsistencyLevel consistency_level=ConsistencyLevel.ONE)
- throws (1:InvalidRequestException ire, 2:NotFoundException nfe, 3:UnavailableException ue, 4:TimedOutException te),
-
- /**
- Get the group of columns contained by column_parent (either a ColumnFamily name or a ColumnFamily/SuperColumn name
- pair) specified by the given SlicePredicate. If no matching values are found, an empty list is returned.
- */
- list<ColumnOrSuperColumn> get_slice(1:required binary key,
- 2:required ColumnParent column_parent,
- 3:required SlicePredicate predicate,
- 4:required ConsistencyLevel consistency_level=ConsistencyLevel.ONE)
- throws (1:InvalidRequestException ire, 2:UnavailableException ue, 3:TimedOutException te),
-
- /**
- returns the number of columns matching <code>predicate</code> for a particular <code>key</code>,
- <code>ColumnFamily</code> and optionally <code>SuperColumn</code>.
- */
- i32 get_count(1:required binary key,
- 2:required ColumnParent column_parent,
- 3:required SlicePredicate predicate,
- 4:required ConsistencyLevel consistency_level=ConsistencyLevel.ONE)
- throws (1:InvalidRequestException ire, 2:UnavailableException ue, 3:TimedOutException te),
-
- /**
- Performs a get_slice for column_parent and predicate for the given keys in parallel.
- */
- map<binary,list<ColumnOrSuperColumn>> multiget_slice(1:required list<binary> keys,
- 2:required ColumnParent column_parent,
- 3:required SlicePredicate predicate,
- 4:required ConsistencyLevel consistency_level=ConsistencyLevel.ONE)
- throws (1:InvalidRequestException ire, 2:UnavailableException ue, 3:TimedOutException te),
-
- /**
- Perform a get_count in parallel on the given list<binary> keys. The return value maps keys to the count found.
- */
- map<binary, i32> multiget_count(1:required list<binary> keys,
- 2:required ColumnParent column_parent,
- 3:required SlicePredicate predicate,
- 4:required ConsistencyLevel consistency_level=ConsistencyLevel.ONE)
- throws (1:InvalidRequestException ire, 2:UnavailableException ue, 3:TimedOutException te),
-
- /**
- returns a subset of columns for a contiguous range of keys.
- */
- list<KeySlice> get_range_slices(1:required ColumnParent column_parent,
- 2:required SlicePredicate predicate,
- 3:required KeyRange range,
- 4:required ConsistencyLevel consistency_level=ConsistencyLevel.ONE)
- throws (1:InvalidRequestException ire, 2:UnavailableException ue, 3:TimedOutException te),
-
- /**
- returns a range of columns, wrapping to the next rows if necessary to collect max_results.
- */
- list<KeySlice> get_paged_slice(1:required string column_family,
- 2:required KeyRange range,
- 3:required binary start_column,
- 4:required ConsistencyLevel consistency_level=ConsistencyLevel.ONE)
- throws (1:InvalidRequestException ire, 2:UnavailableException ue, 3:TimedOutException te),
-
- /**
- Returns the subset of columns specified in SlicePredicate for the rows matching the IndexClause
- @Deprecated; use get_range_slices instead with range.row_filter specified
- */
- list<KeySlice> get_indexed_slices(1:required ColumnParent column_parent,
- 2:required IndexClause index_clause,
- 3:required SlicePredicate column_predicate,
- 4:required ConsistencyLevel consistency_level=ConsistencyLevel.ONE)
- throws (1:InvalidRequestException ire, 2:UnavailableException ue, 3:TimedOutException te),
-
- # modification methods
-
- /**
- * Insert a Column at the given column_parent.column_family and optional column_parent.super_column.
- */
- void insert(1:required binary key,
- 2:required ColumnParent column_parent,
- 3:required Column column,
- 4:required ConsistencyLevel consistency_level=ConsistencyLevel.ONE)
- throws (1:InvalidRequestException ire, 2:UnavailableException ue, 3:TimedOutException te),
-
- /**
- * Increment or decrement a counter.
- */
- void add(1:required binary key,
- 2:required ColumnParent column_parent,
- 3:required CounterColumn column,
- 4:required ConsistencyLevel consistency_level=ConsistencyLevel.ONE)
- throws (1:InvalidRequestException ire, 2:UnavailableException ue, 3:TimedOutException te),
-
- /**
- Remove data from the row specified by key at the granularity specified by column_path, and the given timestamp. Note
- that all the values in column_path besides column_path.column_family are truly optional: you can remove the entire
- row by just specifying the ColumnFamily, or you can remove a SuperColumn or a single Column by specifying those levels too.
- */
- void remove(1:required binary key,
- 2:required ColumnPath column_path,
- 3:required i64 timestamp,
- 4:ConsistencyLevel consistency_level=ConsistencyLevel.ONE)
- throws (1:InvalidRequestException ire, 2:UnavailableException ue, 3:TimedOutException te),
-
- /**
- * Remove a counter at the specified location.
- * Note that counters have limited support for deletes: if you remove a counter, you must wait to issue any following update
- * until the delete has reached all the nodes and all of them have been fully compacted.
- */
- void remove_counter(1:required binary key,
- 2:required ColumnPath path,
- 3:required ConsistencyLevel consistency_level=ConsistencyLevel.ONE)
- throws (1:InvalidRequestException ire, 2:UnavailableException ue, 3:TimedOutException te),
-
-
- /**
- Mutate many columns or super columns for many row keys. See also: Mutation.
-
- mutation_map maps key to column family to a list of Mutation objects to take place at that scope.
- **/
- void batch_mutate(1:required map<binary, map<string, list<Mutation>>> mutation_map,
- 2:required ConsistencyLevel consistency_level=ConsistencyLevel.ONE)
- throws (1:InvalidRequestException ire, 2:UnavailableException ue, 3:TimedOutException te),
-
- /**
- Truncate will mark and entire column family as deleted.
- From the user's perspective a successful call to truncate will result complete data deletion from cfname.
- Internally, however, disk space will not be immediatily released, as with all deletes in cassandra, this one
- only marks the data as deleted.
- The operation succeeds only if all hosts in the cluster at available and will throw an UnavailableException if
- some hosts are down.
- */
- void truncate(1:required string cfname)
- throws (1: InvalidRequestException ire, 2: UnavailableException ue, 3: TimedOutException te),
-
-
-
- // Meta-APIs -- APIs to get information about the node or cluster,
- // rather than user data. The nodeprobe program provides usage examples.
-
- /**
- * for each schema version present in the cluster, returns a list of nodes at that version.
- * hosts that do not respond will be under the key DatabaseDescriptor.INITIAL_VERSION.
- * the cluster is all on the same version if the size of the map is 1.
- */
- map<string, list<string>> describe_schema_versions()
- throws (1: InvalidRequestException ire),
-
- /** list the defined keyspaces in this cluster */
- list<KsDef> describe_keyspaces()
- throws (1:InvalidRequestException ire),
-
- /** get the cluster name */
- string describe_cluster_name(),
-
- /** get the thrift api version */
- string describe_version(),
-
- /** get the token ring: a map of ranges to host addresses,
- represented as a set of TokenRange instead of a map from range
- to list of endpoints, because you can't use Thrift structs as
- map keys:
- https://issues.apache.org/jira/browse/THRIFT-162
-
- for the same reason, we can't return a set here, even though
- order is neither important nor predictable. */
- list<TokenRange> describe_ring(1:required string keyspace)
- throws (1:InvalidRequestException ire),
-
- /** get the mapping between token->node ip
- without taking replication into consideration
- https://issues.apache.org/jira/browse/CASSANDRA-4092 */
- map<string, string> describe_token_map()
- throws (1:InvalidRequestException ire),
-
- /** returns the partitioner used by this cluster */
- string describe_partitioner(),
-
- /** returns the snitch used by this cluster */
- string describe_snitch(),
-
- /** describe specified keyspace */
- KsDef describe_keyspace(1:required string keyspace)
- throws (1:NotFoundException nfe, 2:InvalidRequestException ire),
-
- /** experimental API for hadoop/parallel query support.
- may change violently and without warning.
-
- returns list of token strings such that first subrange is (list[0], list[1]],
- next is (list[1], list[2]], etc. */
- list<string> describe_splits(1:required string cfName,
- 2:required string start_token,
- 3:required string end_token,
- 4:required i32 keys_per_split)
- throws (1:InvalidRequestException ire),
-
- /** adds a column family. returns the new schema id. */
- string system_add_column_family(1:required CfDef cf_def)
- throws (1:InvalidRequestException ire, 2:SchemaDisagreementException sde),
-
- /** drops a column family. returns the new schema id. */
- string system_drop_column_family(1:required string column_family)
- throws (1:InvalidRequestException ire, 2:SchemaDisagreementException sde),
-
- /** adds a keyspace and any column families that are part of it. returns the new schema id. */
- string system_add_keyspace(1:required KsDef ks_def)
- throws (1:InvalidRequestException ire, 2:SchemaDisagreementException sde),
-
- /** drops a keyspace and any column families that are part of it. returns the new schema id. */
- string system_drop_keyspace(1:required string keyspace)
- throws (1:InvalidRequestException ire, 2:SchemaDisagreementException sde),
-
- /** updates properties of a keyspace. returns the new schema id. */
- string system_update_keyspace(1:required KsDef ks_def)
- throws (1:InvalidRequestException ire, 2:SchemaDisagreementException sde),
-
- /** updates properties of a column family. returns the new schema id. */
- string system_update_column_family(1:required CfDef cf_def)
- throws (1:InvalidRequestException ire, 2:SchemaDisagreementException sde),
-
- /**
- * Executes a CQL (Cassandra Query Language) statement and returns a
- * CqlResult containing the results.
- */
- CqlResult execute_cql_query(1:required binary query, 2:required Compression compression)
- throws (1:InvalidRequestException ire,
- 2:UnavailableException ue,
- 3:TimedOutException te,
- 4:SchemaDisagreementException sde)
-
-
- /**
- * Prepare a CQL (Cassandra Query Language) statement by compiling and returning
- * - the type of CQL statement
- * - an id token of the compiled CQL stored on the server side.
- * - a count of the discovered bound markers in the statement
- */
- CqlPreparedResult prepare_cql_query(1:required binary query, 2:required Compression compression)
- throws (1:InvalidRequestException ire)
-
-
- /**
- * Executes a prepared CQL (Cassandra Query Language) statement by passing an id token and a list of variables
- * to bind and returns a CqlResult containing the results.
- */
- CqlResult execute_prepared_cql_query(1:required i32 itemId, 2:required list<binary> values)
- throws (1:InvalidRequestException ire,
- 2:UnavailableException ue,
- 3:TimedOutException te,
- 4:SchemaDisagreementException sde)
-
- void set_cql_version(1: required string version) throws (1:InvalidRequestException ire)
-}
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/antlr-3.2.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/antlr-3.2.jar
deleted file mode 100644
index fdd167d..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/antlr-3.2.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/apache-cassandra-1.1.5.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/apache-cassandra-1.1.5.jar
deleted file mode 100644
index 65f623b..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/apache-cassandra-1.1.5.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/apache-cassandra-clientutil-1.1.5.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/apache-cassandra-clientutil-1.1.5.jar
deleted file mode 100644
index c5eae74..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/apache-cassandra-clientutil-1.1.5.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/apache-cassandra-thrift-1.1.5.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/apache-cassandra-thrift-1.1.5.jar
deleted file mode 100644
index a7c7cd2..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/apache-cassandra-thrift-1.1.5.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/avro-1.4.0-fixes.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/avro-1.4.0-fixes.jar
deleted file mode 100644
index 6733756..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/avro-1.4.0-fixes.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/avro-1.4.0-sources-fixes.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/avro-1.4.0-sources-fixes.jar
deleted file mode 100644
index 2b6e2cb..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/avro-1.4.0-sources-fixes.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/commons-cli-1.1.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/commons-cli-1.1.jar
deleted file mode 100644
index e633afb..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/commons-cli-1.1.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/commons-codec-1.2.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/commons-codec-1.2.jar
deleted file mode 100644
index 67cb720..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/commons-codec-1.2.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/commons-lang-2.4.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/commons-lang-2.4.jar
deleted file mode 100644
index 532939e..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/commons-lang-2.4.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/compress-lzf-0.8.4.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/compress-lzf-0.8.4.jar
deleted file mode 100644
index a712c24..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/compress-lzf-0.8.4.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/concurrentlinkedhashmap-lru-1.3.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/concurrentlinkedhashmap-lru-1.3.jar
deleted file mode 100644
index 7fbdf9f..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/concurrentlinkedhashmap-lru-1.3.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/cql-internal-only-1.0.10.zip b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/cql-internal-only-1.0.10.zip
deleted file mode 100644
index c4ca8f2e..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/cql-internal-only-1.0.10.zip and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/guava-r08.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/guava-r08.jar
deleted file mode 100644
index d18d0bd..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/guava-r08.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/high-scale-lib-1.1.2.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/high-scale-lib-1.1.2.jar
deleted file mode 100644
index 6343a70..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/high-scale-lib-1.1.2.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/jackson-core-asl-1.9.2.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/jackson-core-asl-1.9.2.jar
deleted file mode 100644
index c506567..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/jackson-core-asl-1.9.2.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/jackson-mapper-asl-1.9.2.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/jackson-mapper-asl-1.9.2.jar
deleted file mode 100644
index 6407dc0..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/jackson-mapper-asl-1.9.2.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/jamm-0.2.5.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/jamm-0.2.5.jar
deleted file mode 100644
index ef8750d..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/jamm-0.2.5.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/jline-0.9.94.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/jline-0.9.94.jar
deleted file mode 100644
index dede372..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/jline-0.9.94.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/jna-3.4.1.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/jna-3.4.1.jar
deleted file mode 100644
index 4e05a4a..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/jna-3.4.1.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/json-simple-1.1.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/json-simple-1.1.jar
deleted file mode 100644
index f395f41..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/json-simple-1.1.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/libthrift-0.7.0.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/libthrift-0.7.0.jar
deleted file mode 100644
index a0cc175..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/libthrift-0.7.0.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/antlr-3.1.3.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/antlr-3.1.3.txt
deleted file mode 100644
index 015a53d..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/antlr-3.1.3.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-
-Copyright (c) 2003-2006 Terence Parr
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/avro-1.3.1-dev.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/avro-1.3.1-dev.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/avro-1.3.1-dev.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/commons-cli-1.1.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/commons-cli-1.1.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/commons-cli-1.1.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/commons-codec-1.2.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/commons-codec-1.2.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/commons-codec-1.2.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/commons-collections-3.2.1.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/commons-collections-3.2.1.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/commons-collections-3.2.1.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/commons-lang-2.4.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/commons-lang-2.4.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/commons-lang-2.4.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/compress-lzf-0.8.4.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/compress-lzf-0.8.4.txt
deleted file mode 100644
index 1e22f87..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/compress-lzf-0.8.4.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Copyright 2009-2010 Ning, Inc.
-
-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 http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-License for the specific language governing permissions and limitations under
-the License.
\ No newline at end of file
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/concurrentlinkedhashmap-lru-1.2.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/concurrentlinkedhashmap-lru-1.2.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/concurrentlinkedhashmap-lru-1.2.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/cql-1.0.8.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/cql-1.0.8.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/cql-1.0.8.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/guava-r08.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/guava-r08.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/guava-r08.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/high-scale-lib-1.1.2.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/high-scale-lib-1.1.2.txt
deleted file mode 100644
index 6e69cdc..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/high-scale-lib-1.1.2.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-
-The person or persons who have associated work with this document (the
-"Dedicator" or "Certifier") hereby either (a) certifies that, to the best
-of his knowledge, the work of authorship identified is in the public
-domain of the country from which the work is published, or (b) hereby
-dedicates whatever copyright the dedicators holds in the work of
-authorship identified below (the "Work") to the public domain. A
-certifier, moreover, dedicates any copyright interest he may have in the
-associated work, and for these purposes, is described as a "dedicator"
-below.
-
-A certifier has taken reasonable steps to verify the copyright status of
-this work. Certifier recognizes that his good faith efforts may not
-shield him from liability if in fact the work certified is not in the
-public domain.
-
-Dedicator makes this dedication for the benefit of the public at large and
-to the detriment of the Dedicator's heirs and successors. Dedicator
-intends this dedication to be an overt act of relinquishment in perpetuity
-of all present and future rights under copyright law, whether vested or
-contingent, in the Work. Dedicator understands that such relinquishment of
-all rights includes the relinquishment of all rights to enforce (by
-lawsuit or otherwise) those copyrights in the Work.
-
-Dedicator recognizes that, once placed in the public domain, the Work may
-be freely reproduced, distributed, transmitted, used, modified, built
-upon, or otherwise exploited by anyone for any purpose, commercial or
-non-commercial, and in any way, including by methods that have not yet
-been invented or conceived.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jackson-core-asl-1.9.2.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jackson-core-asl-1.9.2.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jackson-core-asl-1.9.2.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jackson-mapper-asl-1.9.2.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jackson-mapper-asl-1.9.2.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jackson-mapper-asl-1.9.2.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jamm-0.2.2.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jamm-0.2.2.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jamm-0.2.2.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jetty-6.1.21.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jetty-6.1.21.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jetty-6.1.21.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jetty-util-6.1.21.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jetty-util-6.1.21.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jetty-util-6.1.21.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jline-0.9.94.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jline-0.9.94.txt
deleted file mode 100644
index 1cdc44c..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/jline-0.9.94.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-Copyright (c) 2002-2006, Marc Prud'hommeaux <mwp1(a)cornell.edu>
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or
-without modification, are permitted provided that the following
-conditions are met:
-
-Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-
-Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with
-the distribution.
-
-Neither the name of JLine nor the names of its contributors
-may be used to endorse or promote products derived from this
-software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-OF THE POSSIBILITY OF SUCH DAMAGE.
-
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/json-simple-1.1.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/json-simple-1.1.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/json-simple-1.1.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/libthrift-0.7.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/libthrift-0.7.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/libthrift-0.7.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/log4j-1.2.16.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/log4j-1.2.16.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/log4j-1.2.16.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/servlet-api-2.5-20081211.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/servlet-api-2.5-20081211.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/servlet-api-2.5-20081211.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/slf4j-api-1.6.1.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/slf4j-api-1.6.1.txt
deleted file mode 100644
index dbfc769..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/slf4j-api-1.6.1.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2004-2008 QOS.ch
-All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/slf4j-log4j12-1.6.1.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/slf4j-log4j12-1.6.1.txt
deleted file mode 100644
index dbfc769..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/slf4j-log4j12-1.6.1.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2004-2008 QOS.ch
-All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/snakeyaml-1.6.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/snakeyaml-1.6.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/snakeyaml-1.6.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/snappy-java-1.0.3.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/snappy-java-1.0.3.txt
deleted file mode 100644
index d5c4984..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/snappy-java-1.0.3.txt
+++ /dev/null
@@ -1,209 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
-THIRD-PARTY DEPENDENCIES
-========================
-Convenience copies of some third-party dependencies are distributed with
-Apache Cassandra as Java jar files in lib/. Licensing information for
-these files can be found in the lib/licenses directory.
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/snaptree-0.1.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/snaptree-0.1.txt
deleted file mode 100644
index 07324c5..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/snaptree-0.1.txt
+++ /dev/null
@@ -1,776 +0,0 @@
-
-
-
-<!DOCTYPE html>
-<html>
- <head>
- <meta charset='utf-8'>
- <meta http-equiv="X-UA-Compatible" content="chrome=1">
- <title>doc/LICENSE at master from nbronson/snaptree - GitHub</title>
- <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
- <link rel="fluid-icon" href="https://github.com/fluidicon.png " title="GitHub" />
-
-
-
-
- <meta content="authenticity_token" name="csrf-param" />
-<meta content="kCKdrZvsCWGNIGaBTKBWlG4gYXwI636kkFF5Jfbr//c=" name="csrf-token" />
-
- <link href="https://a248.e.akamai.net/assets.github.com/stylesheets/bundles/github-ce... " media="screen" rel="stylesheet" type="text/css" />
-
-
- <script src="https://a248.e.akamai.net/assets.github.com/javascripts/bundles/jquery-6c... " type="text/javascript"></script>
- <script src="https://a248.e.akamai.net/assets.github.com/javascripts/bundles/github-72... " type="text/javascript"></script>
-
-
- <link rel='permalink' href='/nbronson/snaptree/blob/b198f84b0c927f6b5cdef080552fc26aa004d3ee/doc/LICENSE'>
-
-
- <meta name="description" content="snaptree - Concurrent TreeMap w/ efficient support for clone() and consistent iteration" />
- <link href="https://github.com/nbronson/snaptree/commits/master.atom " rel="alternate" title="Recent Commits to snaptree:master" type="application/atom+xml" />
-
- </head>
-
-
- <body class="logged_out page-blob vis-public env-production ">
-
-
-
-
-
- <div id="header" class="true clearfix">
- <div class="container" class="clearfix">
- <a class="site-logo" href="https://github.com ">
- <!--[if IE]>
- <img alt="GitHub" class="github-logo" src="https://a248.e.akamai.net/assets.github.com/images/modules/header/logov7.... " />
- <img alt="GitHub" class="github-logo-hover" src="https://a248.e.akamai.net/assets.github.com/images/modules/header/logov7-... " />
- <![endif]-->
- <img alt="GitHub" class="github-logo-4x" height="30" src="https://a248.e.akamai.net/assets.github.com/images/modules/header/logov7@... " />
- <img alt="GitHub" class="github-logo-4x-hover" height="30" src="https://a248.e.akamai.net/assets.github.com/images/modules/header/logov7@... " />
- </a>
-
- <!--
- make sure to use fully qualified URLs here since this nav
- is used on error pages on other domains
- -->
- <ul class="top-nav logged_out">
- <li class="pricing"><a href="https://github.com/plans ">Signup and Pricing</a></li>
- <li class="explore"><a href="https://github.com/explore ">Explore GitHub</a></li>
- <li class="features"><a href="https://github.com/features ">Features</a></li>
- <li class="blog"><a href="https://github.com/blog ">Blog</a></li>
- <li class="login"><a href="https://github.com/login?return_to=%2Fnbronson%2Fsnaptree%2Fblob%2Fmaster... ">Login</a></li>
- </ul>
-
-
- </div>
- </div>
-
-
-
- <div class="site">
- <div class="container">
- <div class="pagehead repohead instapaper_ignore readability-menu">
-
-
- <div class="title-actions-bar">
- <h1>
- <a href="/nbronson">nbronson</a> /
- <strong><a href="/nbronson/snaptree" class="js-current-repository">snaptree</a></strong>
- </h1>
-
-
-
-
- <ul class="pagehead-actions">
-
-
- <li><a href="/login?return_to=%2Fnbronson%2Fsnaptree" class="minibutton btn-watch watch-button entice tooltipped leftwards" rel="nofollow" title="You must be logged in to use this feature"><span><span class="icon"></span>Watch</span></a></li>
- <li><a href="/login?return_to=%2Fnbronson%2Fsnaptree" class="minibutton btn-fork fork-button entice tooltipped leftwards" rel="nofollow" title="You must be logged in to use this feature"><span><span class="icon"></span>Fork</span></a></li>
-
-
- <li class="repostats">
- <ul class="repo-stats">
- <li class="watchers ">
- <a href="/nbronson/snaptree/watchers" title="Watchers" class="tooltipped downwards">
- 25
- </a>
- </li>
- <li class="forks">
- <a href="/nbronson/snaptree/network" title="Forks" class="tooltipped downwards">
- 2
- </a>
- </li>
- </ul>
- </li>
- </ul>
-
- </div>
-
-
-
- <ul class="tabs">
- <li><a href="/nbronson/snaptree" class="selected" highlight="repo_sourcerepo_downloadsrepo_commitsrepo_tagsrepo_branches">Code</a></li>
- <li><a href="/nbronson/snaptree/network" highlight="repo_networkrepo_fork_queue">Network</a>
- <li><a href="/nbronson/snaptree/pulls" highlight="repo_pulls">Pull Requests <span class='counter'>0</span></a></li>
-
- <li><a href="/nbronson/snaptree/issues" highlight="repo_issues">Issues <span class='counter'>0</span></a></li>
-
-
- <li><a href="/nbronson/snaptree/graphs" highlight="repo_graphsrepo_contributors">Stats & Graphs</a></li>
-
- </ul>
-
-
-<div class="frame frame-center tree-finder" style="display:none"
- data-tree-list-url="/nbronson/snaptree/tree-list/b198f84b0c927f6b5cdef080552fc26aa004d3ee"
- data-blob-url-prefix="/nbronson/snaptree/blob/b198f84b0c927f6b5cdef080552fc26aa004d3ee"
- >
-
- <div class="breadcrumb">
- <b><a href="/nbronson/snaptree">snaptree</a></b> /
- <input class="tree-finder-input js-navigation-enable" type="text" name="query" autocomplete="off" spellcheck="false">
- </div>
-
- <div class="octotip">
- <p>
- <a href="/nbronson/snaptree/dismiss-tree-finder-help" class="dismiss js-dismiss-tree-list-help" title="Hide this notice forever" rel="nofollow">Dismiss</a>
- <strong>Octotip:</strong> You've activated the <em>file finder</em>
- by pressing <span class="kbd">t</span> Start typing to filter the
- file list. Use <span class="kbd badmono">↑</span> and
- <span class="kbd badmono">↓</span> to navigate,
- <span class="kbd">enter</span> to view files.
- </p>
- </div>
-
- <table class="tree-browser" cellpadding="0" cellspacing="0">
- <tr class="js-header"><th> </th><th>name</th></tr>
- <tr class="js-no-results no-results" style="display: none">
- <th colspan="2">No matching files</th>
- </tr>
- <tbody class="js-results-list js-navigation-container" data-navigation-enable-mouse>
- </tbody>
- </table>
-</div>
-
-<div id="jump-to-line" style="display:none">
- <h2>Jump to Line</h2>
- <form>
- <input class="textfield" type="text">
- <div class="full-button">
- <button type="submit" class="classy">
- <span>Go</span>
- </button>
- </div>
- </form>
-</div>
-
-
-<div class="subnav-bar">
-
- <ul class="actions">
-
- <li class="switcher">
-
- <div class="context-menu-container js-menu-container">
- <span class="text">Current branch:</span>
- <a href="#"
- class="minibutton bigger switcher context-menu-button js-menu-target js-commitish-button btn-branch repo-tree"
- data-master-branch="master"
- data-ref="master">
- <span><span class="icon"></span>master</span>
- </a>
-
- <div class="context-pane commitish-context js-menu-content">
- <a href="javascript:;" class="close js-menu-close"></a>
- <div class="title">Switch Branches/Tags</div>
- <div class="body pane-selector commitish-selector js-filterable-commitishes">
- <div class="filterbar">
- <div class="placeholder-field js-placeholder-field">
- <label class="placeholder" for="context-commitish-filter-field" data-placeholder-mode="sticky">Filter branches/tags</label>
- <input type="text" id="context-commitish-filter-field" class="commitish-filter" />
- </div>
-
- <ul class="tabs">
- <li><a href="#" data-filter="branches" class="selected">Branches</a></li>
- <li><a href="#" data-filter="tags">Tags</a></li>
- </ul>
- </div>
-
- <div class="commitish-item branch-commitish selector-item">
- <h4>
- <a href="/nbronson/snaptree/blob/master/doc/LICENSE" data-name="master">master</a>
- </h4>
- </div>
-
-
- <div class="no-results" style="display:none">Nothing to show</div>
- </div>
- </div><!-- /.commitish-context-context -->
- </div>
-
- </li>
- </ul>
-
- <ul class="subnav">
- <li><a href="/nbronson/snaptree" class="selected" highlight="repo_source">Files</a></li>
- <li><a href="/nbronson/snaptree/commits/master" highlight="repo_commits">Commits</a></li>
- <li><a href="/nbronson/snaptree/branches" class="" highlight="repo_branches" rel="nofollow">Branches <span class="counter">1</span></a></li>
- <li><a href="/nbronson/snaptree/tags" class="blank" highlight="repo_tags">Tags <span class="counter">0</span></a></li>
- <li><a href="/nbronson/snaptree/downloads" class="blank" highlight="repo_downloads">Downloads <span class="counter">0</span></a></li>
- </ul>
-
-</div>
-
-
-
-
-
-
-
-
- </div><!-- /.repohead -->
-
-
-
-
-
-
-
- <p class="last-commit">Latest commit to the <strong>master</strong> branch</p>
-
-<div class="commit commit-tease js-details-container">
- <p class="commit-title ">
- <a href="/nbronson/snaptree/commit/b198f84b0c927f6b5cdef080552fc26aa004d3ee" class="message">update to new IDEA install</a>
-
- </p>
- <div class="commit-meta">
- <a href="/nbronson/snaptree/commit/b198f84b0c927f6b5cdef080552fc26aa004d3ee" class="sha-block">commit <span class="sha">b198f84b0c</span></a>
-
- <div class="authorship">
- <img class="gravatar" height="20" src="https://secure.gravatar.com/avatar/9e4674291aec6ad9f6c0a7e219d522c0?s=140... " width="20" />
- <span class="author-name"><a href="/nbronson">nbronson</a></span>
- authored <time class="js-relative-date" datetime="2011-11-16T09:38:04-08:00" title="2011-11-16 09:38:04">November 16, 2011</time>
-
- </div>
- </div>
-</div>
-
-
- <div id="slider">
-
- <div class="breadcrumb" data-path="doc/LICENSE/">
- <b><a href="/nbronson/snaptree/tree/b198f84b0c927f6b5cdef080552fc26aa004d3ee" class="js-rewrite-sha">snaptree</a></b> / <a href="/nbronson/snaptree/tree/b198f84b0c927f6b5cdef080552fc26aa004d3ee/doc" class="js-rewrite-sha">doc</a> / LICENSE <span style="display:none" id="clippy_4738" class="clippy-text">doc/LICENSE</span>
-
- <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
- width="110"
- height="14"
- class="clippy"
- id="clippy" >
- <param name="movie" value="https://a248.e.akamai.net/assets.github.com/flash/clippy.swf?1261951368?v5 "/>
- <param name="allowScriptAccess" value="always" />
- <param name="quality" value="high" />
- <param name="scale" value="noscale" />
- <param NAME="FlashVars" value="id=clippy_4738&copied=copied!&copyto=copy to clipboard">
- <param name="bgcolor" value="#FFFFFF">
- <param name="wmode" value="opaque">
- <embed src="https://a248.e.akamai.net/assets.github.com/flash/clippy.swf?1261951368?v5 "
- width="110"
- height="14"
- name="clippy"
- quality="high"
- allowScriptAccess="always"
- type="application/x-shockwave-flash"
- pluginspage="http://www.macromedia.com/go/getflashplayer "
- FlashVars="id=clippy_4738&copied=copied!&copyto=copy to clipboard"
- bgcolor="#FFFFFF"
- wmode="opaque"
- />
- </object>
-
-
- </div>
-
- <div class="frames">
- <div class="frame frame-center" data-path="doc/LICENSE/" data-permalink-url="/nbronson/snaptree/blob/b198f84b0c927f6b5cdef080552fc26aa004d3ee/doc/LICENSE" data-title="doc/LICENSE at master from nbronson/snaptree - GitHub" data-type="blob">
- <ul class="big-actions">
- <li><a class="file-edit-link minibutton js-rewrite-sha" href="/nbronson/snaptree/edit/b198f84b0c927f6b5cdef080552fc26aa004d3ee/doc/LICENSE" data-method="post" rel="nofollow"><span>Edit this file</span></a></li>
- </ul>
-
- <div id="files">
- <div class="file">
- <div class="meta">
- <div class="info">
- <span class="icon"><img alt="Txt" height="16" src="https://a248.e.akamai.net/assets.github.com/images/icons/txt.png?1252203928 " width="16" /></span>
- <span class="mode" title="File Mode">100644</span>
- <span>36 lines (27 sloc)</span>
- <span>1.715 kb</span>
- </div>
- <ul class="actions">
- <li><a href="/nbronson/snaptree/raw/master/doc/LICENSE" id="raw-url">raw</a></li>
- <li><a href="/nbronson/snaptree/blame/master/doc/LICENSE">blame</a></li>
- <li><a href="/nbronson/snaptree/commits/master/doc/LICENSE" rel="nofollow">history</a></li>
- </ul>
- </div>
- <div class="data type-text">
- <table cellpadding="0" cellspacing="0" class="lines">
- <tr>
- <td>
- <pre class="line_numbers"><span id="L1" rel="#L1">1</span>
-<span id="L2" rel="#L2">2</span>
-<span id="L3" rel="#L3">3</span>
-<span id="L4" rel="#L4">4</span>
-<span id="L5" rel="#L5">5</span>
-<span id="L6" rel="#L6">6</span>
-<span id="L7" rel="#L7">7</span>
-<span id="L8" rel="#L8">8</span>
-<span id="L9" rel="#L9">9</span>
-<span id="L10" rel="#L10">10</span>
-<span id="L11" rel="#L11">11</span>
-<span id="L12" rel="#L12">12</span>
-<span id="L13" rel="#L13">13</span>
-<span id="L14" rel="#L14">14</span>
-<span id="L15" rel="#L15">15</span>
-<span id="L16" rel="#L16">16</span>
-<span id="L17" rel="#L17">17</span>
-<span id="L18" rel="#L18">18</span>
-<span id="L19" rel="#L19">19</span>
-<span id="L20" rel="#L20">20</span>
-<span id="L21" rel="#L21">21</span>
-<span id="L22" rel="#L22">22</span>
-<span id="L23" rel="#L23">23</span>
-<span id="L24" rel="#L24">24</span>
-<span id="L25" rel="#L25">25</span>
-<span id="L26" rel="#L26">26</span>
-<span id="L27" rel="#L27">27</span>
-<span id="L28" rel="#L28">28</span>
-<span id="L29" rel="#L29">29</span>
-<span id="L30" rel="#L30">30</span>
-<span id="L31" rel="#L31">31</span>
-<span id="L32" rel="#L32">32</span>
-<span id="L33" rel="#L33">33</span>
-<span id="L34" rel="#L34">34</span>
-<span id="L35" rel="#L35">35</span>
-<span id="L36" rel="#L36">36</span>
-</pre>
- </td>
- <td width="100%">
- <div class="highlight"><pre><div class='line' id='LC1'>SNAPTREE LICENSE</div><div class='line' id='LC2'><br/></div><div class='line' id='LC3'>Copyright (c) 2009 Stanford University, unless otherwise specified.</div><div class='line' id='LC4'>All rights reserved.</div><div class='line' id='LC5'><br/></div><div class='line' id='LC6'>This software was developed by the Pervasive Parallelism Laboratory of</div><div class='line' id='LC7'>Stanford University, California, USA.</div><div class='line' id='LC8'><br/></div><div class='line' id='LC9'>Permission to use, copy, modify, and distribute this software in source</div><div class='line' id='LC10'>or binary form for any purpose with or without fee is hereby granted,</div><div class='line' id='LC11'>provided that the following conditions are met:</div><div class='line' id='LC12'><br/></div><div class='line' id='LC13'> 1. Redistributions of source code must retain the above copyright</div><div class='
line' id='LC14'> notice, this list of conditions and the following disclaimer.</div><div class='line' id='LC15'><br/></div><div class='line' id='LC16'> 2. Redistributions in binary form must reproduce the above copyright</div><div class='line' id='LC17'> notice, this list of conditions and the following disclaimer in the</div><div class='line' id='LC18'> documentation and/or other materials provided with the distribution.</div><div class='line' id='LC19'><br/></div><div class='line' id='LC20'> 3. Neither the name of Stanford University nor the names of its</div><div class='line' id='LC21'> contributors may be used to endorse or promote products derived</div><div class='line' id='LC22'> from this software without specific prior written permission.</div><div class='line'
id='LC23'><br/></div><div class='line' id='LC24'><br/></div><div class='line' id='LC25'>THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND</div><div class='line' id='LC26'>ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</div><div class='line' id='LC27'>IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</div><div class='line' id='LC28'>ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE</div><div class='line' id='LC29'>FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</div><div class='line' id='LC30'>DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</div><div class='line' id='LC31'>SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</div><div class='line' id='LC32'>CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</div><div class='line' id='LC33'>LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHE
RWISE) ARISING IN ANY WAY</div><div class='line' id='LC34'>OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</div><div class='line' id='LC35'>SUCH DAMAGE.</div><div class='line' id='LC36'><br/></div></pre></div>
- </td>
- </tr>
- </table>
- </div>
-
- </div>
- </div>
- </div>
- </div>
-
- </div>
-
-<div class="frame frame-loading" style="display:none;" data-tree-list-url="/nbronson/snaptree/tree-list/b198f84b0c927f6b5cdef080552fc26aa004d3ee" data-blob-url-prefix="/nbronson/snaptree/blob/b198f84b0c927f6b5cdef080552fc26aa004d3ee">
- <img src="https://a248.e.akamai.net/assets.github.com/images/modules/ajax/big_spinn... " height="32" width="32">
-</div>
-
- </div>
- </div>
-
- <!-- footer -->
- <div id="footer" >
-
- <div class="upper_footer">
- <div class="container" class="clearfix">
-
- <!--[if IE]><h4 id="blacktocat_ie">GitHub Links</h4><![endif]-->
- <![if !IE]><h4 id="blacktocat">GitHub Links</h4><![endif]>
-
- <ul class="footer_nav">
- <h4>GitHub</h4>
- <li><a href="https://github.com/about ">About</a></li>
- <li><a href="https://github.com/blog ">Blog</a></li>
- <li><a href="https://github.com/features ">Features</a></li>
- <li><a href="https://github.com/contact ">Contact & Support</a></li>
- <li><a href="https://github.com/training ">Training</a></li>
- <li><a href="http://enterprise.github.com/ ">GitHub Enterprise</a></li>
- <li><a href="http://status.github.com/ ">Site Status</a></li>
- </ul>
-
- <ul class="footer_nav">
- <h4>Tools</h4>
- <li><a href="http://get.gaug.es/ ">Gauges: Analyze web traffic</a></li>
- <li><a href="http://speakerdeck.com ">Speakerdeck: Presentations</a></li>
- <li><a href="https://gist.github.com ">Gist: Code snippets</a></li>
- <li><a href="http://mac.github.com/ ">GitHub for Mac</a></li>
- <li><a href="http://mobile.github.com/ ">Issues for iPhone</a></li>
- <li><a href="http://jobs.github.com/ ">Job Board</a></li>
- </ul>
-
- <ul class="footer_nav">
- <h4>Extras</h4>
- <li><a href="http://shop.github.com/ ">GitHub Shop</a></li>
- <li><a href="http://octodex.github.com/ ">The Octodex</a></li>
- </ul>
-
- <ul class="footer_nav">
- <h4>Documentation</h4>
- <li><a href="http://help.github.com/ ">GitHub Help</a></li>
- <li><a href="http://developer.github.com/ ">Developer API</a></li>
- <li><a href="http://github.github.com/github-flavored-markdown/ ">GitHub Flavored Markdown</a></li>
- <li><a href="http://pages.github.com/ ">GitHub Pages</a></li>
- </ul>
-
- </div><!-- /.site -->
- </div><!-- /.upper_footer -->
-
-<div class="lower_footer">
- <div class="container" class="clearfix">
- <!--[if IE]><div id="legal_ie"><![endif]-->
- <![if !IE]><div id="legal"><![endif]>
- <ul>
- <li><a href="https://github.com/site/terms ">Terms of Service</a></li>
- <li><a href="https://github.com/site/privacy ">Privacy</a></li>
- <li><a href="https://github.com/security ">Security</a></li>
- </ul>
-
- <p>© 2011 <span id="_rrt" title="0.07115s from fe10.rs.github.com ">GitHub</span> Inc. All rights reserved.</p>
- </div><!-- /#legal or /#legal_ie-->
-
- <div class="sponsor">
- <a href="http://www.rackspace.com " class="logo">
- <img alt="Dedicated Server" height="36" src="https://a248.e.akamai.net/assets.github.com/images/modules/footer/rackspa... " width="38" />
- </a>
- Powered by the <a href="http://www.rackspace.com ">Dedicated
- Servers</a> and<br/> <a href="http://www.rackspacecloud.com ">Cloud
- Computing</a> of Rackspace Hosting<span>®</span>
- </div>
- </div><!-- /.site -->
-</div><!-- /.lower_footer -->
-
- </div><!-- /#footer -->
-
-
-
-<div id="keyboard_shortcuts_pane" class="instapaper_ignore readability-extra" style="display:none">
- <h2>Keyboard Shortcuts <small><a href="#" class="js-see-all-keyboard-shortcuts">(see all)</a></small></h2>
-
- <div class="columns threecols">
- <div class="column first">
- <h3>Site wide shortcuts</h3>
- <dl class="keyboard-mappings">
- <dt>s</dt>
- <dd>Focus site search</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>?</dt>
- <dd>Bring up this help dialog</dd>
- </dl>
- </div><!-- /.column.first -->
-
- <div class="column middle" style='display:none'>
- <h3>Commit list</h3>
- <dl class="keyboard-mappings">
- <dt>j</dt>
- <dd>Move selection down</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>k</dt>
- <dd>Move selection up</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>c <em>or</em> o <em>or</em> enter</dt>
- <dd>Open commit</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>y</dt>
- <dd>Expand URL to its canonical form</dd>
- </dl>
- </div><!-- /.column.first -->
-
- <div class="column last" style='display:none'>
- <h3>Pull request list</h3>
- <dl class="keyboard-mappings">
- <dt>j</dt>
- <dd>Move selection down</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>k</dt>
- <dd>Move selection up</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>o <em>or</em> enter</dt>
- <dd>Open issue</dd>
- </dl>
- </div><!-- /.columns.last -->
-
- </div><!-- /.columns.equacols -->
-
- <div style='display:none'>
- <div class="rule"></div>
-
- <h3>Issues</h3>
-
- <div class="columns threecols">
- <div class="column first">
- <dl class="keyboard-mappings">
- <dt>j</dt>
- <dd>Move selection down</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>k</dt>
- <dd>Move selection up</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>x</dt>
- <dd>Toggle selection</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>o <em>or</em> enter</dt>
- <dd>Open issue</dd>
- </dl>
- </div><!-- /.column.first -->
- <div class="column middle">
- <dl class="keyboard-mappings">
- <dt>I</dt>
- <dd>Mark selection as read</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>U</dt>
- <dd>Mark selection as unread</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>e</dt>
- <dd>Close selection</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>y</dt>
- <dd>Remove selection from view</dd>
- </dl>
- </div><!-- /.column.middle -->
- <div class="column last">
- <dl class="keyboard-mappings">
- <dt>c</dt>
- <dd>Create issue</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>l</dt>
- <dd>Create label</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>i</dt>
- <dd>Back to inbox</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>u</dt>
- <dd>Back to issues</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>/</dt>
- <dd>Focus issues search</dd>
- </dl>
- </div>
- </div>
- </div>
-
- <div style='display:none'>
- <div class="rule"></div>
-
- <h3>Issues Dashboard</h3>
-
- <div class="columns threecols">
- <div class="column first">
- <dl class="keyboard-mappings">
- <dt>j</dt>
- <dd>Move selection down</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>k</dt>
- <dd>Move selection up</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>o <em>or</em> enter</dt>
- <dd>Open issue</dd>
- </dl>
- </div><!-- /.column.first -->
- </div>
- </div>
-
- <div style='display:none'>
- <div class="rule"></div>
-
- <h3>Network Graph</h3>
- <div class="columns equacols">
- <div class="column first">
- <dl class="keyboard-mappings">
- <dt><span class="badmono">←</span> <em>or</em> h</dt>
- <dd>Scroll left</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt><span class="badmono">→</span> <em>or</em> l</dt>
- <dd>Scroll right</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt><span class="badmono">↑</span> <em>or</em> k</dt>
- <dd>Scroll up</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt><span class="badmono">↓</span> <em>or</em> j</dt>
- <dd>Scroll down</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>t</dt>
- <dd>Toggle visibility of head labels</dd>
- </dl>
- </div><!-- /.column.first -->
- <div class="column last">
- <dl class="keyboard-mappings">
- <dt>shift <span class="badmono">←</span> <em>or</em> shift h</dt>
- <dd>Scroll all the way left</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>shift <span class="badmono">→</span> <em>or</em> shift l</dt>
- <dd>Scroll all the way right</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>shift <span class="badmono">↑</span> <em>or</em> shift k</dt>
- <dd>Scroll all the way up</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>shift <span class="badmono">↓</span> <em>or</em> shift j</dt>
- <dd>Scroll all the way down</dd>
- </dl>
- </div><!-- /.column.last -->
- </div>
- </div>
-
- <div >
- <div class="rule"></div>
- <div class="columns threecols">
- <div class="column first" >
- <h3>Source Code Browsing</h3>
- <dl class="keyboard-mappings">
- <dt>t</dt>
- <dd>Activates the file finder</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>l</dt>
- <dd>Jump to line</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>w</dt>
- <dd>Switch branch/tag</dd>
- </dl>
- <dl class="keyboard-mappings">
- <dt>y</dt>
- <dd>Expand URL to its canonical form</dd>
- </dl>
- </div>
- </div>
- </div>
-</div>
-
- <div id="markdown-help" class="instapaper_ignore readability-extra">
- <h2>Markdown Cheat Sheet</h2>
-
- <div class="cheatsheet-content">
-
- <div class="mod">
- <div class="col">
- <h3>Format Text</h3>
- <p>Headers</p>
- <pre>
-# This is an <h1> tag
-## This is an <h2> tag
-###### This is an <h6> tag</pre>
- <p>Text styles</p>
- <pre>
-*This text will be italic*
-_This will also be italic_
-**This text will be bold**
-__This will also be bold__
-
-*You **can** combine them*
-</pre>
- </div>
- <div class="col">
- <h3>Lists</h3>
- <p>Unordered</p>
- <pre>
-* Item 1
-* Item 2
- * Item 2a
- * Item 2b</pre>
- <p>Ordered</p>
- <pre>
-1. Item 1
-2. Item 2
-3. Item 3
- * Item 3a
- * Item 3b</pre>
- </div>
- <div class="col">
- <h3>Miscellaneous</h3>
- <p>Images</p>
- <pre>
-
-Format: 
-</pre>
- <p>Links</p>
- <pre>
-http://github.com - automatic!
-[GitHub](http://github.com)</pre>
-<p>Blockquotes</p>
- <pre>
-As Kanye West said:
-
-> We're living the future so
-> the present is our past.
-</pre>
- </div>
- </div>
- <div class="rule"></div>
-
- <h3>Code Examples in Markdown</h3>
- <div class="col">
- <p>Syntax highlighting with <a href="http://github.github.com/github-flavored-markdown/ " title="GitHub Flavored Markdown" target="_blank">GFM</a></p>
- <pre>
-```javascript
-function fancyAlert(arg) {
- if(arg) {
- $.facebox({div:'#foo'})
- }
-}
-```</pre>
- </div>
- <div class="col">
- <p>Or, indent your code 4 spaces</p>
- <pre>
-Here is a Python code example
-without syntax highlighting:
-
- def foo:
- if not bar:
- return true</pre>
- </div>
- <div class="col">
- <p>Inline code for comments</p>
- <pre>
-I think you should use an
-`<addr>` element here instead.</pre>
- </div>
- </div>
-
- </div>
-</div>
-
-
- <div class="context-overlay"></div>
-
- <div class="ajax-error-message">
- <p><span class="icon"></span> Something went wrong with that request. Please try again. <a href="javascript:;" class="ajax-error-dismiss">Dismiss</a></p>
- </div>
-
-
-
-
- </body>
-</html>
-
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/thrift-python-0.7.0.txt b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/thrift-python-0.7.0.txt
deleted file mode 100644
index 9d189ef..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/licenses/thrift-python-0.7.0.txt
+++ /dev/null
@@ -1,324 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
---------------------------------------------------
-SOFTWARE DISTRIBUTED WITH THRIFT:
-
-The Apache Thrift software includes a number of subcomponents with
-separate copyright notices and license terms. Your use of the source
-code for the these subcomponents is subject to the terms and
-conditions of the following licenses.
-
---------------------------------------------------
-Portions of the following files are licensed under the MIT License:
-
- lib/erl/src/Makefile.am
-
-Please see doc/otp-base-license.txt for the full terms of this license.
-
-
---------------------------------------------------
-The following files contain some portions of code contributed under
-the Thrift Software License (see doc/old-thrift-license.txt), and relicensed
-under the Apache 2.0 License:
-
- compiler/cpp/Makefile.am
- compiler/cpp/src/generate/t_cocoa_generator.cc
- compiler/cpp/src/generate/t_cpp_generator.cc
- compiler/cpp/src/generate/t_csharp_generator.cc
- compiler/cpp/src/generate/t_erl_generator.cc
- compiler/cpp/src/generate/t_hs_generator.cc
- compiler/cpp/src/generate/t_java_generator.cc
- compiler/cpp/src/generate/t_ocaml_generator.cc
- compiler/cpp/src/generate/t_perl_generator.cc
- compiler/cpp/src/generate/t_php_generator.cc
- compiler/cpp/src/generate/t_py_generator.cc
- compiler/cpp/src/generate/t_rb_generator.cc
- compiler/cpp/src/generate/t_st_generator.cc
- compiler/cpp/src/generate/t_xsd_generator.cc
- compiler/cpp/src/main.cc
- compiler/cpp/src/parse/t_field.h
- compiler/cpp/src/parse/t_program.h
- compiler/cpp/src/platform.h
- compiler/cpp/src/thriftl.ll
- compiler/cpp/src/thrifty.yy
- lib/csharp/src/Protocol/TBinaryProtocol.cs
- lib/csharp/src/Protocol/TField.cs
- lib/csharp/src/Protocol/TList.cs
- lib/csharp/src/Protocol/TMap.cs
- lib/csharp/src/Protocol/TMessage.cs
- lib/csharp/src/Protocol/TMessageType.cs
- lib/csharp/src/Protocol/TProtocol.cs
- lib/csharp/src/Protocol/TProtocolException.cs
- lib/csharp/src/Protocol/TProtocolFactory.cs
- lib/csharp/src/Protocol/TProtocolUtil.cs
- lib/csharp/src/Protocol/TSet.cs
- lib/csharp/src/Protocol/TStruct.cs
- lib/csharp/src/Protocol/TType.cs
- lib/csharp/src/Server/TServer.cs
- lib/csharp/src/Server/TSimpleServer.cs
- lib/csharp/src/Server/TThreadPoolServer.cs
- lib/csharp/src/TApplicationException.cs
- lib/csharp/src/Thrift.csproj
- lib/csharp/src/Thrift.sln
- lib/csharp/src/TProcessor.cs
- lib/csharp/src/Transport/TServerSocket.cs
- lib/csharp/src/Transport/TServerTransport.cs
- lib/csharp/src/Transport/TSocket.cs
- lib/csharp/src/Transport/TStreamTransport.cs
- lib/csharp/src/Transport/TTransport.cs
- lib/csharp/src/Transport/TTransportException.cs
- lib/csharp/src/Transport/TTransportFactory.cs
- lib/csharp/ThriftMSBuildTask/Properties/AssemblyInfo.cs
- lib/csharp/ThriftMSBuildTask/ThriftBuild.cs
- lib/csharp/ThriftMSBuildTask/ThriftMSBuildTask.csproj
- lib/rb/lib/thrift.rb
- lib/st/README
- lib/st/thrift.st
- test/OptionalRequiredTest.cpp
- test/OptionalRequiredTest.thrift
- test/ThriftTest.thrift
-
---------------------------------------------------
-For the aclocal/ax_boost_base.m4 and contrib/fb303/aclocal/ax_boost_base.m4 components:
-
-# Copyright (c) 2007 Thomas Porschberg <thomas(a)randspringer.de>
-#
-# Copying and distribution of this file, with or without
-# modification, are permitted in any medium without royalty provided
-# the copyright notice and this notice are preserved.
-
---------------------------------------------------
-For the compiler/cpp/src/md5.[ch] components:
-
-/*
- Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved.
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- L. Peter Deutsch
- ghost(a)aladdin.com
-
- */
-
----------------------------------------------------
-For the lib/rb/setup.rb: Copyright (c) 2000-2005 Minero Aoki,
-lib/ocaml/OCamlMakefile and lib/ocaml/README-OCamlMakefile components:
- Copyright (C) 1999 - 2007 Markus Mottl
-
-Licensed under the terms of the GNU Lesser General Public License 2.1
-(see doc/lgpl-2.1.txt for the full terms of this license)
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/log4j-1.2.16.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/log4j-1.2.16.jar
deleted file mode 100644
index 3f9d847..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/log4j-1.2.16.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/metrics-core-2.0.3.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/metrics-core-2.0.3.jar
deleted file mode 100644
index 729e6e8..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/metrics-core-2.0.3.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/platform-3.4.1.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/platform-3.4.1.jar
deleted file mode 100644
index 8357d2e..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/platform-3.4.1.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/servlet-api-2.5-20081211.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/servlet-api-2.5-20081211.jar
deleted file mode 100644
index b0537c4..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/servlet-api-2.5-20081211.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/slf4j-api-1.6.1.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/slf4j-api-1.6.1.jar
deleted file mode 100644
index 42e0ad0..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/slf4j-api-1.6.1.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/slf4j-log4j12-1.6.1.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/slf4j-log4j12-1.6.1.jar
deleted file mode 100644
index 873d119..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/slf4j-log4j12-1.6.1.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/snakeyaml-1.6.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/snakeyaml-1.6.jar
deleted file mode 100644
index 1d7deb5..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/snakeyaml-1.6.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/snappy-java-1.0.4.1.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/snappy-java-1.0.4.1.jar
deleted file mode 100644
index 4f2b757..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/snappy-java-1.0.4.1.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/snaptree-0.1.jar b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/snaptree-0.1.jar
deleted file mode 100644
index a5d2c85..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/snaptree-0.1.jar and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/thrift-python-internal-only-0.7.0.zip b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/thrift-python-internal-only-0.7.0.zip
deleted file mode 100644
index 53934bb..0000000
Binary files a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/lib/thrift-python-internal-only-0.7.0.zip and /dev/null differ
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/pylib/cqlshlib/__init__.py b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/pylib/cqlshlib/__init__.py
deleted file mode 100644
index 588a655..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/pylib/cqlshlib/__init__.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
diff --git a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/pylib/cqlshlib/cql3handling.py b/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/pylib/cqlshlib/cql3handling.py
deleted file mode 100644
index 5099322..0000000
--- a/modules/common/cassandra-common/src/main/resources/cassandra-1.1.5/pylib/cqlshlib/cql3handling.py
+++ /dev/null
@@ -1,822 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import re
-from warnings import warn
-from .cqlhandling import CqlParsingRuleSet, Hint
-
-try:
- import json
-except ImportError:
- import simplejson as json
-
-class UnexpectedTableStructure(UserWarning):
- def __init__(self, msg):
- self.msg = msg
-
- def __str__(self):
- return 'Unexpected table structure; may not translate correctly to CQL. ' + self.msg
-
-class Cql3ParsingRuleSet(CqlParsingRuleSet):
- keywords = set((
- 'select', 'from', 'where', 'and', 'key', 'insert', 'update', 'with',
- 'limit', 'using', 'consistency', 'one', 'quorum', 'all', 'any',
- 'local_quorum', 'each_quorum', 'two', 'three', 'use', 'count', 'set',
- 'begin', 'apply', 'batch', 'truncate', 'delete', 'in', 'create',
- 'keyspace', 'schema', 'columnfamily', 'table', 'index', 'on', 'drop',
- 'primary', 'into', 'values', 'timestamp', 'ttl', 'alter', 'add', 'type',
- 'compact', 'storage', 'order', 'by', 'asc', 'desc', 'clustering', 'token'
- ))
-
- columnfamily_options = (
- # (CQL option name, Thrift option name (or None if same))
- ('comment', None),
- ('comparator', 'comparator_type'),
- ('read_repair_chance', None),
- ('gc_grace_seconds', None),
- ('default_validation', 'default_validation_class'),
- ('replicate_on_write', None),
- ('compaction_strategy_class', 'compaction_strategy'),
- )
-
- columnfamily_layout_options = (
- 'comment',
- 'bloom_filter_fp_chance',
- 'caching',
- 'read_repair_chance',
- # 'local_read_repair_chance', -- not yet a valid cql option
- 'gc_grace_seconds',
- 'replicate_on_write',
- 'compaction_strategy_class',
- )
-
- columnfamily_layout_map_options = (
- ('compaction_strategy_options',
- ()),
- ('compression_parameters',
- ('sstable_compression', 'chunk_length_kb', 'crc_check_chance')),
- )
-
- @staticmethod
- def token_dequote(tok):
- if tok[0] == 'unclosedName':
- # strip one quote
- return tok[1][1:].replace('""', '"')
- # cql2 version knows how to do everything else
- return CqlParsingRuleSet.token_dequote(tok)
-
- @classmethod
- def cql3_dequote_value(cls, value):
- return cls.cql2_dequote_value(value)
-
- @staticmethod
- def cql3_dequote_name(name):
- name = name.strip()
- if name == '':
- return name
- if name[0] == '"':
- name = name[1:-1].replace('""', '"')
- return name
-
- @classmethod
- def cql3_escape_value(cls, value):
- return cls.cql2_escape_value(value)
-
- @staticmethod
- def cql3_escape_name(name):
- return '"%s"' % name.replace('"', '""')
-
- valid_cql3_word_re = re.compile(r'^[a-z][0-9a-z_]*$')
-
- @classmethod
- def is_valid_cql3_name(cls, s):
- if s is None or s.lower() in cls.keywords:
- return False
- return cls.valid_cql3_word_re.match(s) is not None
-
- @classmethod
- def cql3_maybe_escape_name(cls, name):
- if cls.is_valid_cql3_name(name):
- return name
- return cls.cql3_escape_name(name)
-
- @classmethod
- def dequote_any(cls, t):
- if t[0] == '"':
- return cls.cql3_dequote_name(t)
- return CqlParsingRuleSet.dequote_any(t)
-
- dequote_value = cql3_dequote_value
- dequote_name = cql3_dequote_name
- escape_value = cql3_escape_value
- escape_name = cql3_escape_name
- maybe_escape_name = cql3_maybe_escape_name
-
-CqlRuleSet = Cql3ParsingRuleSet()
-
-# convenience for remainder of module
-shorthands = ('completer_for', 'explain_completion',
- 'dequote_value', 'dequote_name',
- 'escape_value', 'escape_name',
- 'maybe_escape_name', 'cql_typename')
-
-for shorthand in shorthands:
- globals()[shorthand] = getattr(CqlRuleSet, shorthand)
-
-
-
-# BEGIN SYNTAX/COMPLETION RULE DEFINITIONS
-
-syntax_rules = r'''
-<Start> ::= <CQL_Statement>*
- ;
-
-<CQL_Statement> ::= [statements]=<statementBody> ";"
- ;
-
-# the order of these terminal productions is significant:
-<endline> ::= /\n/ ;
-
-JUNK ::= /([ \t\r\f\v]+|(--|[/][/])[^\n\r]*([\n\r]|$)|[/][*].*?[*][/])/ ;
-
-<stringLiteral> ::= /'([^']|'')*'/ ;
-<quotedName> ::= /"([^"]|"")*"/ ;
-<float> ::= /-?[0-9]+\.[0-9]+/ ;
-<wholenumber> ::= /[0-9]+/ ;
-<integer> ::= /-?[0-9]+/ ;
-<uuid> ::= /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/ ;
-<identifier> ::= /[a-z][a-z0-9_]*/ ;
-<colon> ::= ":" ;
-<star> ::= "*" ;
-<endtoken> ::= ";" ;
-<op> ::= /[-+=,().]/ ;
-<cmp> ::= /[<>]=?/ ;
-
-<unclosedString> ::= /'([^']|'')*/ ;
-<unclosedName> ::= /"([^"]|"")*/ ;
-<unclosedComment> ::= /[/][*][^\n]*$/ ;
-
-<term> ::= <stringLiteral>
- | <integer>
- | <float>
- | <uuid>
- ;
-<extendedTerm> ::= token="TOKEN" "(" <term> ")"
- | <term>
- ;
-<cident> ::= <quotedName>
- | <identifier>
- | <unreservedKeyword>
- ;
-<colname> ::= <cident> ; # just an alias
-
-<statementBody> ::= <useStatement>
- | <selectStatement>
- | <dataChangeStatement>
- | <schemaChangeStatement>
- ;
-
-<dataChangeStatement> ::= <insertStatement>
- | <updateStatement>
- | <deleteStatement>
- | <truncateStatement>
- | <batchStatement>
- ;
-
-<schemaChangeStatement> ::= <createKeyspaceStatement>
- | <createColumnFamilyStatement>
- | <createIndexStatement>
- | <dropKeyspaceStatement>
- | <dropColumnFamilyStatement>
- | <dropIndexStatement>
- | <alterTableStatement>
- ;
-
-<consistencylevel> ::= cl=( <K_ONE>
- | <K_QUORUM>
- | <K_ALL>
- | <K_ANY>
- | <K_LOCAL_QUORUM>
- | <K_EACH_QUORUM>
- | <K_TWO>
- | <K_THREE> )
- ;
-
-<storageType> ::= typename=( <identifier> | <stringLiteral> ) ;
-
-<columnFamilyName> ::= ( ksname=<cfOrKsName> "." )? cfname=<cfOrKsName> ;
-
-<keyspaceName> ::= ksname=<cfOrKsName> ;
-
-<cfOrKsName> ::= <identifier>
- | <quotedName>
- | <unreservedKeyword>;
-
-<unreservedKeyword> ::= nocomplete=
- ( <K_KEY>
- | <K_CONSISTENCY>
- | <K_CLUSTERING>
- # | <K_COUNT> -- to get count(*) completion, treat count as reserved
- | <K_TTL>
- | <K_COMPACT>
- | <K_STORAGE>
- | <K_TYPE>
- | <K_VALUES>
- | <consistencylevel> )
- ;
-'''
-
-@completer_for('consistencylevel', 'cl')
-def consistencylevel_cl_completer(ctxt, cass):
- return CqlRuleSet.consistency_levels
-
-@completer_for('extendedTerm', 'token')
-def token_word_completer(ctxt, cass):
- return ['TOKEN(']
-
-@completer_for('storageType', 'typename')
-def storagetype_completer(ctxt, cass):
- return CqlRuleSet.cql_types
-
-@completer_for('keyspaceName', 'ksname')
-def ks_name_completer(ctxt, cass):
- return map(maybe_escape_name, cass.get_keyspace_names())
-
-@completer_for('columnFamilyName', 'ksname')
-def cf_ks_name_completer(ctxt, cass):
- return [maybe_escape_name(ks) + '.' for ks in cass.get_keyspace_names()]
-
-@completer_for('columnFamilyName', 'cfname')
-def cf_name_completer(ctxt, cass):
- ks = ctxt.get_binding('ksname', None)
- if ks is not None:
- ks = dequote_name(ks)
- try:
- cfnames = cass.get_columnfamily_names(ks)
- except Exception:
- if ks is None:
- return ()
- raise
- return map(maybe_escape_name, cfnames)
-
-@completer_for('unreservedKeyword', 'nocomplete')
-def unreserved_keyword_completer(ctxt, cass):
- # we never want to provide completions through this production;
- # this is always just to allow use of some keywords as column
- # names, CF names, property values, etc.
- return ()
-
-def get_cf_layout(ctxt, cass):
- ks = dequote_name(ctxt.get_binding('ksname', None))
- cf = dequote_name(ctxt.get_binding('cfname'))
- return cass.get_columnfamily_layout(ks, cf)
-
-syntax_rules += r'''
-<useStatement> ::= "USE" <keyspaceName>
- ;
-<selectStatement> ::= "SELECT" <selectClause>
- "FROM" cf=<columnFamilyName>
- ("USING" "CONSISTENCY" selcl=<consistencylevel>)?
- ("WHERE" <whereClause>)?
- ("ORDER" "BY" <orderByClause> ( "," <orderByClause> )* )?
- ("LIMIT" <wholenumber>)?
- ;
-<whereClause> ::= <relation> ("AND" <relation>)*
- ;
-<relation> ::= [rel_lhs]=<cident> ("=" | "<" | ">" | "<=" | ">=") <term>
- | token="TOKEN" "(" rel_tokname=<cident> ")" ("=" | "<" | ">" | "<=" | ">=") <extendedTerm>
- | [rel_lhs]=<cident> "IN" "(" <term> ( "," <term> )* ")"
- ;
-<selectClause> ::= colname=<cident> ("," colname=<cident>)*
- | "*"
- | "COUNT" "(" star=( "*" | "1" ) ")"
- ;
-<orderByClause> ::= [ordercol]=<cident> ( "ASC" | "DESC" )?
- ;
-'''
-
-@completer_for('selectStatement', 'selcl')
-def select_statement_consistencylevel(ctxt, cass):
- return [cl for cl in CqlRuleSet.consistency_levels if cl != 'ANY']
-
-@completer_for('orderByClause', 'ordercol')
-def select_order_column_completer(ctxt, cass):
- prev_order_cols = ctxt.get_binding('ordercol', ())
- keyname = ctxt.get_binding('keyname')
- if keyname is None:
- keyname = ctxt.get_binding('rel_lhs', ())
- if not keyname:
- return [Hint("Can't ORDER BY here: need to specify partition key in WHERE clause")]
- layout = get_cf_layout(ctxt, cass)
- order_by_candidates = layout.key_components[1:] # can't order by first part of key
- if len(order_by_candidates) > len(prev_order_cols):
- return [maybe_escape_name(order_by_candidates[len(prev_order_cols)])]
- return [Hint('No more orderable columns here.')]
-
-@completer_for('relation', 'token')
-def relation_token_word_completer(ctxt, cass):
- return ['TOKEN(']
-
-@completer_for('relation', 'rel_tokname')
-def relation_token_subject_completer(ctxt, cass):
- layout = get_cf_layout(ctxt, cass)
- return [layout.key_components[0]]
-
-@completer_for('relation', 'rel_lhs')
-def select_relation_lhs_completer(ctxt, cass):
- layout = get_cf_layout(ctxt, cass)
- filterable = set(layout.key_components[:2])
- already_filtered_on = ctxt.get_binding('rel_lhs')
- for num in range(1, len(layout.key_components)):
- if layout.key_components[num - 1] in already_filtered_on:
- filterable.add(layout.key_components[num])
- else:
- break
- for cd in layout.columns:
- if cd.index_name is not None:
- filterable.add(cd.name)
- return map(maybe_escape_name, filterable)
-
-@completer_for('selectClause', 'star')
-def select_count_star_completer(ctxt, cass):
- return ['*']
-
-explain_completion('selectClause', 'colname')
-
-syntax_rules += r'''
-<insertStatement> ::= "INSERT" "INTO" cf=<columnFamilyName>
- "(" keyname=<cident> ","
- [colname]=<cident> ( "," [colname]=<cident> )* ")"
- "VALUES" "(" <term> "," <term> ( "," <term> )* ")"
- ( "USING" [insertopt]=<usingOption>
- ( "AND" [insertopt]=<usingOption> )* )?
- ;
-<usingOption> ::= "CONSISTENCY" <consistencylevel>
- | "TIMESTAMP" <wholenumber>
- | "TTL" <wholenumber>
- ;
-'''
-
-@completer_for('insertStatement', 'keyname')
-def insert_keyname_completer(ctxt, cass):
- layout = get_cf_layout(ctxt, cass)
- return [layout.key_components[0]]
-
-explain_completion('insertStatement', 'colname')
-
-@completer_for('insertStatement', 'insertopt')
-def insert_option_completer(ctxt, cass):
- opts = set('CONSISTENCY TIMESTAMP TTL'.split())
- for opt in ctxt.get_binding('insertopt', ()):
- opts.discard(opt.split()[0])
- return opts
-
-syntax_rules += r'''
-<updateStatement> ::= "UPDATE" cf=<columnFamilyName>
- ( "USING" [updateopt]=<usingOption>
- ( "AND" [updateopt]=<usingOption> )* )?
- "SET" <assignment> ( "," <assignment> )*
- "WHERE" <whereClause>
- ;
-<assignment> ::= updatecol=<cident> "=" update_rhs=<cident>
- ( counterop=( "+" | "-" ) <wholenumber> )?
- ;
-'''
-
-@completer_for('updateStatement', 'updateopt')
-def insert_option_completer(ctxt, cass):
- opts = set('CONSISTENCY TIMESTAMP TTL'.split())
- for opt in ctxt.get_binding('updateopt', ()):
- opts.discard(opt.split()[0])
- return opts
-
-@completer_for('assignment', 'updatecol')
-def update_col_completer(ctxt, cass):
- layout = get_cf_layout(ctxt, cass)
- return map(maybe_escape_name, [cm.name for cm in layout.columns])
-
-@completer_for('assignment', 'update_rhs')
-def update_countername_completer(ctxt, cass):
- layout = get_cf_layout(ctxt, cass)
- curcol = dequote_name(ctxt.get_binding('updatecol', ''))
- return [maybe_escape_name(curcol)] if layout.is_counter_col(curcol) else [Hint('<term>')]
-
-@completer_for('assignment', 'counterop')
-def update_counterop_completer(ctxt, cass):
- layout = get_cf_layout(ctxt, cass)
- curcol = dequote_name(ctxt.get_binding('updatecol', ''))
- return ['+', '-'] if layout.is_counter_col(curcol) else []
-
-syntax_rules += r'''
-<deleteStatement> ::= "DELETE" ( [delcol]=<cident> ( "," [delcol]=<cident> )* )?
- "FROM" cf=<columnFamilyName>
- ( "USING" [delopt]=<deleteOption> ( "AND" [delopt]=<deleteOption> )* )?
- "WHERE" <whereClause>
- ;
-<deleteOption> ::= "CONSISTENCY" <consistencylevel>
- | "TIMESTAMP" <wholenumber>
- ;
-'''
-
-@completer_for('deleteStatement', 'delopt')
-def delete_opt_completer(ctxt, cass):
- opts = set('CONSISTENCY TIMESTAMP'.split())
- for opt in ctxt.get_binding('delopt', ()):
- opts.discard(opt.split()[0])
- return opts
-
-explain_completion('deleteStatement', 'delcol', '<column_to_delete>')
-
-syntax_rules += r'''
-<batchStatement> ::= "BEGIN" "BATCH"
- ( "USING" [batchopt]=<usingOption>
- ( "AND" [batchopt]=<usingOption> )* )?
- [batchstmt]=<batchStatementMember> ";"
- ( [batchstmt]=<batchStatementMember> ";" )*
- "APPLY" "BATCH"
- ;
-<batchStatementMember> ::= <insertStatement>
- | <updateStatement>
- | <deleteStatement>
- ;
-'''
-
-@completer_for('batchStatement', 'batchopt')
-def batch_opt_completer(ctxt, cass):
- opts = set('CONSISTENCY TIMESTAMP'.split())
- for opt in ctxt.get_binding('batchopt', ()):
- opts.discard(opt.split()[0])
- return opts
-
-syntax_rules += r'''
-<truncateStatement> ::= "TRUNCATE" cf=<columnFamilyName>
- ;
-'''
-
-syntax_rules += r'''
-<createKeyspaceStatement> ::= "CREATE" "KEYSPACE" ksname=<cfOrKsName>
- "WITH" [optname]=<optionName> "=" [optval]=<optionVal>
- ( "AND" [optname]=<optionName> "=" [optval]=<optionVal> )*
- ;
-<optionName> ::= <identifier> ( ":" ( <identifier> | <wholenumber> ) )?
- ;
-<optionVal> ::= <stringLiteral>
- | <identifier>
- | <integer>
- ;
-'''
-
-explain_completion('createKeyspaceStatement', 'ksname', '<new_keyspace_name>')
-
-@completer_for('createKeyspaceStatement', 'optname')
-def create_ks_opt_completer(ctxt, cass):
- exist_opts = ctxt.get_binding('optname', ())
- try:
- stratopt = exist_opts.index('strategy_class')
- except ValueError:
- return ['strategy_class =']
- vals = ctxt.get_binding('optval')
- stratclass = dequote_value(vals[stratopt])
- if stratclass in ('SimpleStrategy', 'OldNetworkTopologyStrategy'):
- return ['strategy_options:replication_factor =']
- return [Hint('<strategy_option_name>')]
-
-@completer_for('createKeyspaceStatement', 'optval')
-def create_ks_optval_completer(ctxt, cass):
- exist_opts = ctxt.get_binding('optname', (None,))
- if exist_opts[-1] == 'strategy_class':
- return map(escape_value, CqlRuleSet.replication_strategies)
- return [Hint('<option_value>')]
-
-syntax_rules += r'''
-<createColumnFamilyStatement> ::= "CREATE" ( "COLUMNFAMILY" | "TABLE" )
- ( ks=<keyspaceName> "." )? cf=<cfOrKsName>
- "(" ( <singleKeyCfSpec> | <compositeKeyCfSpec> ) ")"
- ( "WITH" [cfopt]=<cfOptionName> "=" [optval]=<cfOptionVal>
- ( "AND" [cfopt]=<cfOptionName> "=" [optval]=<cfOptionVal> )* )?
- ;
-
-<singleKeyCfSpec> ::= keyalias=<cident> <storageType> "PRIMARY" "KEY"
- ( "," colname=<cident> <storageType> )*
- ;
-
-<compositeKeyCfSpec> ::= [newcolname]=<cident> <storageType>
- "," [newcolname]=<cident> <storageType>
- ( "," [newcolname]=<cident> <storageType> )*
- "," "PRIMARY" k="KEY" p="(" [pkey]=<cident>
- ( c="," [pkey]=<cident> )* ")"
- ;
-
-<cfOptionName> ::= cfoptname=<identifier> ( cfoptsep=":" cfsubopt=( <identifier> | <wholenumber> ) )?
- ;
-
-<cfOptionVal> ::= <identifier>
- | <stringLiteral>
- | <integer>
- | <float>
- ;
-'''
-
-explain_completion('createColumnFamilyStatement', 'cf', '<new_table_name>')
-explain_completion('singleKeyCfSpec', 'keyalias', '<new_key_name>')
-explain_completion('singleKeyCfSpec', 'colname', '<new_column_name>')
-explain_completion('compositeKeyCfSpec', 'newcolname', '<new_column_name>')
-
-@completer_for('compositeKeyCfSpec', 'pkey')
-def create_cf_composite_key_declaration(ctxt, cass):
- cols_declared = ctxt.get_binding('newcolname')
- pieces_already = ctxt.get_binding('pkey', ())
- while cols_declared[0] in pieces_already:
- cols_declared = cols_declared[1:]
- if len(cols_declared) < 2:
- return ()
- return [maybe_escape_name(cols_declared[0])]
-
-@completer_for('compositeKeyCfSpec', 'k')
-def create_cf_composite_primary_key_keyword_completer(ctxt, cass):
- return ['KEY (']
-
-@completer_for('compositeKeyCfSpec', 'p')
-def create_cf_composite_primary_key_paren_completer(ctxt, cass):
- return ['(']
-
-@completer_for('compositeKeyCfSpec', 'c')
-def create_cf_composite_primary_key_comma_completer(ctxt, cass):
- cols_declared = ctxt.get_binding('newcolname')
- pieces_already = ctxt.get_binding('pkey', ())
- if len(pieces_already) >= len(cols_declared) - 1:
- return ()
- return [',']
-
-@completer_for('cfOptionName', 'cfoptname')
-def create_cf_option_completer(ctxt, cass):
- return list(CqlRuleSet.columnfamily_layout_options) + \
- [c[0] + ':' for c in CqlRuleSet.columnfamily_map_options]
-
-@completer_for('cfOptionName', 'cfoptsep')
-def create_cf_suboption_separator(ctxt, cass):
- opt = ctxt.get_binding('cfoptname')
- if any(opt == c[0] for c in CqlRuleSet.columnfamily_map_options):
- return [':']
- return ()
-
-@completer_for('cfOptionName', 'cfsubopt')
-def create_cf_suboption_completer(ctxt, cass):
- opt = ctxt.get_binding('cfoptname')
- if opt == 'compaction_strategy_options':
- # try to determine the strategy class in use
- prevopts = ctxt.get_binding('cfopt', ())
- prevvals = ctxt.get_binding('optval', ())
- for prevopt, prevval in zip(prevopts, prevvals):
- if prevopt == 'compaction_strategy_class':
- csc = dequote_value(prevval)
- break
- else:
- layout = get_cf_layout(ctxt, cass)
- try:
- csc = layout.compaction_strategy
- except Exception:
- csc = ''
- csc = csc.split('.')[-1]
- if csc == 'SizeTieredCompactionStrategy':
- return ['min_sstable_size']
- elif csc == 'LeveledCompactionStrategy':
- return ['sstable_size_in_mb']
- for optname, _, subopts in CqlRuleSet.columnfamily_map_options:
- if opt == optname:
- return subopts
- return ()
-
-def create_cf_option_val_completer(ctxt, cass):
- exist_opts = ctxt.get_binding('cfopt')
- this_opt = exist_opts[-1]
- if this_opt == 'compression_parameters:sstable_compression':
- return map(escape_value, CqlRuleSet.available_compression_classes)
- if this_opt == 'compaction_strategy_class':
- return map(escape_value, CqlRuleSet.available_compaction_classes)
- if any(this_opt == opt[0] for opt in CqlRuleSet.obsolete_cf_options):
- return ["'<obsolete_option>'"]
- if this_opt in ('comparator', 'default_validation'):
- return CqlRuleSet.cql_types
- if this_opt in ('read_repair_chance', 'bloom_filter_fp_chance'):
- return [Hint('<float_between_0_and_1>')]
- if this_opt == 'replicate_on_write':
- return [Hint('<yes_or_no>')]
- if this_opt in ('min_compaction_threshold', 'max_compaction_threshold', 'gc_grace_seconds'):
- return [Hint('<integer>')]
- return [Hint('<option_value>')]
-
-completer_for('createColumnFamilyStatement', 'optval') \
- (create_cf_option_val_completer)
-
-syntax_rules += r'''
-<createIndexStatement> ::= "CREATE" "INDEX" indexname=<identifier>? "ON"
- cf=<columnFamilyName> "(" col=<cident> ")"
- ;
-'''
-
-explain_completion('createIndexStatement', 'indexname', '<new_index_name>')
-
-@completer_for('createIndexStatement', 'col')
-def create_index_col_completer(ctxt, cass):
- layout = get_cf_layout(ctxt, cass)
- colnames = [cd.name for cd in layout.columns if cd.index_name is None]
- return map(maybe_escape_name, colnames)
-
-syntax_rules += r'''
-<dropKeyspaceStatement> ::= "DROP" "KEYSPACE" ksname=<keyspaceName>
- ;
-
-<dropColumnFamilyStatement> ::= "DROP" ( "COLUMNFAMILY" | "TABLE" ) cf=<columnFamilyName>
- ;
-
-<dropIndexStatement> ::= "DROP" "INDEX" indexname=<identifier>
- ;
-'''
-
-@completer_for('dropIndexStatement', 'indexname')
-def drop_index_completer(ctxt, cass):
- return map(maybe_escape_name, cass.get_index_names())
-
-syntax_rules += r'''
-<alterTableStatement> ::= "ALTER" ( "COLUMNFAMILY" | "TABLE" ) cf=<columnFamilyName>
- <alterInstructions>
- ;
-<alterInstructions> ::= "ALTER" existcol=<cident> "TYPE" <storageType>
- | "ADD" newcol=<cident> <storageType>
- | "DROP" existcol=<cident>
- | "WITH" [cfopt]=<cfOptionName> "=" [optval]=<cfOptionVal>
- ( "AND" [cfopt]=<cfOptionName> "=" [optval]=<cfOptionVal> )*
- ;
-'''
-
-@completer_for('alterInstructions', 'existcol')
-def alter_table_col_completer(ctxt, cass):
- layout = get_cf_layout(ctxt, cass)
- cols = [md.name for md in layout.columns]
- return map(maybe_escape_name, cols)
-
-explain_completion('alterInstructions', 'newcol', '<new_column_name>')
-
-completer_for('alterInstructions', 'optval') \
- (create_cf_option_val_completer)
-
-# END SYNTAX/COMPLETION RULE DEFINITIONS
-
-CqlRuleSet.append_rules(syntax_rules)
-
-
-
-class CqlColumnDef:
- index_name = None
-
- def __init__(self, name, cqltype):
- self.name = name
- self.cqltype = cqltype
- assert name is not None
-
- @classmethod
- def from_layout(cls, layout):
- c = cls(layout[u'column'], cql_typename(layout[u'validator']))
- c.index_name = layout[u'index_name']
- return c
-
- def __str__(self):
- indexstr = ' (index %s)' % self.index_name if self.index_name is not None else ''
- return '<CqlColumnDef %r %r%s>' % (self.name, self.cqltype, indexstr)
- __repr__ = __str__
-
-class CqlTableDef:
- json_attrs = ('column_aliases', 'compaction_strategy_options', 'compression_parameters')
- composite_type_name = 'org.apache.cassandra.db.marshal.CompositeType'
- colname_type_name = 'org.