Author: jbellis
Date: Tue Oct 18 17:19:11 2011
New Revision: 1185761
URL: http://svn.apache.org/viewvc?rev=1185761&view=rev
Log:
r/m obsolete CF/KS rename code
patch by jbellis; reviewed by pyaskevich for CASSANDRA-3292
Removed:
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/migration/RenameColumnFamily.java
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/migration/RenameKeyspace.java
Modified:
cassandra/branches/cassandra-0.8/src/avro/internode.genavro
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/Table.java
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/DefsTest.java
Modified: cassandra/branches/cassandra-0.8/src/avro/internode.genavro
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/avro/internode.genavro?rev=1185761&r1=1185760&r2=1185761&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/src/avro/internode.genavro (original)
+++ cassandra/branches/cassandra-0.8/src/avro/internode.genavro Tue Oct 18
17:19:11 2011
@@ -103,20 +103,6 @@ protocol InterNode {
}
@namespace("org.apache.cassandra.db.migration.avro")
- record RenameColumnFamily {
- string ksname;
- int cfid;
- string old_cfname;
- string new_cfname;
- }
-
- @namespace("org.apache.cassandra.db.migration.avro")
- record RenameKeyspace {
- string old_ksname;
- string new_ksname;
- }
-
- @namespace("org.apache.cassandra.db.migration.avro")
record UpdateKeyspace {
KsDef oldKs;
KsDef newKs;
@@ -133,6 +119,6 @@ protocol InterNode {
org.apache.cassandra.utils.avro.UUID new_version;
bytes row_mutation;
string classname;
- union {
AddColumnFamily,DropColumnFamily,RenameColumnFamily,AddKeyspace,DropKeyspace,RenameKeyspace,UpdateKeyspace,UpdateColumnFamily
} migration;
+ union {
AddColumnFamily,DropColumnFamily,AddKeyspace,DropKeyspace,UpdateKeyspace,UpdateColumnFamily
} migration;
}
}
Modified:
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/Table.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/Table.java?rev=1185761&r1=1185760&r2=1185761&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/Table.java
(original)
+++
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/Table.java
Tue Oct 18 17:19:11 2011
@@ -369,16 +369,6 @@ public class Table
columnFamilyStores.put(cfId,
ColumnFamilyStore.createColumnFamilyStore(this, cfName));
}
- /** basically a combined drop and add */
- public void renameCf(Integer cfId, String newName) throws IOException
- {
- assert columnFamilyStores.containsKey(cfId);
- ColumnFamilyStore cfs = columnFamilyStores.remove(cfId);
- unloadCf(cfs);
- cfs.renameSSTables(newName);
- initCf(cfId, newName);
- }
-
public Row getRow(QueryFilter filter) throws IOException
{
ColumnFamilyStore cfStore =
getColumnFamilyStore(filter.getColumnFamilyName());
Modified:
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/DefsTest.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/DefsTest.java?rev=1185761&r1=1185760&r2=1185761&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/DefsTest.java
(original)
+++
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/DefsTest.java
Tue Oct 18 17:19:11 2011
@@ -43,8 +43,6 @@ import org.apache.cassandra.db.migration
import org.apache.cassandra.db.migration.DropColumnFamily;
import org.apache.cassandra.db.migration.DropKeyspace;
import org.apache.cassandra.db.migration.Migration;
-import org.apache.cassandra.db.migration.RenameColumnFamily;
-import org.apache.cassandra.db.migration.RenameKeyspace;
import org.apache.cassandra.db.migration.UpdateColumnFamily;
import org.apache.cassandra.db.migration.UpdateKeyspace;
import org.apache.cassandra.io.SerDeUtils;
@@ -213,24 +211,18 @@ public class DefsTest extends CleanupHel
UUID ver1 = m1.getVersion();
assert DatabaseDescriptor.getDefsVersion().equals(ver1);
- // rename it.
- Migration m2 = new RenameColumnFamily("Keyspace1", "MigrationCf_1",
"MigrationCf_2");
- m2.apply();
- UUID ver2 = m2.getVersion();
- assert DatabaseDescriptor.getDefsVersion().equals(ver2);
-
// drop it.
- Migration m3 = new DropColumnFamily("Keyspace1", "MigrationCf_2");
+ Migration m3 = new DropColumnFamily("Keyspace1", "MigrationCf_1");
m3.apply();
UUID ver3 = m3.getVersion();
assert DatabaseDescriptor.getDefsVersion().equals(ver3);
// now lets load the older migrations to see if that code works.
Collection<IColumn> serializedMigrations =
Migration.getLocalMigrations(ver1, ver3);
- assert serializedMigrations.size() == 3;
+ assert serializedMigrations.size() == 2;
// test deserialization of the migrations.
- Migration[] reconstituded = new Migration[3];
+ Migration[] reconstituded = new Migration[2];
int i = 0;
for (IColumn col : serializedMigrations)
{
@@ -241,13 +233,11 @@ public class DefsTest extends CleanupHel
}
assert m1.getClass().equals(reconstituded[0].getClass());
- assert m2.getClass().equals(reconstituded[1].getClass());
- assert m3.getClass().equals(reconstituded[2].getClass());
+ assert m3.getClass().equals(reconstituded[1].getClass());
// verify that the row mutations are the same. rather than exposing
the private fields, serialize and verify.
assert m1.serialize().equals(reconstituded[0].serialize());
- assert m2.serialize().equals(reconstituded[1].serialize());
- assert m3.serialize().equals(reconstituded[2].serialize());
+ assert m3.serialize().equals(reconstituded[1].serialize());
}
@Test
@@ -342,53 +332,7 @@ public class DefsTest extends CleanupHel
throw new AssertionError("undeleted file " + file);
}
}
-
- @Test
- public void renameCf() throws ConfigurationException, IOException,
ExecutionException, InterruptedException
- {
- DecoratedKey dk = Util.dk("key0");
- final KSMetaData ks =
DatabaseDescriptor.getTableDefinition("Keyspace2");
- assert ks != null;
- final CFMetaData oldCfm = ks.cfMetaData().get("Standard1");
- assert oldCfm != null;
-
- // write some data, force a flush, then verify that files exist on
disk.
- RowMutation rm = new RowMutation(ks.name, dk.key);
- for (int i = 0; i < 100; i++)
- rm.add(new QueryPath(oldCfm.cfName, null,
ByteBufferUtil.bytes(("col" + i))), ByteBufferUtil.bytes("anyvalue"), 1L);
- rm.apply();
- ColumnFamilyStore store =
Table.open(oldCfm.ksName).getColumnFamilyStore(oldCfm.cfName);
- assert store != null;
- store.forceBlockingFlush();
- int fileCount = DefsTable.getFiles(oldCfm.ksName,
oldCfm.cfName).size();
- assert fileCount > 0;
-
- final String cfName = "St4ndard1Replacement";
- new RenameColumnFamily(oldCfm.ksName, oldCfm.cfName, cfName).apply();
-
- assert
!DatabaseDescriptor.getTableDefinition(ks.name).cfMetaData().containsKey(oldCfm.cfName);
- assert
DatabaseDescriptor.getTableDefinition(ks.name).cfMetaData().containsKey(cfName);
-
- // verify that new files are there.
- assert DefsTable.getFiles(oldCfm.ksName, cfName).size() == fileCount;
-
- // do some reads.
- store = Table.open(oldCfm.ksName).getColumnFamilyStore(cfName);
- assert store != null;
- ColumnFamily cfam =
store.getColumnFamily(QueryFilter.getSliceFilter(dk, new QueryPath(cfName),
ByteBufferUtil.EMPTY_BYTE_BUFFER, ByteBufferUtil.EMPTY_BYTE_BUFFER, false,
1000));
- assert cfam.getSortedColumns().size() == 100; // should be good enough?
-
- // do some writes
- rm = new RowMutation(ks.name, dk.key);
- rm.add(new QueryPath(cfName, null, ByteBufferUtil.bytes("col5")),
ByteBufferUtil.bytes("updated"), 2L);
- rm.apply();
- store.forceBlockingFlush();
-
- cfam = store.getColumnFamily(QueryFilter.getNamesFilter(dk, new
QueryPath(cfName), ByteBufferUtil.bytes("col5")));
- assert cfam.getColumnCount() == 1;
- assert cfam.getColumn(ByteBufferUtil.bytes("col5")).value().equals(
ByteBufferUtil.bytes("updated"));
- }
-
+
@Test
public void addNewKS() throws ConfigurationException, IOException,
ExecutionException, InterruptedException
{
@@ -489,87 +433,6 @@ public class DefsTest extends CleanupHel
}
@Test
- public void renameKs() throws ConfigurationException, IOException,
ExecutionException, InterruptedException
- {
- DecoratedKey dk = Util.dk("renameKs");
- final KSMetaData oldKs =
DatabaseDescriptor.getTableDefinition("Keyspace2");
- assert oldKs != null;
- final String cfName = "Standard3";
- assert oldKs.cfMetaData().containsKey(cfName);
- assert oldKs.cfMetaData().get(cfName).ksName.equals(oldKs.name);
-
- // write some data that we hope to read back later.
- RowMutation rm = new RowMutation(oldKs.name, dk.key);
- for (int i = 0; i < 10; i++)
- rm.add(new QueryPath(cfName, null, ByteBufferUtil.bytes(("col" +
i))), ByteBufferUtil.bytes("value"), 1L);
- rm.apply();
- ColumnFamilyStore store =
Table.open(oldKs.name).getColumnFamilyStore(cfName);
- assert store != null;
- store.forceBlockingFlush();
- assert DefsTable.getFiles(oldKs.name, cfName).size() > 0;
-
- final String newKsName = "RenamedKeyspace2";
- new RenameKeyspace(oldKs.name, newKsName).apply();
- KSMetaData newKs = DatabaseDescriptor.getTableDefinition(newKsName);
-
- assert DatabaseDescriptor.getTableDefinition(oldKs.name) == null;
- assert newKs != null;
- assert newKs.name.equals(newKsName);
- assert newKs.cfMetaData().containsKey(cfName);
- assert newKs.cfMetaData().get(cfName).ksName.equals(newKsName);
- assert DefsTable.getFiles(newKs.name, cfName).size() > 0;
-
- // read on old should fail.
- // reads should fail too.
- boolean threw = false;
- try
- {
- Table.open(oldKs.name);
- }
- catch (Throwable th)
- {
- threw = true;
- }
- assert threw;
-
- // write on old should fail.
- rm = new RowMutation(oldKs.name, ByteBufferUtil.bytes("any key will
do"));
- boolean success = true;
- try
- {
- rm.add(new QueryPath(cfName, null, ByteBufferUtil.bytes("col0")),
ByteBufferUtil.bytes("value0"), 1L);
- rm.apply();
- }
- catch (Throwable th)
- {
- success = false;
- }
- assert !success : "This mutation should have failed since the CF/Table
no longer exists.";
-
- // write on new should work.
- rm = new RowMutation(newKsName, dk.key);
- rm.add(new QueryPath(cfName, null, ByteBufferUtil.bytes("col0")),
ByteBufferUtil.bytes("newvalue"), 2L);
- rm.apply();
- store = Table.open(newKs.name).getColumnFamilyStore(cfName);
- assert store != null;
- store.forceBlockingFlush();
-
- // read on new should work.
- SortedSet<ByteBuffer> cols = new
TreeSet<ByteBuffer>(BytesType.instance);
- cols.add(ByteBufferUtil.bytes("col0"));
- cols.add(ByteBufferUtil.bytes("col1"));
- ColumnFamily cfam =
store.getColumnFamily(QueryFilter.getNamesFilter(dk, new QueryPath(cfName),
cols));
- assert cfam.getColumnCount() == cols.size();
- // tests new write.
-
- ByteBuffer val = cfam.getColumn(ByteBufferUtil.bytes("col0")).value();
- assertEquals(ByteBufferUtil.string(val), "newvalue");
- // tests old write.
- val = cfam.getColumn(ByteBufferUtil.bytes("col1")).value();
- assertEquals(ByteBufferUtil.string(val), "value");
- }
-
- @Test
public void createEmptyKsAddNewCf() throws ConfigurationException,
IOException, ExecutionException, InterruptedException
{
assert DatabaseDescriptor.getTableDefinition("EmptyKeyspace") == null;