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();
+ }
}