Author: gdusbabek
Date: Tue Apr 6 16:02:52 2010
New Revision: 931204
URL: http://svn.apache.org/viewvc?rev=931204&view=rev
Log:
use cfid for all mutations. Patch by Gary Dusbabek, reviewed by Jonthan Ellis.
CASSANDRA-827
Modified:
cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java
cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
cassandra/trunk/src/java/org/apache/cassandra/db/migration/AddColumnFamily.java
cassandra/trunk/src/java/org/apache/cassandra/db/migration/DropColumnFamily.java
cassandra/trunk/src/java/org/apache/cassandra/db/migration/DropKeyspace.java
cassandra/trunk/src/java/org/apache/cassandra/db/migration/RenameColumnFamily.java
cassandra/trunk/test/unit/org/apache/cassandra/Util.java
cassandra/trunk/test/unit/org/apache/cassandra/db/MultitableTest.java
cassandra/trunk/test/unit/org/apache/cassandra/db/NameSortTest.java
cassandra/trunk/test/unit/org/apache/cassandra/db/RecoveryManagerTest.java
Modified: cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java?rev=931204&r1=931203&r2=931204&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java Tue
Apr 6 16:02:52 2010
@@ -60,6 +60,14 @@ public final class CFMetaData
return currentCfNames.get(id);
}
+ public static final int getId(String table, String cfName)
+ {
+ Integer id = cfIdMap.get(new Pair<String, String>(table, cfName));
+ if (id == null)
+ throw new IllegalArgumentException(String.format("Illegal table/cf
pair (%s.%s)", table, cfName));
+ return id;
+ }
+
// this gets called after initialization to make sure that id generation
happens properly.
public static final void fixMaxId()
{
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java?rev=931204&r1=931203&r2=931204&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java Tue Apr
6 16:02:52 2010
@@ -29,6 +29,7 @@ import java.security.NoSuchAlgorithmExce
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
+import org.apache.cassandra.config.CFMetaData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -72,22 +73,25 @@ public class ColumnFamily implements ICo
String columnType = DatabaseDescriptor.getColumnFamilyType(tableName,
cfName);
AbstractType comparator = DatabaseDescriptor.getComparator(tableName,
cfName);
AbstractType subcolumnComparator =
DatabaseDescriptor.getSubComparator(tableName, cfName);
- return new ColumnFamily(cfName, columnType, comparator,
subcolumnComparator);
+ int id = CFMetaData.getId(tableName, cfName);
+ return new ColumnFamily(cfName, columnType, comparator,
subcolumnComparator, id);
}
private String name_;
+ private final int id_;
private transient ICompactSerializer2<IColumn> columnSerializer_;
AtomicLong markedForDeleteAt = new AtomicLong(Long.MIN_VALUE);
AtomicInteger localDeletionTime = new AtomicInteger(Integer.MIN_VALUE);
private ConcurrentSkipListMap<byte[], IColumn> columns_;
- public ColumnFamily(String cfName, String columnType, AbstractType
comparator, AbstractType subcolumnComparator)
+ public ColumnFamily(String cfName, String columnType, AbstractType
comparator, AbstractType subcolumnComparator, int id)
{
name_ = cfName;
type_ = columnType;
columnSerializer_ = columnType.equals("Standard") ?
Column.serializer() : SuperColumn.serializer(subcolumnComparator);
columns_ = new ConcurrentSkipListMap<byte[], IColumn>(comparator);
+ id_ = id;
}
/** called during CL recovery when it is determined that a CF name was
changed. */
@@ -98,7 +102,7 @@ public class ColumnFamily implements ICo
public ColumnFamily cloneMeShallow()
{
- ColumnFamily cf = new ColumnFamily(name_, type_, getComparator(),
getSubComparator());
+ ColumnFamily cf = new ColumnFamily(name_, type_, getComparator(),
getSubComparator(), id_);
cf.markedForDeleteAt = markedForDeleteAt;
cf.localDeletionTime = localDeletionTime;
return cf;
@@ -120,6 +124,11 @@ public class ColumnFamily implements ICo
{
return name_;
}
+
+ public int id()
+ {
+ return id_;
+ }
/*
* We need to go through each column
@@ -264,7 +273,7 @@ public class ColumnFamily implements ICo
*/
public ColumnFamily diff(ColumnFamily cfComposite)
{
- ColumnFamily cfDiff = new ColumnFamily(cfComposite.name(),
cfComposite.type_, getComparator(), getSubComparator());
+ ColumnFamily cfDiff = new ColumnFamily(cfComposite.name(),
cfComposite.type_, getComparator(), getSubComparator(), cfComposite.id());
if (cfComposite.getMarkedForDeleteAt() > getMarkedForDeleteAt())
{
cfDiff.delete(cfComposite.getLocalDeletionTime(),
cfComposite.getMarkedForDeleteAt());
@@ -314,9 +323,15 @@ public class ColumnFamily implements ICo
return size;
}
+ private transient int hash_ = 0;
public int hashCode()
{
- return name().hashCode();
+ if (hash_ == 0)
+ {
+ int h = id_ * 7 + name().hashCode();
+ hash_ = h;
+ }
+ return hash_;
}
public boolean equals(Object o)
Modified:
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java?rev=931204&r1=931203&r2=931204&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java
Tue Apr 6 16:02:52 2010
@@ -62,6 +62,7 @@ public class ColumnFamilySerializer impl
}
dos.writeUTF(columnFamily.name());
+ dos.writeInt(columnFamily.id());
dos.writeUTF(columnFamily.type_);
dos.writeUTF(columnFamily.getComparatorName());
dos.writeUTF(columnFamily.getSubComparatorName());
@@ -104,7 +105,8 @@ public class ColumnFamilySerializer impl
String cfName = dis.readUTF();
if (cfName.isEmpty())
return null;
- ColumnFamily cf = deserializeFromSSTableNoColumns(cfName,
dis.readUTF(), readComparator(dis), readComparator(dis), dis);
+ int id = dis.readInt();
+ ColumnFamily cf = deserializeFromSSTableNoColumns(cfName,
dis.readUTF(), readComparator(dis), readComparator(dis), id, dis);
deserializeColumns(dis, cf);
return cf;
}
@@ -141,9 +143,9 @@ public class ColumnFamilySerializer impl
}
}
- public ColumnFamily deserializeFromSSTableNoColumns(String name, String
type, AbstractType comparator, AbstractType subComparator, DataInput input)
throws IOException
+ private ColumnFamily deserializeFromSSTableNoColumns(String name, String
type, AbstractType comparator, AbstractType subComparator, int id, DataInput
input) throws IOException
{
- ColumnFamily cf = new ColumnFamily(name, type, comparator,
subComparator);
+ ColumnFamily cf = new ColumnFamily(name, type, comparator,
subComparator, id);
return deserializeFromSSTableNoColumns(cf, input);
}
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=931204&r1=931203&r2=931204&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/Table.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/Table.java Tue Apr 6
16:02:52 2010
@@ -23,13 +23,12 @@ import java.util.*;
import java.io.IOException;
import java.io.File;
import java.util.concurrent.ExecutionException;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.concurrent.Future;
import com.google.common.base.Function;
import com.google.common.collect.Iterables;
+import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.commitlog.CommitLog;
import org.apache.cassandra.db.commitlog.CommitLogSegment;
@@ -41,7 +40,6 @@ import org.apache.cassandra.io.util.File
import java.net.InetAddress;
import org.apache.cassandra.service.StorageService;
-import org.apache.cassandra.utils.*;
import org.apache.cassandra.db.filter.*;
import org.cliffc.high_scale_lib.NonBlockingHashMap;
@@ -82,7 +80,9 @@ public class Table
/* Table name. */
public final String name;
/* ColumnFamilyStore per column family */
- private final Map<String, ColumnFamilyStore> columnFamilyStores = new
HashMap<String, ColumnFamilyStore>();
+ private final Map<Integer, ColumnFamilyStore> columnFamilyStores = new
HashMap<Integer, ColumnFamilyStore>();
+ /* map to make it easier to look up cfs by name */
+ private final Map<String, Integer> cfNameMap = new HashMap<String,
Integer>();
// cache application CFs since Range queries ask for them a _lot_
private SortedSet<String> applicationColumnFamilies;
private final TimerTask flushTask;
@@ -120,7 +120,7 @@ public class Table
public Set<String> getColumnFamilies()
{
- return
DatabaseDescriptor.getTableDefinition(name).cfMetaData().keySet();
+ return cfNameMap.keySet();
}
public Collection<ColumnFamilyStore> getColumnFamilyStores()
@@ -130,7 +130,7 @@ public class Table
public ColumnFamilyStore getColumnFamilyStore(String cfName)
{
- return columnFamilyStores.get(cfName);
+ return columnFamilyStores.get(cfNameMap.get(cfName));
}
/**
@@ -141,13 +141,8 @@ public class Table
if (name.equals(SYSTEM_TABLE))
throw new RuntimeException("Cleanup of the system table is neither
necessary nor wise");
- Set<String> columnFamilies = getColumnFamilies();
- for ( String columnFamily : columnFamilies )
- {
- ColumnFamilyStore cfStore = columnFamilyStores.get( columnFamily );
- if ( cfStore != null )
- cfStore.forceCleanup();
- }
+ for (ColumnFamilyStore cfStore : columnFamilyStores.values())
+ cfStore.forceCleanup();
}
@@ -198,10 +193,8 @@ public class Table
public List<SSTableReader> forceAntiCompaction(Collection<Range> ranges,
InetAddress target)
{
List<SSTableReader> allResults = new ArrayList<SSTableReader>();
- Set<String> columnFamilies = getColumnFamilies();
- for ( String columnFamily : columnFamilies )
+ for (ColumnFamilyStore cfStore : columnFamilyStores.values())
{
- ColumnFamilyStore cfStore = columnFamilyStores.get( columnFamily );
try
{
allResults.addAll(CompactionManager.instance.submitAnticompaction(cfStore,
ranges, target).get());
@@ -220,25 +213,15 @@ public class Table
*/
public void forceCompaction()
{
- Set<String> columnFamilies = getColumnFamilies();
- for ( String columnFamily : columnFamilies )
- {
- ColumnFamilyStore cfStore = columnFamilyStores.get( columnFamily );
- if ( cfStore != null )
- CompactionManager.instance.submitMajor(cfStore);
- }
+ for (ColumnFamilyStore cfStore : columnFamilyStores.values())
+ CompactionManager.instance.submitMajor(cfStore);
}
List<SSTableReader> getAllSSTablesOnDisk()
{
List<SSTableReader> list = new ArrayList<SSTableReader>();
- Set<String> columnFamilies = getColumnFamilies();
- for ( String columnFamily : columnFamilies )
- {
- ColumnFamilyStore cfStore = columnFamilyStores.get( columnFamily );
- if ( cfStore != null )
- list.addAll(cfStore.getSSTables());
- }
+ for (ColumnFamilyStore cfStore : columnFamilyStores.values())
+ list.addAll(cfStore.getSSTables());
return list;
}
@@ -265,9 +248,10 @@ public class Table
}
}
- for (String columnFamily : getColumnFamilies())
+ for (CFMetaData cfm :
DatabaseDescriptor.getTableDefinition(table).cfMetaData().values())
{
- columnFamilyStores.put(columnFamily,
ColumnFamilyStore.createColumnFamilyStore(table, columnFamily));
+ columnFamilyStores.put(cfm.cfId,
ColumnFamilyStore.createColumnFamilyStore(table, cfm.cfName));
+ cfNameMap.put(cfm.cfName, cfm.cfId);
}
// check 10x as often as the lifetime, so we can exceed lifetime by
10% at most
@@ -286,12 +270,13 @@ public class Table
}
/** removes a cf from internal structures (doesn't change disk files). */
- public void dropCf(String cfName) throws IOException
+ public void dropCf(int cfId) throws IOException
{
- assert columnFamilyStores.containsKey(cfName);
- ColumnFamilyStore cfs = columnFamilyStores.remove(cfName);
+ assert columnFamilyStores.containsKey(cfId);
+ ColumnFamilyStore cfs = columnFamilyStores.remove(cfId);
if (cfs != null)
{
+ cfNameMap.remove(cfs.getColumnFamilyName());
try
{
cfs.forceBlockingFlush();
@@ -308,33 +293,23 @@ public class Table
}
/** adds a cf to internal structures, ends up creating disk files). */
- public void addCf(String cfName)
+ public void initCf(int cfId, String cfName)
{
- assert !columnFamilyStores.containsKey(cfName) : cfName;
- columnFamilyStores.put(cfName,
ColumnFamilyStore.createColumnFamilyStore(name, cfName));
+ assert !columnFamilyStores.containsKey(cfId) : cfId;
+ columnFamilyStores.put(cfId,
ColumnFamilyStore.createColumnFamilyStore(name, cfName));
+ cfNameMap.put(cfName, cfId);
}
/** basically a combined drop and add */
- public void renameCf(String oldName, String newName) throws IOException
- {
- dropCf(oldName);
- addCf(newName);
- }
-
- /**
- * Selects the specified column family for the specified key.
- */
- @Deprecated // single CFs could be larger than memory
- public ColumnFamily get(String key, String cfName) throws IOException
+ public void renameCf(int cfId, String newName) throws IOException
{
- ColumnFamilyStore cfStore = columnFamilyStores.get(cfName);
- assert cfStore != null : "Column family " + cfName + " has not been
defined";
- return cfStore.getColumnFamily(QueryFilter.getIdentityFilter(key, new
QueryPath(cfName)));
+ dropCf(cfId);
+ initCf(cfId, newName);
}
public Row getRow(QueryFilter filter) throws IOException
{
- ColumnFamilyStore cfStore =
columnFamilyStores.get(filter.getColumnFamilyName());
+ ColumnFamilyStore cfStore =
columnFamilyStores.get(cfNameMap.get(filter.getColumnFamilyName()));
ColumnFamily columnFamily = cfStore.getColumnFamily(filter);
return new Row(filter.key, columnFamily);
}
@@ -371,7 +346,7 @@ public class Table
for (ColumnFamily columnFamily : mutation.getColumnFamilies())
{
Memtable memtableToFlush;
- ColumnFamilyStore cfs =
columnFamilyStores.get(columnFamily.name());
+ ColumnFamilyStore cfs =
columnFamilyStores.get(columnFamily.id());
if (cfs == null)
{
logger.error("Attempting to mutate non-existant column
family " + columnFamily.name());
@@ -400,9 +375,9 @@ public class Table
public List<Future<?>> flush() throws IOException
{
List<Future<?>> futures = new ArrayList<Future<?>>();
- for (String cfName : columnFamilyStores.keySet())
+ for (Integer cfId : columnFamilyStores.keySet())
{
- Future<?> future = columnFamilyStores.get(cfName).forceFlush();
+ Future<?> future = columnFamilyStores.get(cfId).forceFlush();
if (future != null)
futures.add(future);
}
@@ -419,7 +394,7 @@ public class Table
Collection<IColumn> columns = columnFamily.getSortedColumns();
for (IColumn column : columns)
{
- ColumnFamilyStore cfStore = columnFamilyStores.get(new
String(column.name(), "UTF-8"));
+ ColumnFamilyStore cfStore =
columnFamilyStores.get(cfNameMap.get(new String(column.name(), "UTF-8")));
cfStore.applyBinary(key, column.value());
}
}
Modified:
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java?rev=931204&r1=931203&r2=931204&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
Tue Apr 6 16:02:52 2010
@@ -241,20 +241,18 @@ public class CommitLog
RowMutation newRm = new RowMutation(rm.getTable(),
rm.key());
// Rebuild the row mutation, omitting column families
that a) have already been flushed,
- // b) are part of a cf that was dropped. Keep in mind
that a cf might have been renamed. (this
- // is why the old RM is not used in the actual
transaction.
+ // b) are part of a cf that was dropped. Keep in mind
that the cf.name() is suspect. do every
+ // thing based on the cfid instead.
for (ColumnFamily columnFamily : columnFamilies)
{
- Pair<String, String> key = new Pair<String,
String>(table.name, columnFamily.name());
- int id = cfIdMap.get(key);
// make sure to use the current name of the cf
(null means its been dropped).
- String currentName = CFMetaData.getCurrentName(id);
+ String currentName =
CFMetaData.getCurrentName(columnFamily.id());
if (currentName == null)
continue;
else if (!currentName.equals(columnFamily.name()))
columnFamily.rename(currentName);
- if (clHeader.isDirty(id) && entryLocation >=
clHeader.getPosition(id))
+ if (clHeader.isDirty(columnFamily.id()) &&
entryLocation >= clHeader.getPosition(columnFamily.id()))
newRm.add(columnFamily);
}
if (!newRm.isEmpty())
Modified:
cassandra/trunk/src/java/org/apache/cassandra/db/migration/AddColumnFamily.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/migration/AddColumnFamily.java?rev=931204&r1=931203&r2=931204&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/db/migration/AddColumnFamily.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/db/migration/AddColumnFamily.java
Tue Apr 6 16:02:52 2010
@@ -77,7 +77,7 @@ public class AddColumnFamily extends Mig
// reinitialize the table.
KSMetaData ksm = DatabaseDescriptor.getTableDefinition(cfm.tableName);
ksm = makeNewKeyspaceDefinition(ksm);
- Table.open(ksm.name).addCf(cfm.cfName);
+ Table.open(ksm.name).initCf(cfm.cfId, cfm.cfName);
DatabaseDescriptor.setTableDefinition(ksm, newVersion);
// force creation of a new commit log segment.
Modified:
cassandra/trunk/src/java/org/apache/cassandra/db/migration/DropColumnFamily.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/migration/DropColumnFamily.java?rev=931204&r1=931203&r2=931204&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/db/migration/DropColumnFamily.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/db/migration/DropColumnFamily.java
Tue Apr 6 16:02:52 2010
@@ -97,7 +97,7 @@ public class DropColumnFamily extends Mi
KSMetaData ksm = makeNewKeyspaceDefinition(existing);
CFMetaData.purge(cfm);
DatabaseDescriptor.setTableDefinition(ksm, newVersion);
- Table.open(ksm.name).dropCf(cfm.cfName);
+ Table.open(ksm.name).dropCf(cfm.cfId);
// indicate that some files need to be deleted (eventually)
SystemTable.markForRemoval(cfm);
Modified:
cassandra/trunk/src/java/org/apache/cassandra/db/migration/DropKeyspace.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/migration/DropKeyspace.java?rev=931204&r1=931203&r2=931204&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/db/migration/DropKeyspace.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/db/migration/DropKeyspace.java
Tue Apr 6 16:02:52 2010
@@ -80,7 +80,7 @@ public class DropKeyspace extends Migrat
for (CFMetaData cfm : ksm.cfMetaData().values())
{
CFMetaData.purge(cfm);
- table.dropCf(cfm.cfName);
+ table.dropCf(cfm.cfId);
SystemTable.markForRemoval(cfm);
}
Modified:
cassandra/trunk/src/java/org/apache/cassandra/db/migration/RenameColumnFamily.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/migration/RenameColumnFamily.java?rev=931204&r1=931203&r2=931204&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/db/migration/RenameColumnFamily.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/db/migration/RenameColumnFamily.java
Tue Apr 6 16:02:52 2010
@@ -47,6 +47,7 @@ public class RenameColumnFamily extends
private String tableName;
private String oldName;
private String newName;
+ private int cfId;
RenameColumnFamily(DataInputStream din) throws IOException
{
@@ -55,8 +56,11 @@ public class RenameColumnFamily extends
tableName = din.readUTF();
oldName = din.readUTF();
newName = din.readUTF();
+ cfId = din.readInt();
}
+ // this this constructor sets the cfid, it can only be called form a node
that is starting the migration. It cannot
+ // be called during deserialization of this migration.
public RenameColumnFamily(String tableName, String oldName, String
newName) throws ConfigurationException, IOException
{
super(UUIDGen.makeType1UUIDFromHost(FBUtilities.getLocalAddress()),
DatabaseDescriptor.getDefsVersion());
@@ -72,6 +76,8 @@ public class RenameColumnFamily extends
if (ksm.cfMetaData().containsKey(newName))
throw new ConfigurationException("CF is already defined in that
keyspace.");
+ cfId = ksm.cfMetaData().get(oldName).cfId;
+
// clone the ksm, replacing cfm with the new one.
KSMetaData newKsm = makeNewKeyspaceDefinition(ksm);
rm = Migration.makeDefinitionMutation(newKsm, null, newVersion);
@@ -104,7 +110,7 @@ public class RenameColumnFamily extends
// reset defs.
KSMetaData ksm =
makeNewKeyspaceDefinition(DatabaseDescriptor.getTableDefinition(tableName));
DatabaseDescriptor.setTableDefinition(ksm, newVersion);
- Table.open(ksm.name).renameCf(oldName, newName);
+ Table.open(ksm.name).renameCf(cfId, newName);
CommitLog.instance().forceNewSegment();
}
@@ -142,6 +148,7 @@ public class RenameColumnFamily extends
dos.writeUTF(renameColumnFamily.tableName);
dos.writeUTF(renameColumnFamily.oldName);
dos.writeUTF(renameColumnFamily.newName);
+ dos.writeInt(renameColumnFamily.cfId);
}
public RenameColumnFamily deserialize(DataInputStream dis) throws
IOException
Modified: cassandra/trunk/test/unit/org/apache/cassandra/Util.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/Util.java?rev=931204&r1=931203&r2=931204&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/Util.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/Util.java Tue Apr 6
16:02:52 2010
@@ -27,6 +27,7 @@ import java.nio.ByteBuffer;
import java.util.List;
import java.util.concurrent.ExecutionException;
+import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.commons.lang.ArrayUtils;
import org.apache.cassandra.db.*;
@@ -95,4 +96,11 @@ public class Util
store.forceBlockingFlush();
return store;
}
+
+ public static ColumnFamily getColumnFamily(Table table, String key, String
cfName) throws IOException
+ {
+ ColumnFamilyStore cfStore = table.getColumnFamilyStore(cfName);
+ assert cfStore != null : "Column family " + cfName + " has not been
defined";
+ return cfStore.getColumnFamily(QueryFilter.getIdentityFilter(key, new
QueryPath(cfName)));
+ }
}
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/MultitableTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/MultitableTest.java?rev=931204&r1=931203&r2=931204&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/MultitableTest.java
(original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/MultitableTest.java Tue
Apr 6 16:02:52 2010
@@ -24,6 +24,7 @@ package org.apache.cassandra.db;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
+import org.apache.cassandra.Util;
import org.junit.Test;
import static org.apache.cassandra.db.TableTest.assertColumns;
@@ -56,7 +57,7 @@ public class MultitableTest extends Clea
table1.getColumnFamilyStore("Standard1").forceBlockingFlush();
table2.getColumnFamilyStore("Standard1").forceBlockingFlush();
- assertColumns(table1.get("keymulti", "Standard1"), "col1");
- assertColumns(table2.get("keymulti", "Standard1"), "col2");
+ assertColumns(Util.getColumnFamily(table1, "keymulti", "Standard1"),
"col1");
+ assertColumns(Util.getColumnFamily(table2, "keymulti", "Standard1"),
"col2");
}
}
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/NameSortTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/NameSortTest.java?rev=931204&r1=931203&r2=931204&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/NameSortTest.java
(original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/NameSortTest.java Tue Apr
6 16:02:52 2010
@@ -24,6 +24,7 @@ import java.util.Collection;
import java.util.Arrays;
import java.nio.ByteBuffer;
+import org.apache.cassandra.Util;
import org.junit.Test;
import org.apache.cassandra.CleanupHelper;
@@ -101,7 +102,7 @@ public class NameSortTest extends Cleanu
String key = Integer.toString(i);
ColumnFamily cf;
- cf = table.get(key, "Standard1");
+ cf = Util.getColumnFamily(table, key, "Standard1");
Collection<IColumn> columns = cf.getSortedColumns();
for (IColumn column : columns)
{
@@ -110,7 +111,7 @@ public class NameSortTest extends Cleanu
assert Arrays.equals(bytes, column.value());
}
- cf = table.get(key, "Super1");
+ cf = Util.getColumnFamily(table, key, "Super1");
assert cf != null : "key " + key + " is missing!";
Collection<IColumn> superColumns = cf.getSortedColumns();
assert superColumns.size() == 8 : cf;
Modified:
cassandra/trunk/test/unit/org/apache/cassandra/db/RecoveryManagerTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/RecoveryManagerTest.java?rev=931204&r1=931203&r2=931204&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/RecoveryManagerTest.java
(original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/RecoveryManagerTest.java
Tue Apr 6 16:02:52 2010
@@ -21,6 +21,7 @@ package org.apache.cassandra.db;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
+import org.apache.cassandra.Util;
import org.junit.Test;
import org.apache.cassandra.CleanupHelper;
@@ -63,7 +64,7 @@ public class RecoveryManagerTest extends
CommitLog.recover();
- assertColumns(table1.get("keymulti", "Standard1"), "col1");
- assertColumns(table2.get("keymulti", "Standard3"), "col2");
+ assertColumns(Util.getColumnFamily(table1, "keymulti", "Standard1"),
"col1");
+ assertColumns(Util.getColumnFamily(table2, "keymulti", "Standard3"),
"col2");
}
}