@Override
public final Watermark getCurrentWatermark() {
   // this guarantees that the watermark never goes backwards.
   long potentialWM = currentMaxTimestamp - maxOutOfOrderness;
   if (potentialWM >= lastEmittedWatermark) {                                
  //currentMaxTimestamp ????????????????????????????????????????????????
      lastEmittedWatermark = potentialWM;
   }
   return new Watermark(lastEmittedWatermark);
}

@Override
public final long extractTimestamp(T element, long previousElementTimestamp) {
   long timestamp = extractTimestamp(element);
   if (timestamp > currentMaxTimestamp) {
      currentMaxTimestamp = timestamp;
   }
   return timestamp;
}

回复