@@ -203,12 +203,15 @@ private void appendBIGIndex(byte[] key, int keyLength, long partitionStart, int
203203 ByteArrayUtil .writeWithShortLength (key , 0 , keyLength , indexFileWriter );
204204
205205 indexFileWriter .writeUnsignedVInt (partitionStart );
206- if (rowIndexEntriesOffsets .isEmpty ())
206+
207+ // if the list of entries has one or fewer entries, no point in index entries.
208+ /** See: {@link org.apache.cassandra.io.sstable.format.big.RowIndexEntry#create} */
209+ if (rowIndexEntriesOffsets .size () <= 1 )
207210 {
208211 /**
209212 * {@link RowIndexEntry#serialize(DataOutputPlus, ByteBuffer)}
210213 */
211- indexFileWriter .writeUnsignedVInt32 (0 );
214+ indexFileWriter .writeUnsignedVInt32 (0 ); // size
212215 }
213216 else {
214217 // add last block
@@ -223,11 +226,14 @@ private void appendBIGIndex(byte[] key, int keyLength, long partitionStart, int
223226 // Write the headerLength, partitionDeletionTime and rowIndexEntriesOffsets.size() after the entries,
224227 // just to calculate size.
225228 rowIndexEntries .writeUnsignedVInt ((long )headerLength );
226- this .deletionTimeSerializer .serialize (partitionDeletionTime , rowIndexEntries );
227- rowIndexEntries .writeUnsignedVInt32 (rowIndexEntriesOffsets .size ());
229+ deletionTimeSerializer .serialize (partitionDeletionTime , rowIndexEntries );
230+
231+ rowIndexEntries .writeUnsignedVInt32 (rowIndexEntriesOffsets .size ()); // number of entries
228232
229233 // bytes until offsets
230- indexFileWriter .writeUnsignedVInt32 (rowIndexEntries .getLength () + rowIndexEntriesOffsets .size () * 4 );
234+ int entriesAndOffsetsSize = rowIndexEntries .getLength () + rowIndexEntriesOffsets .size () * 4 ;
235+ assert entriesAndOffsetsSize > 0 ;
236+ indexFileWriter .writeUnsignedVInt32 (entriesAndOffsetsSize ); // size != 0
231237 // copy the header elements
232238 indexFileWriter .write (rowIndexEntries .getData (), endOfEntries , rowIndexEntries .getLength () - endOfEntries );
233239 indexFileWriter .write (rowIndexEntries .getData (), 0 , endOfEntries );
0 commit comments