Author: gdusbabek
Date: Tue Sep 28 13:52:24 2010
New Revision: 1002163

URL: http://svn.apache.org/viewvc?rev=1002163&view=rev
Log:
ensure that a table unloads CFS instances when they are cleared. patch by 
gdusbabek, reviewed by jbellis. CASSANDRA-1548

Modified:
    cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
    cassandra/trunk/test/system/test_avro_system.py
    cassandra/trunk/test/system/test_thrift_server.py

Modified: cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java?rev=1002163&r1=1002162&r2=1002163&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/Table.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/Table.java Tue Sep 28 
13:52:24 2010
@@ -113,7 +113,11 @@ public class Table
         {
             Table t = instances.remove(table);
             if (t != null)
+            {
                 t.flushTask.cancel();
+                for (ColumnFamilyStore cfs : t.getColumnFamilyStores())
+                    t.unloadCf(cfs);
+            }
             return t;
         }
     }

Modified: cassandra/trunk/test/system/test_avro_system.py
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/test/system/test_avro_system.py?rev=1002163&r1=1002162&r2=1002163&view=diff
==============================================================================
--- cassandra/trunk/test/system/test_avro_system.py (original)
+++ cassandra/trunk/test/system/test_avro_system.py Tue Sep 28 13:52:24 2010
@@ -175,4 +175,29 @@ class TestSystemOperations(AvroTester):
             assert len(cosc_list) == 0 , 'cosc length test failed'
             
             self.client.request('system_drop_keyspace', {'keyspace': keyspace})
+    
+    def test_create_rename_recreate(self):
+        # create
+        cf = {'keyspace': 'CreateRenameRecreate', 'name': 'CF_1'}
+        keyspace1 = {'name': 'CreateRenameRecreate',
+                'strategy_class': 
'org.apache.cassandra.locator.SimpleStrategy',
+                'strategy_options': {},
+                'replication_factor': 1,
+                'cf_defs': [cf]}
+        self.client.request('set_keyspace', {'keyspace': 'system'})
+        self.client.request('system_add_keyspace', {'ks_def': keyspace1})
+        assert self.client.request('describe_keyspace', {'keyspace': 
keyspace1['name']})
+        
+        # rename
+        self.client.request('system_rename_keyspace', {'old_name': 
keyspace1['name'], 'new_name': keyspace1['name'] + '_renamed'})
+        assert self.client.request('describe_keyspace', {'keyspace': 
keyspace1['name'] + '_renamed'}) 
+        avro_utils.assert_raises(AvroRemoteException,
+                self.client.request,
+                'describe_keyspace',
+                {'keyspace': keyspace1['name']})
+        
+        # recreate
+        self.client.request('system_add_keyspace', {'ks_def': keyspace1})
+        assert self.client.request('describe_keyspace', {'keyspace': 
keyspace1['name']})
+
 

Modified: cassandra/trunk/test/system/test_thrift_server.py
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/test/system/test_thrift_server.py?rev=1002163&r1=1002162&r2=1002163&view=diff
==============================================================================
--- cassandra/trunk/test/system/test_thrift_server.py (original)
+++ cassandra/trunk/test/system/test_thrift_server.py Tue Sep 28 13:52:24 2010
@@ -1241,6 +1241,27 @@ class TestMutations(ThriftTester):
         test_existence()
         client.system_drop_keyspace(keyspace.name)
 
+    def test_create_rename_recreate(self):
+        # create
+        keyspace1 = KsDef('CreateRenameRecreate',
+                strategy_class='org.apache.cassandra.locator.SimpleStrategy',
+                replication_factor=1,
+                cf_defs=[CfDef('CreateRenameRecreate','CF_1', 
column_metadata=[])])
+        client.set_keyspace('system')
+        client.system_add_keyspace(keyspace1)
+        def test_ks1_existence():
+            client.describe_keyspace(keyspace1.name)
+        test_ks1_existence()
+        
+        # rename
+        client.system_rename_keyspace(keyspace1.name, keyspace1.name + 
'_renamed')
+        _expect_exception(test_ks1_existence, NotFoundException)
+        keyspace2 = client.describe_keyspace(keyspace1.name + '_renamed')
+        
+        # recreate
+        client.system_add_keyspace(keyspace1)
+        test_ks1_existence()
+        
     def test_column_validators(self):
         # columndef validation for regular CF
         ks = 'Keyspace1'


Reply via email to