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

Reply via email to