From c027f131220f49f4760a9a0f1bc54360355c9d87 Mon Sep 17 00:00:00 2001 From: BoD Date: Wed, 9 Apr 2025 16:01:46 +0200 Subject: [PATCH] Use a coroutines to prevent an IllegalStateException (see #6459) --- .../ijplugin/gradle/GradleToolingModelService.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/intellij-plugin/src/main/kotlin/com/apollographql/ijplugin/gradle/GradleToolingModelService.kt b/intellij-plugin/src/main/kotlin/com/apollographql/ijplugin/gradle/GradleToolingModelService.kt index cc47783bad7..f8e22e63c93 100644 --- a/intellij-plugin/src/main/kotlin/com/apollographql/ijplugin/gradle/GradleToolingModelService.kt +++ b/intellij-plugin/src/main/kotlin/com/apollographql/ijplugin/gradle/GradleToolingModelService.kt @@ -9,7 +9,6 @@ import com.apollographql.ijplugin.settings.ProjectSettingsState import com.apollographql.ijplugin.settings.projectSettingsState import com.apollographql.ijplugin.telemetry.telemetryService import com.apollographql.ijplugin.util.dispose -import com.apollographql.ijplugin.util.executeOnPooledThread import com.apollographql.ijplugin.util.isNotDisposed import com.apollographql.ijplugin.util.logd import com.apollographql.ijplugin.util.logw @@ -25,6 +24,8 @@ import com.intellij.openapi.project.guessProjectDir import com.intellij.openapi.util.CheckedDisposable import com.intellij.openapi.vfs.VfsUtilCore import com.intellij.openapi.vfs.VirtualFileManager +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.launch import org.gradle.tooling.CancellationTokenSource import org.gradle.tooling.GradleConnector import org.gradle.tooling.model.GradleProject @@ -36,6 +37,7 @@ import java.io.File @Service(Service.Level.PROJECT) class GradleToolingModelService( private val project: Project, + private val coroutineScope: CoroutineScope, ) : Disposable { private var gradleHasSyncedDisposable: CheckedDisposable? = null @@ -141,7 +143,7 @@ class GradleToolingModelService( return } - fetchToolingModelsTask = FetchToolingModelsTask().also { executeOnPooledThread { it.run() } } + fetchToolingModelsTask = FetchToolingModelsTask().also { coroutineScope.launch { it.run() } } } private inner class FetchToolingModelsTask : Runnable {