apache / apache/pekko-grpc

ErrorReportingSpec: fails to tear down actorsystem with `Boxed InterruptedException`

Open
#419 0 comments 0 reactions 0 assignees View on GitHub
flaky
Dominant language
Scala
Stars
55
Forks
30
Avg merge
23h 12m
Merged PRs (30d)
34

Description

```
Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
[WARN] [12/12/2024 09:17:34.140] [default-pekko.actor.internal-dispatcher-18] [CoordinatedShutdown(pekko://default)] Task [terminate-system] failed in phase [actor-system-terminate]: Boxed InterruptedException
```

```
[info] ErrorReportingSpec:
[info] A gRPC server
[info] - should respond with an 'unimplemented' gRPC error status when calling an unknown method (532 milliseconds)
[info] - should respond with an 'invalid argument' gRPC error status when calling an method without a request body (22 milliseconds)
[INFO] [12/12/2024 09:17:34.084] [pool-1-thread-1] [CoordinatedShutdown(pekko://default)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
[WARN] [12/12/2024 09:17:34.140] [default-pekko.actor.internal-dispatcher-18] [CoordinatedShutdown(pekko://default)] Task [terminate-system] failed in phase [actor-system-terminate]: Boxed InterruptedException
[info] example.myapp.helloworld.ErrorReportingSpec *** ABORTED *** (746 milliseconds)
[info] java.util.concurrent.ExecutionException: Boxed InterruptedException
[info] at scala.concurrent.impl.Promise.completeWithFailure(Promise.scala:34)
[info] at scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:42)
[info] at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:74)
[info] at org.apache.pekko.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:73)
[info] at org.apache.pekko.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:110)
[info] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[info] at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:85)
[info] at org.apache.pekko.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:110)
[info] at org.apache.pekko.dispatch.TaskInvocation.run(AbstractDispatcher.scala:59)
[info] at org.apache.pekko.dispatch.ForkJoinExecutorConfigurator$PekkoForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:61)
[info] at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
[info] at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
[info] at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
[info] at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
[info] at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
[info] Cause: java.lang.InterruptedException:
[info] at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1133)
[info] at scala.concurrent.impl.Promise$DefaultPromise.tryAwait(Promise.scala:258)
[info] at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:268)
[info] at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:273)
[info] at scala.concurrent.Await$.$anonfun$result$1(package.scala:223)
[info] at org.apache.pekko.dispatch.MonitorableThreadFactory$PekkoManagedBlocker.block(ThreadPoolBuilder.scala:192)
[info] at java.base/java.util.concurrent.ForkJoinPool.compensatedBlock(ForkJoinPool.java:3740)
[info] at java.base/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3723)
[info] at org.apache.pekko.dispatch.MonitorableThreadFactory$PekkoForkJoinWorkerThread.blockOn(ThreadPoolBuilder.scala:204)
[info] at org.apache.pekko.dispatch.BatchingExecutor$BlockableBatch.blockOn(BatchingExecutor.scala:126)
[info] at scala.concurrent.Await$.result(package.scala:146)
[info] at org.apache.pekko.actor.LightArrayRevolverScheduler.close(LightArrayRevolverScheduler.scala:176)
[info] at org.apache.pekko.actor.ActorSystemImpl.stopScheduler(ActorSystem.scala:1136)
[info] at org.apache.pekko.actor.ActorSystemImpl.$anonfun$_start$1(ActorSystem.scala:1041)
[info] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[info] at org.apache.pekko.actor.ActorSystemImpl$$anon$2.run(ActorSystem.scala:1063)
[info] at org.apache.pekko.actor.ActorSystemImpl$TerminationCallbacks$$anonfun$addRec$1$1.applyOrElse(ActorSystem.scala:1295)
[info] at scala.concurrent.Future.$anonfun$andThen$1(Future.scala:536)
[info] at scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:42)
[info] at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:74)
[info] at org.apache.pekko.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:73)
[info] at org.apache.pekko.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:110)
[info] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[info] at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:85)
[info] at org.apache.pekko.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:110)
[info] at org.apache.pekko.dispatch.TaskInvocation.run(AbstractDispatcher.scala:59)
[info] at org.apache.pekko.dispatch.ForkJoinExecutorConfigurator$PekkoForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:61)
[info] at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
[info] at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
[info] at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
[info] at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
[info] at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
```

Contributor guide

Open the contributing guide

Research direction

Start by reproducing ErrorReportingSpec and inspect its actor-system teardown around CoordinatedShutdown. Trace the terminate-system failure and the InterruptedException shown in the stack trace. Done means ErrorReportingSpec completes without aborting and the actor system terminates without the warning.

Written by the indexing model from the issue text.

Assessment

Tech stack
grpc, scala
Domain
testing
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.