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