Skip to content

Commit 53935ee

Browse files
committed
KTOR-8810 Make routing call coroutineContext delegate to engine call
1 parent 3f5797a commit 53935ee

File tree

6 files changed

+21
-4
lines changed

6 files changed

+21
-4
lines changed

ktor-server/ktor-server-core/api/ktor-server-core.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1785,6 +1785,7 @@ public final class io/ktor/server/routing/RoutingPathSegmentKind : java/lang/Enu
17851785
}
17861786

17871787
public final class io/ktor/server/routing/RoutingPipelineCall : io/ktor/server/application/PipelineCall, kotlinx/coroutines/CoroutineScope {
1788+
public fun <init> (Lio/ktor/server/application/PipelineCall;Lio/ktor/server/routing/RoutingNode;Lio/ktor/server/request/ApplicationReceivePipeline;Lio/ktor/server/response/ApplicationSendPipeline;Lio/ktor/http/Parameters;)V
17881789
public fun <init> (Lio/ktor/server/application/PipelineCall;Lio/ktor/server/routing/RoutingNode;Lkotlin/coroutines/CoroutineContext;Lio/ktor/server/request/ApplicationReceivePipeline;Lio/ktor/server/response/ApplicationSendPipeline;Lio/ktor/http/Parameters;)V
17891790
public fun getApplication ()Lio/ktor/server/application/Application;
17901791
public fun getAttributes ()Lio/ktor/util/Attributes;

ktor-server/ktor-server-core/api/ktor-server-core.klib.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1106,6 +1106,7 @@ final class io.ktor.server.routing/RoutingPathSegment { // io.ktor.server.routin
11061106
}
11071107

11081108
final class io.ktor.server.routing/RoutingPipelineCall : io.ktor.server.application/PipelineCall, kotlinx.coroutines/CoroutineScope { // io.ktor.server.routing/RoutingPipelineCall|null[0]
1109+
constructor <init>(io.ktor.server.application/PipelineCall, io.ktor.server.routing/RoutingNode, io.ktor.server.request/ApplicationReceivePipeline, io.ktor.server.response/ApplicationSendPipeline, io.ktor.http/Parameters) // io.ktor.server.routing/RoutingPipelineCall.<init>|<init>(io.ktor.server.application.PipelineCall;io.ktor.server.routing.RoutingNode;io.ktor.server.request.ApplicationReceivePipeline;io.ktor.server.response.ApplicationSendPipeline;io.ktor.http.Parameters){}[0]
11091110
constructor <init>(io.ktor.server.application/PipelineCall, io.ktor.server.routing/RoutingNode, kotlin.coroutines/CoroutineContext, io.ktor.server.request/ApplicationReceivePipeline, io.ktor.server.response/ApplicationSendPipeline, io.ktor.http/Parameters) // io.ktor.server.routing/RoutingPipelineCall.<init>|<init>(io.ktor.server.application.PipelineCall;io.ktor.server.routing.RoutingNode;kotlin.coroutines.CoroutineContext;io.ktor.server.request.ApplicationReceivePipeline;io.ktor.server.response.ApplicationSendPipeline;io.ktor.http.Parameters){}[0]
11101111

11111112
final val application // io.ktor.server.routing/RoutingPipelineCall.application|{}application[0]

ktor-server/ktor-server-core/common/src/io/ktor/server/routing/RoutingPipelineCall.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,29 @@ import kotlin.coroutines.*
2323
public class RoutingPipelineCall(
2424
public val engineCall: PipelineCall,
2525
public val route: RoutingNode,
26-
override val coroutineContext: CoroutineContext,
2726
receivePipeline: ApplicationReceivePipeline,
2827
responsePipeline: ApplicationSendPipeline,
2928
public val pathParameters: Parameters
3029
) : PipelineCall, CoroutineScope {
30+
@Deprecated(level = DeprecationLevel.WARNING, message = "CoroutineContext is delegated to engineCall now.")
31+
public constructor(
32+
engineCall: PipelineCall,
33+
route: RoutingNode,
34+
coroutineContext: CoroutineContext,
35+
receivePipeline: ApplicationReceivePipeline,
36+
responsePipeline: ApplicationSendPipeline,
37+
pathParameters: Parameters
38+
) : this(
39+
engineCall,
40+
route,
41+
receivePipeline,
42+
responsePipeline,
43+
pathParameters
44+
)
3145

3246
override val application: Application get() = engineCall.application
3347
override val attributes: Attributes get() = engineCall.attributes
48+
override val coroutineContext: CoroutineContext get() = engineCall.coroutineContext
3449

3550
override val request: RoutingPipelineRequest =
3651
RoutingPipelineRequest(this, receivePipeline, engineCall.request)

ktor-server/ktor-server-core/common/src/io/ktor/server/routing/RoutingRoot.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ public class RoutingRoot(
9494
val routingApplicationCall = RoutingPipelineCall(
9595
context.call,
9696
route,
97-
context.coroutineContext,
9897
receivePipeline,
9998
responsePipeline,
10099
parameters

ktor-server/ktor-server-netty/jvm/test/io/ktor/tests/server/netty/NettyEngineTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import io.ktor.server.testing.suites.*
1818
import io.ktor.server.websocket.*
1919
import io.ktor.websocket.*
2020
import kotlinx.coroutines.flow.*
21+
import kotlinx.coroutines.test.TestResult
2122
import kotlin.test.*
2223

2324
class NettyCompressionTest : CompressionTestSuite<NettyApplicationEngine, NettyApplicationEngine.Configuration>(Netty) {

ktor-server/ktor-server-test-suites/common/src/io/ktor/server/testing/suites/HttpServerCommonTestSuite.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -500,12 +500,12 @@ abstract class HttpServerCommonTestSuite<TEngine : ApplicationEngine, TConfigura
500500
}
501501

502502
@Test
503-
fun testParentContextPropagates() = runTest {
503+
open fun testParentContextPropagates() = runTest {
504504
createAndStartServer(
505505
parent = TestData("parent")
506506
) {
507507
get("/") {
508-
val testDataFromParent = kotlin.coroutines.coroutineContext[TestData]
508+
val testDataFromParent = call.coroutineContext[TestData]
509509
assertNotNull(testDataFromParent, "Context should contain test data from parent")
510510
call.respond(HttpStatusCode.OK, testDataFromParent.name)
511511
}

0 commit comments

Comments
 (0)