private void ensureOffsetInRange(long offset) throws IOException {
        if (!canConvertToRelativeOffset(offset))
            throw new LogSegmentOffsetOverflowException(this, offset);
    }
Append the given messages starting with the given offset. Add
an entry to the index if needed.

It is assumed this method is being called from within a lock, it is not thread-safe otherwise.

@param largestOffset The last offset in the message set
@param largestTimestampMs The largest timestamp in the message set.
@param shallowOffsetOfMaxTimestamp The last offset of earliest batch with max timestamp in the messages to append.
@param records The log entries to append.
@throws LogSegmentOffsetOverflowException if the largest offset causes index offset overflow
storage/src/main/java/org/apache/kafka/storage/internals/log/LogSegment.java