Author: jbellis
Date: Wed Feb 3 02:20:45 2010
New Revision: 905868
URL: http://svn.apache.org/viewvc?rev=905868&view=rev
Log:
clean up Table iteration; add Table.all, CFS.all
patch by jbellis; reviewed by stuhood for CASSANDRA-753
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraDaemon.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamOut.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraDaemon.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java
incubator/cassandra/trunk/test/unit/org/apache/cassandra/io/SSTableUtils.java
incubator/cassandra/trunk/test/unit/org/apache/cassandra/service/AntiEntropyServiceTest.java
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraDaemon.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraDaemon.java?rev=905868&r1=905867&r2=905868&view=diff
==============================================================================
---
incubator/cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraDaemon.java
(original)
+++
incubator/cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraDaemon.java
Wed Feb 3 02:20:45 2010
@@ -22,6 +22,7 @@
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
+
import org.apache.avro.ipc.SocketServer;
import org.apache.avro.specific.SpecificResponder;
import org.apache.cassandra.config.DatabaseDescriptor;
@@ -72,7 +73,7 @@
});
// initialize keyspaces
- for (String table : Table.getAllTableNames())
+ for (String table : DatabaseDescriptor.getTables())
{
if (logger.isDebugEnabled())
logger.debug("opening keyspace " + table);
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java?rev=905868&r1=905867&r2=905868&view=diff
==============================================================================
---
incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
(original)
+++
incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
Wed Feb 3 02:20:45 2010
@@ -84,7 +84,7 @@
private static double flushDataBufferSizeInMB_ = 32;
private static double flushIndexBufferSizeInMB_ = 8;
private static int slicedReadBufferSizeInKB_ = 64;
- private static List<String> tables_ = new ArrayList<String>();
+ private static Set<String> tables_ = new HashSet<String>();
private static Set<String> applicationColumnFamilies_ = new
HashSet<String>();
private static int bmtThreshold_ = 256;
@@ -824,7 +824,7 @@
return cfMetaData.columnType;
}
- public static List<String> getTables()
+ public static Set<String> getTables()
{
return tables_;
}
@@ -836,13 +836,6 @@
return Collections.unmodifiableList(tables);
}
- public static String getTable(String tableName)
- {
- assert tableName != null;
- int index = getTables().indexOf(tableName);
- return index >= 0 ? getTables().get(index) : null;
- }
-
public static int getStoragePort()
{
return storagePort_;
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=905868&r1=905867&r2=905868&view=diff
==============================================================================
---
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
(original)
+++
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
Wed Feb 3 02:20:45 2010
@@ -31,6 +31,7 @@
import java.util.concurrent.atomic.AtomicReference;
import com.google.common.collect.AbstractIterator;
+import com.google.common.collect.Iterables;
import org.apache.cassandra.cache.IAggregatableCacheProvider;
import org.apache.cassandra.cache.InstrumentedCache;
import org.apache.cassandra.cache.JMXAggregatingCache;
@@ -1161,6 +1162,17 @@
CompactionManager.instance.submitMajor(this);
}
+ public static Iterable<ColumnFamilyStore> all()
+ {
+ Iterable<ColumnFamilyStore>[] stores =
(Iterable<ColumnFamilyStore>[])new Object[0];
+ int i = 0;
+ for (Table table : Table.all())
+ {
+ stores[i++] = table.getColumnFamilyStores();
+ }
+ return Iterables.concat(stores);
+ }
+
/**
* for testing. no effort is made to clear historical memtables.
*/
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java?rev=905868&r1=905867&r2=905868&view=diff
==============================================================================
---
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java
(original)
+++
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java
Wed Feb 3 02:20:45 2010
@@ -562,31 +562,25 @@
public void checkAllColumnFamilies() throws IOException
{
// perform estimates
- for (String tableName : DatabaseDescriptor.getTables())
+ for (final ColumnFamilyStore cfs : ColumnFamilyStore.all())
{
- for (final ColumnFamilyStore cfs :
Table.open(tableName).getColumnFamilyStores())
+ Runnable runnable = new Runnable()
{
- Runnable runnable = new Runnable()
+ public void run ()
{
- public void run ()
- {
- logger.debug("Estimating compactions for " +
cfs.columnFamily_);
- final Set<List<SSTableReader>> buckets =
getCompactionBuckets(cfs.getSSTables(), 50L * 1024L * 1024L);
- updateEstimateFor(cfs, buckets);
- }
- };
- executor.submit(runnable);
- }
+ logger.debug("Estimating compactions for " +
cfs.columnFamily_);
+ final Set<List<SSTableReader>> buckets =
getCompactionBuckets(cfs.getSSTables(), 50L * 1024L * 1024L);
+ updateEstimateFor(cfs, buckets);
+ }
+ };
+ executor.submit(runnable);
}
-
+
// actually schedule compactions. done in a second pass so all the
estimates occur before we
// bog down the executor in actual compactions.
- for (String tableName : DatabaseDescriptor.getTables())
+ for (ColumnFamilyStore cfs : ColumnFamilyStore.all())
{
- for (final ColumnFamilyStore cfs :
Table.open(tableName).getColumnFamilyStores())
- {
- submitMinorIfNeeded(cfs);
- }
+ submitMinorIfNeeded(cfs);
}
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java?rev=905868&r1=905867&r2=905868&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
(original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java Wed
Feb 3 02:20:45 2010
@@ -26,6 +26,9 @@
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.concurrent.Future;
+import com.google.common.base.Function;
+import com.google.common.collect.AbstractIterator;
+import com.google.common.collect.Iterables;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.dht.Range;
import org.apache.cassandra.io.SSTableReader;
@@ -465,8 +468,22 @@
return dataDirPath + File.separator + tableName + File.separator +
SNAPSHOT_SUBDIR_NAME + File.separator + snapshotName;
}
- public static Set<String> getAllTableNames()
+ public static Iterable<Table> all()
{
- return DatabaseDescriptor.getTableToColumnFamilyMap().keySet();
+ Function<String, Table> transformer = new Function<String, Table>()
+ {
+ public Table apply(String tableName)
+ {
+ try
+ {
+ return Table.open(tableName);
+ }
+ catch (IOException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ return Iterables.transform(DatabaseDescriptor.getTables(),
transformer);
}
}
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java?rev=905868&r1=905867&r2=905868&view=diff
==============================================================================
---
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
(original)
+++
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
Wed Feb 3 02:20:45 2010
@@ -777,7 +777,7 @@
public double getLoad()
{
double bytes = 0;
- for (String tableName : Table.getAllTableNames())
+ for (String tableName : DatabaseDescriptor.getTables())
{
Table table;
try
@@ -872,24 +872,18 @@
public void forceTableCleanup() throws IOException
{
- List<String> tables = DatabaseDescriptor.getTables();
- for (String tName : tables)
+ for (Table table : Table.all())
{
- if (tName.equals(Table.SYSTEM_TABLE))
+ if (table.name.equals(Table.SYSTEM_TABLE))
continue;
- Table table = Table.open(tName);
table.forceCleanup();
}
}
public void forceTableCompaction() throws IOException
{
- List<String> tables = DatabaseDescriptor.getTables();
- for ( String tName : tables )
- {
- Table table = Table.open(tName);
+ for (Table table : Table.all())
table.forceCompaction();
- }
}
/**
@@ -906,7 +900,7 @@
private Table getValidTable(String tableName) throws IOException
{
- if (DatabaseDescriptor.getTable(tableName) == null)
+ if (!DatabaseDescriptor.getTables().contains(tableName))
{
throw new IOException("Table " + tableName + "does not exist");
}
@@ -920,11 +914,8 @@
*/
public void takeAllSnapshot(String tag) throws IOException
{
- for (String tableName: DatabaseDescriptor.getTables())
- {
- Table tableInstance = Table.open(tableName);
- tableInstance.snapshot(tag);
- }
+ for (Table table : Table.all())
+ table.snapshot(tag);
}
/**
@@ -932,11 +923,8 @@
*/
public void clearSnapshot() throws IOException
{
- for (String tableName: DatabaseDescriptor.getTables())
- {
- Table tableInstance = Table.open(tableName);
- tableInstance.clearSnapshot();
- }
+ for (Table table : Table.all())
+ table.clearSnapshot();
if (logger_.isDebugEnabled())
logger_.debug("Cleared out all snapshot directories");
}
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamOut.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamOut.java?rev=905868&r1=905867&r2=905868&view=diff
==============================================================================
---
incubator/cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamOut.java
(original)
+++
incubator/cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamOut.java
Wed Feb 3 02:20:45 2010
@@ -34,7 +34,6 @@
import org.apache.cassandra.dht.Range;
import org.apache.cassandra.streaming.StreamInitiateMessage;
-import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.Table;
import org.apache.cassandra.io.SSTable;
import org.apache.cassandra.io.SSTableReader;
@@ -76,12 +75,10 @@
* (2) anticompaction -- split out the keys in the range specified
* (3) transfer the data.
*/
- List<String> tables = DatabaseDescriptor.getTables();
- for (String tName : tables)
+ for (Table table : Table.all())
{
try
{
- Table table = Table.open(tName);
if (logger.isDebugEnabled())
logger.debug("Flushing memtables ...");
for (Future f : table.flush())
@@ -102,7 +99,7 @@
if (logger.isDebugEnabled())
logger.debug("Performing anticompaction ...");
/* Get the list of files that need to be streamed */
- transferSSTables(target, table.forceAntiCompaction(ranges,
target), tName); // SSTR GC deletes the file when done
+ transferSSTables(target, table.forceAntiCompaction(ranges,
target), table.name); // SSTR GC deletes the file when done
}
catch (IOException e)
{
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraDaemon.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraDaemon.java?rev=905868&r1=905867&r2=905868&view=diff
==============================================================================
---
incubator/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraDaemon.java
(original)
+++
incubator/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraDaemon.java
Wed Feb 3 02:20:45 2010
@@ -36,7 +36,6 @@
import org.apache.thrift.TProcessorFactory;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.service.StorageService;
-import org.apache.cassandra.thrift.Cassandra.Processor;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.db.Table;
import org.apache.cassandra.db.RecoveryManager;
@@ -85,7 +84,7 @@
});
// initialize keyspaces
- for (String table : Table.getAllTableNames())
+ for (String table : DatabaseDescriptor.getTables())
{
if (logger.isDebugEnabled())
logger.debug("opening keyspace " + table);
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java?rev=905868&r1=905867&r2=905868&view=diff
==============================================================================
---
incubator/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java
(original)
+++
incubator/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java
Wed Feb 3 02:20:45 2010
@@ -504,7 +504,7 @@
{
if (propertyName.equals("keyspaces"))
{
- return DatabaseDescriptor.getTables();
+ return new ArrayList<String>(DatabaseDescriptor.getTables());
}
return Collections.emptyList();
}
Modified:
incubator/cassandra/trunk/test/unit/org/apache/cassandra/io/SSTableUtils.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/unit/org/apache/cassandra/io/SSTableUtils.java?rev=905868&r1=905867&r2=905868&view=diff
==============================================================================
---
incubator/cassandra/trunk/test/unit/org/apache/cassandra/io/SSTableUtils.java
(original)
+++
incubator/cassandra/trunk/test/unit/org/apache/cassandra/io/SSTableUtils.java
Wed Feb 3 02:20:45 2010
@@ -46,7 +46,7 @@
{
try
{
- TABLENAME = DatabaseDescriptor.getTables().get(0);
+ TABLENAME = DatabaseDescriptor.getTables().iterator().next();
CFNAME =
Table.open(TABLENAME).getColumnFamilies().iterator().next();
}
catch(IOException e)
Modified:
incubator/cassandra/trunk/test/unit/org/apache/cassandra/service/AntiEntropyServiceTest.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/unit/org/apache/cassandra/service/AntiEntropyServiceTest.java?rev=905868&r1=905867&r2=905868&view=diff
==============================================================================
---
incubator/cassandra/trunk/test/unit/org/apache/cassandra/service/AntiEntropyServiceTest.java
(original)
+++
incubator/cassandra/trunk/test/unit/org/apache/cassandra/service/AntiEntropyServiceTest.java
Wed Feb 3 02:20:45 2010
@@ -71,7 +71,7 @@
tmd.updateNormalToken(part.getMinimumToken(), REMOTE);
assert tmd.isMember(REMOTE);
- tablename = DatabaseDescriptor.getTables().get(0);
+ tablename = DatabaseDescriptor.getTables().iterator().next();
cfname =
Table.open(tablename).getColumnFamilies().iterator().next();
initialized = true;
}