You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2011/02/20 23:18:03 UTC

svn commit: r1072774 - in /cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra: db/ db/columniterator/ db/filter/ io/sstable/ io/util/

Author: brandonwilliams
Date: Sun Feb 20 22:18:01 2011
New Revision: 1072774

URL: http://svn.apache.org/viewvc?rev=1072774&view=rev
Log:
Better error reporting for sstable problems.
Patch by Kjetil Valstadsve, reviewed by brandonwilliams for
CASSANDRA-2202.

Modified:
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/Table.java
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/QueryFilter.java
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/QueryPath.java
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/Descriptor.java
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTable.java
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableScanner.java
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/BufferedRandomAccessFile.java
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/MappedFileDataInput.java
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/SegmentedFile.java

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/Table.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/Table.java?rev=1072774&r1=1072773&r2=1072774&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/Table.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/Table.java Sun Feb 20 22:18:01 2011
@@ -699,4 +699,9 @@ public class Table
         cfs.truncate().get();
         logger.debug("Truncation done.");
     }
+
+    @Override
+    public String toString() {
+        return getClass().getSimpleName() + "(name='" + name + "')";
+    }
 }

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java?rev=1072774&r1=1072773&r2=1072774&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java Sun Feb 20 22:18:01 2011
@@ -25,6 +25,7 @@ import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.*;
 
+import org.apache.cassandra.db.ColumnFamilySerializer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -108,7 +109,13 @@ public class SSTableNamesIterator extend
 
         // we can stop early if bloom filter says none of the columns actually exist -- but,
         // we can't stop before initializing the cf above, in case there's a relevant tombstone
-        cf = ColumnFamily.serializer().deserializeFromSSTableNoColumns(ColumnFamily.create(sstable.metadata), file);
+        ColumnFamilySerializer serializer = ColumnFamily.serializer();
+        try {
+            cf = serializer.deserializeFromSSTableNoColumns(ColumnFamily.create(sstable.metadata), file);
+        } catch (Exception e) {
+            throw new IOException
+                (serializer + " failed to deserialize " + sstable.getColumnFamilyName() + " with " + sstable.metadata + " from " + file, e);
+        }
 
         List<ByteBuffer> filteredColumnNames = new ArrayList<ByteBuffer>(columns.size());
         for (ByteBuffer name : columns)

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/QueryFilter.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/QueryFilter.java?rev=1072774&r1=1072773&r2=1072774&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/QueryFilter.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/QueryFilter.java Sun Feb 20 22:18:01 2011
@@ -210,4 +210,13 @@ public class QueryFilter
     {
         return new QueryFilter(key, path, new NamesQueryFilter(column));
     }
+
+    @Override
+    public String toString() {
+        return getClass().getSimpleName() + "(key=" + key +
+               ", path=" + path +
+               (filter == null ? "" : ", filter=" + filter) +
+               (superFilter == null ? "" : ", superFilter=" + superFilter) +
+               ")";
+    }
 }

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/QueryPath.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/QueryPath.java?rev=1072774&r1=1072773&r2=1072774&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/QueryPath.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/QueryPath.java Sun Feb 20 22:18:01 2011
@@ -71,7 +71,7 @@ public class QueryPath
     @Override
     public String toString()
     {
-        return "QueryPath(" +
+        return getClass().getSimpleName() + "(" +
                "columnFamilyName='" + columnFamilyName + '\'' +
                ", superColumnName='" + superColumnName + '\'' +
                ", columnName='" + columnName + '\'' +

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java?rev=1072774&r1=1072773&r2=1072774&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java Sun Feb 20 22:18:01 2011
@@ -143,4 +143,13 @@ public class SliceQueryFilter implements
                 container.addColumn(column);
         }
     }
+
+    @Override
+    public String toString() {
+        return getClass().getSimpleName() + "(" +
+               "start=" + start +
+               ", finish=" + finish +
+               ", reversed=" + reversed +
+               ", count=" + count + "]";
+    }
 }

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/Descriptor.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/Descriptor.java?rev=1072774&r1=1072773&r2=1072774&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/Descriptor.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/Descriptor.java Sun Feb 20 22:18:01 2011
@@ -186,9 +186,20 @@ public class Descriptor
     }
 
     @Override
-    public String toString()
-    {
-        return baseFilename();
+    public String toString() {
+        return "Descriptor(baseFilename=" + baseFilename() +
+               ", directory=" + directory +
+               ", ksname='" + ksname + '\'' +
+               ", cfname='" + cfname + '\'' +
+               ", version='" + version + '\'' +
+               ", generation=" + generation +
+               ", temporary=" + temporary +
+               ", usesOldBloomFilter=" + usesOldBloomFilter +
+               ", isLatestVersion=" + isLatestVersion +
+               ", hasStringsInBloomFilter=" + hasStringsInBloomFilter +
+               ", hasIntRowSize=" + hasIntRowSize +
+               ", hasEncodedKeys=" + hasEncodedKeys +
+               ")";
     }
 
     @Override

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTable.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTable.java?rev=1072774&r1=1072773&r2=1072774&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTable.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTable.java Sun Feb 20 22:18:01 2011
@@ -257,10 +257,15 @@ public abstract class SSTable
     }
 
     @Override
-    public String toString()
-    {
-        return getClass().getName() + "(" +
-               "path='" + getFilename() + '\'' +
-               ')';
+    public String toString() {
+        return getClass().getSimpleName() + "(descriptor=" + descriptor +
+               ", path='" + getFilename() + '\'' +
+               ", metadata=" + metadata +
+               toSubString() +
+               ")";
+    }
+
+    protected String toSubString() {
+        return "";
     }
 }

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableReader.java?rev=1072774&r1=1072773&r2=1072774&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableReader.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableReader.java Sun Feb 20 22:18:01 2011
@@ -97,7 +97,7 @@ public class SSTableReader extends SSTab
      * maxDataAge is a timestamp in local server time (e.g. System.currentTimeMilli) which represents an uppper bound
      * to the newest piece of data stored in the sstable. In other words, this sstable does not contain items created
      * later than maxDataAge.
-     * 
+     *
      * The field is not serialized to disk, so relying on it for more than what truncate does is not advised.
      *
      * When a new sstable is flushed, maxDataAge is set to the time of creation.
@@ -678,4 +678,11 @@ public class SSTableReader extends SSTab
     {
         return bloomFilterTracker.getRecentTruePositiveCount();
     }
+
+    @Override
+    protected String toSubString() {
+        return ", ifile=" + ifile +
+               ", dfile=" + dfile +
+               ", maxDataAge=" + maxDataAge;
+    }
 }

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableScanner.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableScanner.java?rev=1072774&r1=1072773&r2=1072774&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableScanner.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableScanner.java Sun Feb 20 22:18:01 2011
@@ -186,7 +186,7 @@ public class SSTableScanner implements I
             }
             catch (IOException e)
             {
-                throw new RuntimeException(e);
+                throw new RuntimeException(SSTableScanner.this + " failed to provide next columns from " + this, e);
             }
         }
 
@@ -194,5 +194,21 @@ public class SSTableScanner implements I
         {
             throw new UnsupportedOperationException();
         }
+
+        @Override
+        public String toString() {
+            return getClass().getSimpleName() + "(" +
+                   "finishedAt:" + finishedAt +
+                   ")";
+    }
+}
+
+    @Override
+    public String toString() {
+        return getClass().getSimpleName() + "(" +
+               "file=" + file +
+               " sstable=" + sstable +
+               " exhausted=" + exhausted +
+               ")";
     }
 }

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java?rev=1072774&r1=1072773&r2=1072774&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java Sun Feb 20 22:18:01 2011
@@ -230,6 +230,11 @@ public class SSTableWriter extends SSTab
         return new Builder(desc);
     }
 
+    @Override
+    protected String toSubString() {
+        return ", dataFile=" + dataFile;
+    }
+
     /**
      * Removes the given SSTable from temporary status and opens it, rebuilding the
      * bloom filter and row index from the data file.

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/BufferedRandomAccessFile.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/BufferedRandomAccessFile.java?rev=1072774&r1=1072773&r2=1072774&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/BufferedRandomAccessFile.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/BufferedRandomAccessFile.java Sun Feb 20 22:18:01 2011
@@ -479,4 +479,12 @@ public class BufferedRandomAccessFile ex
             this.pointer = pointer;
         }
     }
+
+    @Override
+    public String toString() {
+        return getClass().getSimpleName() + "(" +
+               "filePath='" + filePath + "'" +
+               ", length=" + fileLength +
+               ", skipCache=" + skipCache + ")";
+    }
 }

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/MappedFileDataInput.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/MappedFileDataInput.java?rev=1072774&r1=1072773&r2=1072774&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/MappedFileDataInput.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/MappedFileDataInput.java Sun Feb 20 22:18:01 2011
@@ -157,4 +157,12 @@ public class MappedFileDataInput extends
             this.position = position;
         }
     }
+
+    @Override
+    public String toString() {
+        return getClass().getSimpleName() + "(" +
+               "filename='" + filename + "'" +
+               ", position=" + position +
+               ")";
+    }
 }

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/SegmentedFile.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/SegmentedFile.java?rev=1072774&r1=1072773&r2=1072774&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/SegmentedFile.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/SegmentedFile.java Sun Feb 20 22:18:01 2011
@@ -141,4 +141,11 @@ public abstract class SegmentedFile
 
         public void remove() { throw new UnsupportedOperationException(); }
     }
+
+    @Override
+    public String toString() {
+        return getClass().getSimpleName() + "(path='" + path + "'" +
+               ", length=" + length +
+               ")";
+}
 }