void drain() {
        if (!isConsumed) {
            maybeCloseRecordStream();
            cachedRecordException = null;
            cachedBatchException = null;
            this.isConsumed = true;
            recordAggregatedMetrics(bytesRead, recordsRead);
        }
    }
Draining a {@link ShareCompletedFetch} will signal that the data has been consumed and the underlying resources
are closed. This is somewhat analogous to {@link Closeable#close() closing}, though no error will result if a
caller invokes {@link #fetchRecords(Deserializers, int, boolean)}; an empty {@link List list} will be
returned instead.
clients/src/main/java/org/apache/kafka/clients/consumer/internals/ShareCompletedFetch.java