You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by GitBox <gi...@apache.org> on 2019/10/01 11:03:50 UTC

[GitHub] [flink] 1u0 commented on a change in pull request #9717: [FLINK-14044] [runtime] Reducing synchronization in AsyncWaitOperator

1u0 commented on a change in pull request #9717: [FLINK-14044] [runtime] Reducing synchronization in AsyncWaitOperator
URL: https://github.com/apache/flink/pull/9717#discussion_r329962178
 
 

 ##########
 File path: flink-streaming-java/src/main/java/org/apache/flink/streaming/api/operators/async/AsyncWaitOperator.java
 ##########
 @@ -210,40 +180,33 @@ else if (element.isLatencyMarker()) {
 
 	@Override
 	public void processElement(StreamRecord<IN> element) throws Exception {
-		final StreamRecordQueueEntry<OUT> streamRecordBufferEntry = new StreamRecordQueueEntry<>(element);
+		// add element first to the queue
+		final ResultFuture<OUT> entry = addToWorkQueue(element);
+
+		final ResultHandler resultHandler = new ResultHandler(element, entry);
 
+		// register a timeout for the entry if timeout is configured
 		if (timeout > 0L) {
-			// register a timeout for this AsyncStreamRecordBufferEntry
-			long timeoutTimestamp = timeout + getProcessingTimeService().getCurrentProcessingTime();
-
-			final ScheduledFuture<?> timerFuture = getProcessingTimeService().registerTimer(
-				timeoutTimestamp,
-				new ProcessingTimeCallback() {
-					@Override
-					public void onProcessingTime(long timestamp) throws Exception {
-						userFunction.timeout(element.getValue(), streamRecordBufferEntry);
-					}
-				});
-
-			// Cancel the timer once we've completed the stream record buffer entry. This will remove
-			// the register trigger task
-			streamRecordBufferEntry.onComplete(
-				(StreamElementQueueEntry<Collection<OUT>> value) -> {
-					timerFuture.cancel(true);
-				},
-				executor);
-		}
+			final long timeoutTimestamp = timeout + getProcessingTimeService().getCurrentProcessingTime();
+
+			final ScheduledFuture<?> timeoutTimer = getProcessingTimeService().registerTimer(
+					timeoutTimestamp,
+					timestamp -> userFunction.timeout(element.getValue(), resultHandler));
 
 Review comment:
   Nitpick: formatting offset.

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services