taegeonum commented on a change in pull request #187: [NEMO-324] Distinguish 
Beam's run and waitUntilFinish methods
URL: https://github.com/apache/incubator-nemo/pull/187#discussion_r265409408
 
 

 ##########
 File path: 
client/src/main/java/org/apache/nemo/client/beam/NemoPipelineResult.java
 ##########
 @@ -49,10 +64,19 @@ public State cancel() throws IOException {
 
   @Override
   public State waitUntilFinish(final Duration duration) {
-    throw new UnsupportedOperationException();
-    // TODO #208: NemoPipelineResult#waitUntilFinish hangs
-    // Previous code that hangs the job:
-    // return (State) super.waitUntilJobFinish(duration.getMillis(), 
TimeUnit.MILLISECONDS);
+    final boolean finished;
+    try {
+      finished = this.jobDone.await(duration.getMillis(), 
TimeUnit.MILLISECONDS);
+    } catch (final InterruptedException e) {
+      throw new RuntimeException(e);
+    }
+    if (finished) {
+      LOG.info("Job successfully finished before timeout of {}ms, while 
waiting until finish", duration);
+    } else {
+      LOG.info("Job timed out before {}ms, while waiting until finish.", 
duration);
+      JobLauncher.shutdown();
 
 Review comment:
   I think the shutdown should be called in `PipelineResult.cancel()`. Users 
can cancel if it is not finished after the duration. This method should only 
return the state. (e.g., job still running or finished?)

----------------------------------------------------------------
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:
[email protected]


With regards,
Apache Git Services

Reply via email to