public ExpiredBatches expiredBatches()

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;
  }