richardstartin commented on a change in pull request #7927: URL: https://github.com/apache/pinot/pull/7927#discussion_r772595460
########## File path: pinot-core/src/main/java/org/apache/pinot/core/data/manager/realtime/LLRealtimeSegmentDataManager.java ########## @@ -294,15 +300,17 @@ public void deleteSegmentFile() { private boolean endCriteriaReached() { Preconditions.checkState(_state.shouldConsume(), "Incorrect state %s", _state); long now = now(); + long consumeEndTime = _consumeEndTime; switch (_state) { case INITIAL_CONSUMING: // The segment has been created, and we have not posted a segmentConsumed() message on the controller yet. // We need to consume as much data as available, until we have either reached the max number of rows or // the max time we are allowed to consume. - if (now >= _consumeEndTime) { + if (now >= consumeEndTime) { if (_realtimeSegment.getNumDocsIndexed() == 0) { _segmentLogger.info("No events came in, extending time by {} hours", TIME_EXTENSION_ON_EMPTY_SEGMENT_HOURS); - _consumeEndTime += TimeUnit.HOURS.toMillis(TIME_EXTENSION_ON_EMPTY_SEGMENT_HOURS); + CONSUME_END_TIME_UPDATER.compareAndSet(this, consumeEndTime, consumeEndTime + + TimeUnit.HOURS.toMillis(TIME_EXTENSION_ON_EMPTY_SEGMENT_HOURS)); Review comment: the cost of the updater (an apparently uncontended CAS) is of a similar magnitude to a volatile write. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org