GJL commented on a change in pull request #10255: [FLINK-14859][runtime] Avoid 
leaking unassigned slots 
URL: https://github.com/apache/flink/pull/10255#discussion_r348408477
 
 

 ##########
 File path: 
flink-runtime/src/test/java/org/apache/flink/runtime/scheduler/DefaultSchedulerTest.java
 ##########
 @@ -295,6 +295,21 @@ public void skipDeploymentIfVertexVersionOutdated() {
                assertThat(scheduler.requestJob().getState(), 
is(equalTo(JobStatus.RUNNING)));
        }
 
+       @Test
+       public void releaseSlotIfVertexVersionOutdated() {
 
 Review comment:
   I wouldn't employ the security manager because any test that executes 
`FutureUtils.assertNoException` could stop the JVM. If one sets log level to 
DEBUG in `log4j-test.properties`, the error message is comprehensive enough to 
debug the failure.
   
   ```
   520  [main] ERROR org.apache.flink.runtime.util.FatalExitExceptionHandler  - 
FATAL: Thread 'main' produced an uncaught exception. Stopping the process...
   java.util.concurrent.CompletionException: java.lang.IllegalStateException: 
Expected slot to be released
        at 
java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273)
        at 
java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280)
        at 
java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:824)
        at 
java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:834)
        at 
java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2155)
        at 
org.apache.flink.runtime.scheduler.DefaultScheduler.lambda$deployAll$4(DefaultScheduler.java:375)
        at 
java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:822)
        at 
java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:797)
        at 
java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
        at 
java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1962)
        at 
org.apache.flink.runtime.concurrent.FutureUtils$WaitingConjunctFuture.handleCompletedFuture(FutureUtils.java:702)
        at 
java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:760)
        at 
java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:736)
        at 
java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
        at 
java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1962)
        at 
org.apache.flink.runtime.scheduler.TestExecutionSlotAllocator.completePendingRequest(TestExecutionSlotAllocator.java:90)
        at java.util.ArrayList.forEach(ArrayList.java:1257)
        at 
org.apache.flink.runtime.scheduler.TestExecutionSlotAllocator.completePendingRequests(TestExecutionSlotAllocator.java:82)
        at 
org.apache.flink.runtime.scheduler.DefaultSchedulerTest.releaseSlotIfVertexVersionOutdated(DefaultSchedulerTest.java:308)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
        at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
        at 
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at 
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
        at 
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
        at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
        at org.junit.rules.RunRules.evaluate(RunRules.java:20)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
        at 
com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
        at 
com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
        at 
com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
        at 
com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
   Caused by: java.lang.IllegalStateException: Expected slot to be released
        at 
org.apache.flink.util.Preconditions.checkState(Preconditions.java:195)
        at 
org.apache.flink.runtime.scheduler.DefaultScheduler.lambda$deployOrHandleError$6(DefaultScheduler.java:439)
        at 
java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:822)
        ... 42 more
   ```

----------------------------------------------------------------
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:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to