zhuzhurk commented on a change in pull request #7255: [FLINK-10945] Use 
InputDependencyConstraint to avoid resource dead…
URL: https://github.com/apache/flink/pull/7255#discussion_r240629262
 
 

 ##########
 File path: 
flink-runtime/src/main/java/org/apache/flink/runtime/executiongraph/Execution.java
 ##########
 @@ -747,31 +747,34 @@ else if (numConsumers == 0) {
                                
consumerVertex.cachePartitionInfo(PartialInputChannelDeploymentDescriptor.fromEdge(
                                                partition, partitionExecution));
 
-                               // When deploying a consuming task, its task 
deployment descriptor will contain all
-                               // deployment information available at the 
respective time. It is possible that some
-                               // of the partitions to be consumed have not 
been created yet. These are updated
-                               // runtime via the update messages.
-                               //
-                               // TODO The current approach may send many 
update messages even though the consuming
-                               // task has already been deployed with all 
necessary information. We have to check
-                               // whether this is a problem and fix it, if it 
is.
-                               CompletableFuture.supplyAsync(
-                                       () -> {
-                                               try {
-                                                       final ExecutionGraph 
executionGraph = consumerVertex.getExecutionGraph();
-                                                       
consumerVertex.scheduleForExecution(
-                                                               
executionGraph.getSlotProvider(),
-                                                               
executionGraph.isQueuedSchedulingAllowed(),
-                                                               
LocationPreferenceConstraint.ANY, // there must be at least one known location
-                                                               
Collections.emptySet());
-                                               } catch (Throwable t) {
-                                                       consumerVertex.fail(new 
IllegalStateException("Could not schedule consumer " +
+                               // Schedule the consumer vertex if its inputs 
constraint is satisfied, otherwise postpone the scheduling
+                               if 
(consumerVertex.checkInputDependencyConstraints()) {
+                                       // When deploying a consuming task, its 
task deployment descriptor will contain all
+                                       // deployment information available at 
the respective time. It is possible that some
+                                       // of the partitions to be consumed 
have not been created yet. These are updated
+                                       // runtime via the update messages.
+                                       //
+                                       // TODO The current approach may send 
many update messages even though the consuming
+                                       // task has already been deployed with 
all necessary information. We have to check
+                                       // whether this is a problem and fix 
it, if it is.
+                                       CompletableFuture.supplyAsync(
 
 Review comment:
   Sure.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to