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/09/29 05:10:48 UTC

svn commit: r819815 - in /incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra: db/ColumnFamilyStore.java db/CommitLog.java db/CommitLogHeader.java db/Table.java utils/FBUtilities.java

Author: jbellis
Date: Tue Sep 29 03:10:47 2009
New Revision: 819815

URL: http://svn.apache.org/viewvc?rev=819815&view=rev
Log:
add logging to commitlog segment discard process.  patch by jbellis; reviewed by junrao for CASSANDRA-459

Modified:
    incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
    incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/CommitLog.java
    incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/CommitLogHeader.java
    incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/Table.java
    incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/utils/FBUtilities.java

Modified: incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=819815&r1=819814&r2=819815&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Tue Sep 29 03:10:47 2009
@@ -145,6 +145,8 @@
 
     void onStart() throws IOException
     {
+        if (logger_.isDebugEnabled())
+            logger_.debug("Starting CFS " + columnFamily_);
         // scan for data files corresponding to this CF
         List<File> sstableFiles = new ArrayList<File>();
         String[] dataFileDirectories = DatabaseDescriptor.getAllDataFileLocationsForTable(table_);

Modified: incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/CommitLog.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/CommitLog.java?rev=819815&r1=819814&r2=819815&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/CommitLog.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/CommitLog.java Tue Sep 29 03:10:47 2009
@@ -97,6 +97,15 @@
         {
             return (position != -1L);
         }
+
+        @Override
+        public String toString()
+        {
+            return "CommitLogContext(" +
+                   "file='" + file + '\'' +
+                   ", position=" + position +
+                   ')';
+        }
     }
 
     public static class CommitLogFileComparator implements Comparator<String>
@@ -455,18 +464,23 @@
     */
     private void discardCompletedSegments(CommitLog.CommitLogContext cLogCtx, int id) throws IOException
     {
+        if (logger_.isDebugEnabled())
+            logger_.debug("discard completed log segments for " + cLogCtx + ", column family " + id + ". CFIDs are " + Table.TableMetadata.getColumnFamilyIDString());
         /* retrieve the commit log header associated with the file in the context */
         CommitLogHeader commitLogHeader = clHeaders_.get(cLogCtx.file);
-        if(commitLogHeader == null )
+        if (commitLogHeader == null)
         {
-            if( logFile_.equals(cLogCtx.file) )
+            if (logFile_.equals(cLogCtx.file))
             {
                 /* this means we are dealing with the current commit log. */
                 commitLogHeader = clHeader_;
                 clHeaders_.put(cLogCtx.file, clHeader_);
             }
             else
+            {
+                logger_.error("Unknown commitlog file " + cLogCtx.file);
                 return;
+            }
         }
 
         /*
@@ -499,6 +513,8 @@
                  * commit log needs to be read. When a flush occurs we turn off
                  * perform & operation and then turn on with the new position.
                 */
+                if (logger_.isDebugEnabled())
+                    logger_.debug("Marking replay position on current commit log " + oldFile);
                 commitLogHeader.turnOn(id, cLogCtx.position);
                 seekAndWriteCommitLogHeader(commitLogHeader.toByteArray());
                 break;
@@ -516,6 +532,8 @@
                 }
                 else
                 {
+                    if (logger_.isDebugEnabled())
+                        logger_.debug("Not safe to delete commit log " + oldFile + "; dirty is " + oldCommitLogHeader.dirtyString());
                     RandomAccessFile logWriter = CommitLog.createWriter(oldFile);
                     writeCommitLogHeader(logWriter, oldCommitLogHeader.toByteArray());
                     logWriter.close();

Modified: incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/CommitLogHeader.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/CommitLogHeader.java?rev=819815&r1=819814&r2=819815&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/CommitLogHeader.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/CommitLogHeader.java Tue Sep 29 03:10:47 2009
@@ -154,6 +154,19 @@
         return sb.toString();
     }
 
+    public String dirtyString()
+    {
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < dirty.length(); i++)
+        {
+            if (dirty.get(i))
+            {
+                sb.append(i).append(", ");
+            }
+        }
+        return sb.toString();
+    }
+
     static class CommitLogHeaderSerializer implements ICompactSerializer<CommitLogHeader>
     {
         public void serialize(CommitLogHeader clHeader, DataOutputStream dos) throws IOException

Modified: incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/Table.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/Table.java?rev=819815&r1=819814&r2=819815&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/Table.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/Table.java Tue Sep 29 03:10:47 2009
@@ -142,24 +142,18 @@
 
         public String toString()
         {
-            StringBuilder sb = new StringBuilder("");
-            Set<String> cfNames = cfIdMap_.keySet();
-            
-            for ( String cfName : cfNames )
-            {
-                sb.append(cfName);
-                sb.append("---->");
-                sb.append(cfIdMap_.get(cfName));
-                sb.append(System.getProperty("line.separator"));
-            }
-            
-            return sb.toString();
+            return "TableMetadata(" + FBUtilities.mapToString(cfIdMap_) + ")";
         }
 
         public static int getColumnFamilyCount()
         {
             return idCfMap_.size();
         }
+
+        public static String getColumnFamilyIDString()
+        {
+            return FBUtilities.mapToString(tableMetadataMap_);
+        }
     }
 
     /**

Modified: incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/utils/FBUtilities.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/utils/FBUtilities.java?rev=819815&r1=819814&r2=819815&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/utils/FBUtilities.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/utils/FBUtilities.java Tue Sep 29 03:10:47 2009
@@ -25,11 +25,7 @@
 import java.security.MessageDigest;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.StringTokenizer;
+import java.util.*;
 import java.util.zip.DataFormatException;
 import java.util.zip.Deflater;
 import java.util.zip.Inflater;
@@ -412,4 +408,16 @@
         }
         return new String(chars);
     }
+
+    public static String mapToString(Map<?,?> map)
+    {
+        StringBuilder sb = new StringBuilder("");
+
+        for (Map.Entry entry : map.entrySet())
+        {
+            sb.append(entry.getKey()).append(": ").append(entry.getValue()).append(", ");
+        }
+
+        return sb.append("}").toString();
+    }
 }