private WriteBatchImpl readWriteBatch(SliceInput record, int updateSize) throws IOException { WriteBatchImpl writeBatch = new WriteBatchImpl(); int entries = 0; while (record.isReadable()) { entries++; ValueType valueType = ValueType.getValueTypeByPersistentId(record.readByte()); if (valueType == VALUE) { Slice key = readLengthPrefixedBytes(record); Slice value = readLengthPrefixedBytes(record); writeBatch.put(key, value); } else if (valueType == DELETION) { Slice key = readLengthPrefixedBytes(record); writeBatch.delete(key); } else { throw new IllegalStateException("Unexpected value type " + valueType); } } if (entries != updateSize) { throw new IOException( String.format( "Expected %d entries in log record but found %s entries", updateSize, entries)); } return writeBatch; }