You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2011/10/28 09:35:40 UTC

svn commit: r1190184 - in /cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db: ColumnFamilySerializer.java ColumnSerializer.java DataTracker.java

Author: slebresne
Date: Fri Oct 28 07:35:39 2011
New Revision: 1190184

URL: http://svn.apache.org/viewvc?rev=1190184&view=rev
Log:
Improve error messages

Modified:
    cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java
    cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnSerializer.java
    cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/DataTracker.java

Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java?rev=1190184&r1=1190183&r2=1190184&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java (original)
+++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilySerializer.java Fri Oct 28 07:35:39 2011
@@ -85,10 +85,13 @@ public class ColumnFamilySerializer impl
             Collection<IColumn> columns = columnFamily.getSortedColumns();
             int count = columns.size();
             dos.writeInt(count);
+            int i = 0;
             for (IColumn column : columns)
             {
                 columnFamily.getColumnSerializer().serialize(column, dos);
+                i++;
             }
+            assert count == i: "CF size changed during serialization: was " + count + " initially but " + i + " written";
             return count;
         }
         catch (IOException e)

Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnSerializer.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnSerializer.java?rev=1190184&r1=1190183&r2=1190184&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnSerializer.java (original)
+++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnSerializer.java Fri Oct 28 07:35:39 2011
@@ -31,6 +31,7 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.cassandra.db.context.CounterContext;
 import org.apache.cassandra.io.IColumnSerializer;
+import org.apache.cassandra.io.util.FileDataInput;
 import org.apache.cassandra.utils.ByteBufferUtil;
 
 public class ColumnSerializer implements IColumnSerializer
@@ -86,7 +87,16 @@ public class ColumnSerializer implements
     {
         ByteBuffer name = ByteBufferUtil.readWithShortLength(dis);
         if (name.remaining() <= 0)
-            throw new CorruptColumnException("invalid column name length " + name.remaining());
+        {
+            String format = "invalid column name length %d%s";
+            String details = "";
+            if (dis instanceof FileDataInput)
+            {
+                FileDataInput fdis = (FileDataInput)dis;
+                details = String.format(" (%s, %d bytes remaining)", fdis.getPath(), fdis.bytesRemaining());
+            }
+            throw new CorruptColumnException(String.format(format, name.remaining(), details));
+        }
 
         int b = dis.readUnsignedByte();
         if ((b & COUNTER_MASK) != 0)

Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/DataTracker.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/DataTracker.java?rev=1190184&r1=1190183&r2=1190184&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/DataTracker.java (original)
+++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/DataTracker.java Fri Oct 28 07:35:39 2011
@@ -570,6 +570,7 @@ public class DataTracker
         {
             ImmutableSet<SSTableReader> oldSet = ImmutableSet.copyOf(oldSSTables);
             int newSSTablesSize = sstables.size() - oldSSTables.size() + Iterables.size(replacements);
+            assert newSSTablesSize >= Iterables.size(replacements) : String.format("Incoherent new size %d replacing %s by %s in %s", newSSTablesSize, oldSSTables, replacements, this);
             List<SSTableReader> newSSTables = new ArrayList<SSTableReader>(newSSTablesSize);
             for (SSTableReader sstable : sstables)
             {
@@ -577,8 +578,14 @@ public class DataTracker
                     newSSTables.add(sstable);
             }
             Iterables.addAll(newSSTables, replacements);
-            assert newSSTables.size() == newSSTablesSize;
+            assert newSSTables.size() == newSSTablesSize : String.format("Expecting new size of %d, got %d while replacing %s by %s in %s", newSSTablesSize, newSSTables.size(), oldSSTables, replacements, this);
             return newSSTables;
         }
+
+        @Override
+        public String toString()
+        {
+            return String.format("View(pending_count=%d, sstables=%s, compacting=%s)", memtablesPendingFlush.size(), sstables, compacting);
+        }
     }
 }