Skip to content

Commit d7089c0

Browse files
authored
Fix some slow operations on EDT (#2750)
1 parent ec6dfce commit d7089c0

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "bugfix",
3+
"description" : "Fix some warnings due to slow operations on EDT (#2735)"
4+
}

jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/execution/sam/SamInvokeRunner.kt

+12-5
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
package software.aws.toolkits.jetbrains.services.lambda.execution.sam
55

6+
import com.intellij.execution.ExecutionResult
67
import com.intellij.execution.configurations.RunProfile
78
import com.intellij.execution.configurations.RunProfileState
89
import com.intellij.execution.configurations.RunnerSettings
@@ -12,6 +13,9 @@ import com.intellij.execution.runners.AsyncProgramRunner
1213
import com.intellij.execution.runners.ExecutionEnvironment
1314
import com.intellij.execution.runners.RunContentBuilder
1415
import com.intellij.execution.ui.RunContentDescriptor
16+
import com.intellij.openapi.application.ModalityState
17+
import com.intellij.openapi.application.ReadAction
18+
import com.intellij.util.concurrency.AppExecutorUtil
1519
import org.jetbrains.concurrency.AsyncPromise
1620
import org.jetbrains.concurrency.Promise
1721
import org.slf4j.event.Level
@@ -68,11 +72,14 @@ class SamInvokeRunner : AsyncProgramRunner<RunnerSettings>() {
6872

6973
override fun execute(environment: ExecutionEnvironment, state: RunProfileState): Promise<RunContentDescriptor?> {
7074
val runPromise = AsyncPromise<RunContentDescriptor?>()
71-
val runContentDescriptor = state.execute(environment.executor, this)?.let {
72-
RunContentBuilder(it, environment).showRunContent(environment.contentToReuse)
73-
}
74-
75-
runPromise.setResult(runContentDescriptor)
75+
ReadAction.nonBlocking<ExecutionResult> {
76+
state.execute(environment.executor, this)
77+
}.finishOnUiThread(ModalityState.any()) { executionResult ->
78+
executionResult?.let {
79+
val runContent = RunContentBuilder(it, environment).showRunContent(environment.contentToReuse)
80+
runPromise.setResult(runContent)
81+
}
82+
}.submit(AppExecutorUtil.getAppExecutorService())
7683

7784
return runPromise
7885
}

jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/upload/CreateLambdaFunctionAction.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package software.aws.toolkits.jetbrains.services.lambda.upload
66
import com.intellij.openapi.actionSystem.AnAction
77
import com.intellij.openapi.actionSystem.AnActionEvent
88
import com.intellij.openapi.actionSystem.LangDataKeys
9+
import com.intellij.openapi.actionSystem.UpdateInBackground
910
import com.intellij.psi.PsiElement
1011
import com.intellij.psi.SmartPsiElementPointer
1112
import icons.AwsIcons
@@ -20,7 +21,7 @@ class CreateLambdaFunctionAction(
2021
private val handlerName: String?,
2122
private val elementPointer: SmartPsiElementPointer<PsiElement>?,
2223
private val lambdaHandlerResolver: LambdaHandlerResolver?
23-
) : AnAction(message("lambda.create_new"), null, AwsIcons.Actions.LAMBDA_FUNCTION_NEW) {
24+
) : AnAction(message("lambda.create_new"), null, AwsIcons.Actions.LAMBDA_FUNCTION_NEW), UpdateInBackground {
2425

2526
@Suppress("unused") // Used by ActionManager in plugin.xml
2627
constructor() : this(null, null, null)

0 commit comments

Comments
 (0)