JetBrains-Research / JetBrains-Research/TestSpark
Attempt to stop `ProgressIndicator` that is already stopped
- Dominant language
- Kotlin
- Stars
- 88
- Forks
- 24
- PR merge metrics
- No merged PRs in 30d
Description
**Describe the bug**
Error occurred in `ToolUtils.kt::isProcessCanceled` when I tried to stop the test generation on compilation checking stage.
The problem may be in the line `(**)` (we should not can stop on a cancelled indicator):
```kotlin
fun isProcessCanceled(indicator: CustomProgressIndicator): Boolean {
if (indicator.isCanceled()) {
indicator.stop() // (**)
return true
}
return false
}
```
**To Reproduce**
Steps to reproduce the behavior:
1. Start generation **for Kotlin**;
2. Click stop button on the indicator when "Compilation checking" occurs;
3. See error
**Expected behavior**
Normal stop. No errors.
**Additional context**
```
2024-10-07 12:37:49,023 [ 212959] SEVERE - #c.i.o.p.u.AbstractProgressIndicatorBase - Attempt to stop ProgressIndicator which is already stopped: Generating tests 228899262: running=false; canceled=true; task=org.jetbrains.research.testspark.tools.Pipeline$runTestGeneration$1@7e83b9e0,class com.intellij.openapi.progress.impl.BackgroundableProcessIndicator
java.lang.IllegalStateException
at com.intellij.openapi.progress.util.AbstractProgressIndicatorBase.throwInvalidState(AbstractProgressIndicatorBase.java:130)
at com.intellij.openapi.progress.util.AbstractProgressIndicatorBase.stop(AbstractProgressIndicatorBase.java:118)
at com.intellij.openapi.progress.util.AbstractProgressIndicatorExBase.stop(AbstractProgressIndicatorExBase.java:52)
at com.intellij.openapi.progress.util.ProgressWindow.stop(ProgressWindow.java:285)
at org.jetbrains.research.testspark.display.custom.IJProgressIndicator.stop(IJProgressIndicator.kt:32)
at org.jetbrains.research.testspark.tools.ToolUtils.isProcessCanceled(ToolUtils.kt:117)
at org.jetbrains.research.testspark.tools.ToolUtils.isProcessStopped(ToolUtils.kt:112)
at org.jetbrains.research.testspark.tools.Pipeline$runTestGeneration$1.run(Pipeline.kt:107)
at com.intellij.openapi.progress.impl.CoreProgressManager.startTask(CoreProgressManager.java:477)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask(ProgressManagerImpl.java:133)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsynchronously$6(CoreProgressManager.java:528)
at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:250)
at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:100)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:221)
at com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.use(trace.kt:46)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:220)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:202)
at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:100)
at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$5(ProgressRunner.java:250)
at com.intellij.openapi.progress.impl.ProgressRunner$ProgressRunnable.run(ProgressRunner.java:500)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
at java.base/java.lang.Thread.run(Thread.java:840)
2024-10-07 12:37:49,026 [ 212962] SEVERE - #c.i.o.p.u.AbstractProgressIndicatorBase - IntelliJ IDEA 2024.1 Build #IC-241.14494.240
2024-10-07 12:37:49,026 [ 212962] SEVERE - #c.i.o.p.u.AbstractProgressIndicatorBase - JDK: 17.0.10; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o.
2024-10-07 12:37:49,026 [ 212962] SEVERE - #c.i.o.p.u.AbstractProgressIndicatorBase - OS: Mac OS X
2024-10-07 12:37:49,026 [ 212962] SEVERE - #c.i.o.p.u.AbstractProgressIndicatorBase - Plugin to blame: TestSpark version: 0.2.1
2024-10-07 12:37:49,026 [ 212962] SEVERE - #c.i.o.p.u.AbstractProgressIndicatorBase - Last Action: SaveAll
2024-10-07 12:37:49,027 [ 212963] SEVERE - #c.i.o.p.u.AbstractProgressIndicatorBase - stop() should be called only if start() called before: Generating tests 228899262: running=false; canceled=true; task=org.jetbrains.research.testspark.tools.Pipeline$runTestGeneration$1@7e83b9e0,class com.intellij.openapi.progress.impl.BackgroundableProcessIndicator
```
Our code in the above trace is:
```
at org.jetbrains.research.testspark.display.custom.IJProgressIndicator.stop(IJProgressIndicator.kt:32)
at org.jetbrains.research.testspark.tools.ToolUtils.isProcessCanceled(ToolUtils.kt:117)
at org.jetbrains.research.testspark.tools.ToolUtils.isProcessStopped(ToolUtils.kt:112)
at org.jetbrains.research.testspark.tools.Pipeline$runTestGeneration$1.run(Pipeline.kt:107)
```
Contributor guide
Assessment
This issue has not been assessed yet.