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'