Skip to content

Commit 8111752

Browse files
authored
Update ktor, use std allocator as the fastest one (#4)
1 parent 44a667a commit 8111752

File tree

6 files changed

+22
-16
lines changed

6 files changed

+22
-16
lines changed

gradle.properties

+1
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ org.gradle.jvmargs=-Xmx2048M -Dfile.encoding=UTF-8 -Dkotlin.daemon.jvm.options\=
77
io.ktor.development=true
88

99
#kotlin.native.cacheKind.linuxX64=none
10+
kotlin.native.ignoreDisabledTargets=true

gradle/libs.versions.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[versions]
22
junit = "4.13.2"
3-
kotlin = "2.0.10"
3+
kotlin = "2.0.20"
44
coroutinest-test = "1.9.0-RC"
5-
ktor = "3.0.0-beta-2"
5+
ktor = "3.0.0-rc-1"
66
serialization = "1.6.3"
77
logback = "1.5.6"
88
io = "0.5.1"

lambda-runtime/build.gradle.kts

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import dev.mokkery.MockMode
2+
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
3+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
4+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompileCommon
25

36
plugins {
47
alias(libs.plugins.kotlin.multiplatform)
@@ -14,6 +17,11 @@ kotlin {
1417
//linuxArm64() // https://youtrack.jetbrains.com/issue/KT-36871/Support-Aarch64-Linux-as-a-host-for-the-Kotlin-Native
1518
linuxX64()
1619

20+
@OptIn(ExperimentalKotlinGradlePluginApi::class)
21+
compilerOptions {
22+
freeCompilerArgs.addAll(listOf("-Xallocator=std"))
23+
}
24+
1725
sourceSets {
1826
commonMain.dependencies {
1927
implementation(projects.lambdaEvents)
@@ -38,4 +46,4 @@ kotlin {
3846

3947
mokkery {
4048
defaultMockMode.set(MockMode.autoUnit)
41-
}
49+
}

lambda-runtime/src/commonMain/kotlin/io/github/trueangle/knative/lambda/runtime/api/LambdaRuntimeClient.kt

+6
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import io.ktor.client.statement.HttpResponse
2121
import io.ktor.http.HttpStatusCode
2222
import io.ktor.http.content.OutgoingContent
2323
import io.ktor.http.contentType
24+
import io.ktor.http.isSuccess
2425
import io.ktor.util.reflect.TypeInfo
2526
import kotlinx.serialization.json.Json
2627
import kotlin.time.Duration.Companion.minutes
@@ -53,6 +54,11 @@ internal class LambdaClientImpl(private val httpClient: HttpClient): LambdaClien
5354
exponentialDelay()
5455
}
5556
}
57+
58+
if(!response.status.isSuccess()) {
59+
throw NonRecoverableStateException(message = "Lambda environment is unavailable. Can't retrieve an event. Terminating")
60+
}
61+
5662
val context = contextFromResponseHeaders(response)
5763
val body = try {
5864
response.body(bodyType) as T

lambda-runtime/src/nativeTest/kotlin/io/github/trueangle/knative/lambda/runtime/LambdaRuntimeTest.kt

+3-13
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import dev.mokkery.verify.VerifyMode.Companion.exactly
1111
import dev.mokkery.verify.VerifyMode.Companion.not
1212
import dev.mokkery.verify.VerifyMode.Companion.order
1313
import dev.mokkery.verifySuspend
14-
import io.github.trueangle.knative.lambda.runtime.LambdaEnvironmentException.*
14+
import io.github.trueangle.knative.lambda.runtime.LambdaEnvironmentException.BadRequestException
15+
import io.github.trueangle.knative.lambda.runtime.LambdaEnvironmentException.NonRecoverableStateException
1516
import io.github.trueangle.knative.lambda.runtime.LambdaRuntimeException.Invocation.EventBodyParseException
1617
import io.github.trueangle.knative.lambda.runtime.LambdaRuntimeException.Invocation.HandlerException
1718
import io.github.trueangle.knative.lambda.runtime.ReservedRuntimeEnvironmentVariables.AWS_LAMBDA_FUNCTION_NAME
@@ -33,12 +34,8 @@ import io.ktor.client.engine.mock.MockRequestHandleScope
3334
import io.ktor.client.engine.mock.respond
3435
import io.ktor.client.engine.mock.respondBadRequest
3536
import io.ktor.client.engine.mock.respondError
36-
import io.ktor.client.engine.mock.respondOk
37-
import io.ktor.client.request.HttpRequestData
3837
import io.ktor.http.HttpHeaders
3938
import io.ktor.http.HttpStatusCode
40-
import io.ktor.http.content.ChannelWriterContent
41-
import io.ktor.http.content.OutgoingContent
4239
import io.ktor.http.headers
4340
import io.ktor.http.headersOf
4441
import io.ktor.util.reflect.typeInfo
@@ -48,16 +45,12 @@ import io.ktor.utils.io.copyTo
4845
import kotlinx.cinterop.ExperimentalForeignApi
4946
import kotlinx.cinterop.toKString
5047
import kotlinx.coroutines.test.runTest
51-
import kotlinx.io.Buffer
52-
import kotlinx.io.RawSource
53-
import kotlinx.io.Source
5448
import kotlinx.serialization.json.Json
5549
import platform.posix.getenv
5650
import platform.posix.setenv
5751
import kotlin.test.BeforeTest
5852
import kotlin.test.Test
5953
import kotlin.test.assertFailsWith
60-
import kotlin.test.assertTrue
6154

6255
internal const val RESOURCES_PATH = "src/nativeTest/resources"
6356

@@ -197,10 +190,7 @@ class LambdaRuntimeTest {
197190
val lambdaRunner = createRunner(MockEngine { request ->
198191
val path = request.url.encodedPath
199192
when {
200-
path.contains("/invocation/next") -> {
201-
respondError(HttpStatusCode.InternalServerError)
202-
}
203-
193+
path.contains("/invocation/next") -> respondError(HttpStatusCode.InternalServerError)
204194
else -> respondError(HttpStatusCode.Forbidden)
205195
}
206196
})

sample/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ kotlin {
1414
it.binaries {
1515
executable {
1616
entryPoint = "com.github.trueangle.knative.lambda.runtime.sample.main"
17+
freeCompilerArgs += listOf("-Xallocator=std")
1718
}
1819
}
1920
}

0 commit comments

Comments
 (0)