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;
         }


Reply via email to