in src/main/java/com/aliyun/openservices/aliyun/log/producer/internals/LogAccumulator.java [195:215]
public ExpiredBatches expiredBatches() {
long nowMs = System.currentTimeMillis();
ExpiredBatches expiredBatches = new ExpiredBatches();
long remainingMs = producerConfig.getLingerMs();
for (Map.Entry<GroupKey, ProducerBatchHolder> entry : batches.entrySet()) {
ProducerBatchHolder holder = entry.getValue();
synchronized (holder) {
if (holder.producerBatch == null) {
continue;
}
long curRemainingMs = holder.producerBatch.remainingMs(nowMs, producerConfig.getLingerMs());
if (curRemainingMs <= 0) {
holder.transferProducerBatch(expiredBatches);
} else {
remainingMs = Math.min(remainingMs, curRemainingMs);
}
}
}
expiredBatches.setRemainingMs(remainingMs);
return expiredBatches;
}