Author: [email protected]
Date: Fri Dec 16 16:41:36 2011
New Revision: 1857
Log:
[AMDATUCASSANDRA-128] Fixed removing keyspace from the cache when it is
dropped. Enhanced unit test to test the error.
Modified:
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraDaemonServiceImpl.java
trunk/amdatu-cassandra/cassandra-application/src/test/java/org/amdatu/cassandra/test/unit/application/CRUDOperationsTest.java
Modified:
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraDaemonServiceImpl.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraDaemonServiceImpl.java
(original)
+++
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraDaemonServiceImpl.java
Fri Dec 16 16:41:36 2011
@@ -395,6 +395,9 @@
if (keyspaceExists(keyspace)) {
getCassandraClient().system_drop_keyspace(keyspace);
+ // Purge the keyspace from the keyspace -> CF type map
+ m_keyspaceColumnFamilyTypes.remove(keyspace);
+
// Publish an event that a keyspace has been dropped
Map<String, String> properties = new HashMap<String, String>();
properties.put(EVENT_ADMIN_KEYSPACE_DROPPED, keyspace);
Modified:
trunk/amdatu-cassandra/cassandra-application/src/test/java/org/amdatu/cassandra/test/unit/application/CRUDOperationsTest.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-application/src/test/java/org/amdatu/cassandra/test/unit/application/CRUDOperationsTest.java
(original)
+++
trunk/amdatu-cassandra/cassandra-application/src/test/java/org/amdatu/cassandra/test/unit/application/CRUDOperationsTest.java
Fri Dec 16 16:41:36 2011
@@ -17,6 +17,7 @@
import java.util.List;
+import org.amdatu.cassandra.application.ThriftException;
import org.apache.cassandra.thrift.CfDef;
import org.junit.Assert;
import org.junit.Test;
@@ -54,6 +55,7 @@
Assert.assertEquals(m_daemonService.getColumnFamilies(TEST_KEYSPACE).size(), 1);
Assert.assertEquals(m_daemonService.getColumnFamilies(TEST_KEYSPACE).get(0),
SIMPLE_CF);
Assert.assertTrue(m_daemonService.columnFamilyExists(TEST_KEYSPACE,
SIMPLE_CF));
+ Assert.assertEquals("Standard",
m_daemonService.getColumnType(TEST_KEYSPACE, SIMPLE_CF));
// Test adding a simple CF that already exists
Assert.assertFalse(m_daemonService.addColumnFamily(TEST_KEYSPACE,
SIMPLE_CF, "Standard", "BytesType", null));
@@ -72,5 +74,14 @@
Assert.assertTrue(m_daemonService.dropKeyspace(TEST_KEYSPACE));
keyspaces = m_daemonService.getKeyspaces();
Assert.assertTrue(keyspaces.size() == 1 &&
keyspaces.contains("system"));
+
+ // When the keyspace has been dropped, this should result in a
NotFoundException, wrapped
+ // as a ThriftException
+ try {
+ m_daemonService.getColumnType(TEST_KEYSPACE, SIMPLE_CF);
+ Assert.fail("Keyspace '" + TEST_KEYSPACE + "' has been removed,
but it was not removed from the ColumnType cache.");
+ } catch (ThriftException e) {
+ // This is expected
+ }
}
}
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits