You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2009/04/17 03:48:39 UTC

svn commit: r765829 - in /incubator/cassandra/trunk/src/org/apache/cassandra/db: ColumnFamilyStore.java Table.java

Author: jbellis
Date: Fri Apr 17 01:48:39 2009
New Revision: 765829

URL: http://svn.apache.org/viewvc?rev=765829&view=rev
Log:
refactor CFS constructor to not depend on DatabaseDescriptor.
patch by jbellis; reviewed by Sandeep Tata for #85

Modified:
    incubator/cassandra/trunk/src/org/apache/cassandra/db/ColumnFamilyStore.java
    incubator/cassandra/trunk/src/org/apache/cassandra/db/Table.java

Modified: incubator/cassandra/trunk/src/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/org/apache/cassandra/db/ColumnFamilyStore.java?rev=765829&r1=765828&r2=765829&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/org/apache/cassandra/db/ColumnFamilyStore.java (original)
+++ incubator/cassandra/trunk/src/org/apache/cassandra/db/ColumnFamilyStore.java Fri Apr 17 01:48:39 2009
@@ -23,6 +23,10 @@
 import java.lang.management.ManagementFactory;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.MBeanRegistrationException;
+import javax.management.NotCompliantMBeanException;
+import javax.management.MalformedObjectNameException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
@@ -87,10 +91,17 @@
     /* Flag indicates if a compaction is in process */
     private AtomicBoolean isCompacting_ = new AtomicBoolean(false);
 
-    ColumnFamilyStore(String table, String columnFamily) throws IOException
+    ColumnFamilyStore(String table, String columnFamily, int indexValue) throws IOException
     {
         table_ = table;
         columnFamily_ = columnFamily;
+        fileIndexGenerator_.set(indexValue);
+        memtable_ = new AtomicReference<Memtable>(new Memtable(table_, columnFamily_));
+        binaryMemtable_ = new AtomicReference<BinaryMemtable>(new BinaryMemtable(table_, columnFamily_));
+    }
+
+    public static ColumnFamilyStore getColumnFamilyStore(String table, String columnFamily) throws IOException
+    {
         /*
          * Get all data files associated with old Memtables for this table.
          * These files are named as follows <Table>-1.db, ..., <Table>-n.db. Get
@@ -107,8 +118,8 @@
             {
                 String filename = file.getName();
                 String[] tblCfName = getTableAndColumnFamilyName(filename);
-                
-                if (tblCfName[0].equals(table_)
+
+                if (tblCfName[0].equals(table)
                         && tblCfName[1].equals(columnFamily))
                 {
                     int index = getIndexFromFileName(filename);
@@ -118,20 +129,21 @@
         }
         Collections.sort(indices);
         int value = (indices.size() > 0) ? (indices.get(indices.size() - 1)) : 0;
-        fileIndexGenerator_.set(value);
-        memtable_ = new AtomicReference<Memtable>( new Memtable(table_, columnFamily_) );
-        binaryMemtable_ = new AtomicReference<BinaryMemtable>( new BinaryMemtable(table_, columnFamily_) );
-        
+
+        ColumnFamilyStore cfs = new ColumnFamilyStore(table, columnFamily, value);
+
+        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
         try
         {
-            MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
-            mbs.registerMBean(this, new ObjectName(
-                    "org.apache.cassandra.db:type=ColumnFamilyStore-" + columnFamily_));
+            mbs.registerMBean(cfs, new ObjectName(
+                    "org.apache.cassandra.db:type=ColumnFamilyStore-" + table + "." + columnFamily));
         }
         catch (Exception e)
         {
-            logger_.error(LogUtil.throwableToString(e));
+            throw new RuntimeException(e);
         }
+
+        return cfs;
     }
 
     void onStart() throws IOException
@@ -303,7 +315,7 @@
         return columnFamily_;
     }
 
-    private String[] getTableAndColumnFamilyName(String filename)
+    private static String[] getTableAndColumnFamilyName(String filename)
     {
         StringTokenizer st = new StringTokenizer(filename, "-");
         String[] values = new String[2];

Modified: incubator/cassandra/trunk/src/org/apache/cassandra/db/Table.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/org/apache/cassandra/db/Table.java?rev=765829&r1=765828&r2=765829&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/org/apache/cassandra/db/Table.java (original)
+++ incubator/cassandra/trunk/src/org/apache/cassandra/db/Table.java Fri Apr 17 01:48:39 2009
@@ -588,7 +588,7 @@
             Set<String> columnFamilies = tableMetadata_.getColumnFamilies();
             for ( String columnFamily : columnFamilies )
             {
-                columnFamilyStores_.put( columnFamily, new ColumnFamilyStore(table, columnFamily) );
+                columnFamilyStores_.put(columnFamily, ColumnFamilyStore.getColumnFamilyStore(table, columnFamily));
             }
         }
         catch ( IOException ex )