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