55package io.gitpod.jetbrains.remote
66
77import com.intellij.codeWithMe.ClientId
8+ import com.intellij.codeWithMe.asContextElement
89import com.intellij.ide.BrowserUtil
910import com.intellij.ide.CommandLineProcessor
1011import com.intellij.openapi.client.ClientKind
@@ -27,10 +28,7 @@ import io.netty.channel.ChannelHandlerContext
2728import io.netty.handler.codec.http.FullHttpRequest
2829import io.netty.handler.codec.http.QueryStringDecoder
2930import io.prometheus.client.exporter.common.TextFormat
30- import kotlinx.coroutines.GlobalScope
31- import kotlinx.coroutines.delay
32- import kotlinx.coroutines.launch
33- import kotlinx.coroutines.runBlocking
31+ import kotlinx.coroutines.*
3432import org.jetbrains.ide.RestService
3533import org.jetbrains.io.response
3634import java.io.OutputStreamWriter
@@ -113,14 +111,12 @@ class GitpodCLIService : RestService() {
113111 }
114112
115113 private fun withClient (request : FullHttpRequest , context : ChannelHandlerContext , action : suspend (project: Project ? ) -> Unit ): String? {
116- GlobalScope .launch {
117- getClientSessionAndProjectAsync().let { (session, project) ->
118- ClientId .withClientId(session.clientId) {
119- runBlocking {
120- action(project)
121- }
122- sendOk(request, context)
123- }
114+ val scope = CoroutineScope (Dispatchers .Default )
115+ scope.launch {
116+ val (session, project) = getClientSessionAndProjectAsync()
117+ withContext(session.clientId.asContextElement()) {
118+ action(project)
119+ sendOk(request, context)
124120 }
125121 }
126122 return null
0 commit comments