HI:All
In source code of 0.6.1 ,in SSTableWriter,
private void afterAppend(DecoratedKey decoratedKey, long dataPosition, int
dataSize) throws IOException
{
String diskKey = partitioner.convertToDiskFormat(decoratedKey);
bf.add(diskKey);
lastWrittenKey = decoratedKey;
long indexPosition = indexFile.getFilePointer();
indexFile.writeUTF(diskKey);
indexFile.writeLong(dataPosition);
if (logger.isTraceEnabled())
logger.trace("wrote " + decoratedKey + " at " + dataPosition);
if (logger.isTraceEnabled())
logger.trace("wrote index of " + decoratedKey + " at " +
indexPosition);
indexSummary.maybeAddEntry(decoratedKey, dataPosition, dataSize,
indexPosition, indexFile.getFilePointer());
}
the value of "dataSize" is the length of value( column family) ,not
including the length of key.
but in the method loadIndexFile() of SStableReader
...
else
{
input.readUTF();
nextDataPosition = input.readLong();
input.seek(nextIndexPosition);
}
indexSummary.maybeAddEntry(decoratedKey, dataPosition,
nextDataPosition
- dataPosition, indexPosition, nextIndexPosition);
}
indexSummary.complete();
the value of nextDataPosition - dataPosition is the length of key and value
,not just the length of value .
the values above two are different, is it a bug?
--
Best Regards
Anty Rao