Skip to content

Commit f05c10c

Browse files
authored
misc: Upgrade to Kotlin 2.1.0 (#1479)
1 parent 31dca75 commit f05c10c

File tree

6 files changed

+37
-106
lines changed

6 files changed

+37
-106
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"id": "0833e425-f3e6-4bea-a4ce-c2b73f7f39b6",
3+
"type": "misc",
4+
"description": "⚠️ **IMPORTANT**: Upgrade to Kotlin 2.1.0",
5+
"requiresMinorVersionBump": true
6+
}

aws-runtime/aws-http/api/aws-http.api

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -140,16 +140,6 @@ public final class aws/sdk/kotlin/runtime/http/interceptors/AddUserAgentMetadata
140140
public fun readBeforeTransmit (Laws/smithy/kotlin/runtime/client/ProtocolRequestInterceptorContext;)V
141141
}
142142

143-
public final class aws/sdk/kotlin/runtime/http/interceptors/AwsBusinessMetric : java/lang/Enum, aws/smithy/kotlin/runtime/businessmetrics/BusinessMetric {
144-
public static final field DDB_MAPPER Laws/sdk/kotlin/runtime/http/interceptors/AwsBusinessMetric;
145-
public static final field S3_EXPRESS_BUCKET Laws/sdk/kotlin/runtime/http/interceptors/AwsBusinessMetric;
146-
public static fun getEntries ()Lkotlin/enums/EnumEntries;
147-
public fun getIdentifier ()Ljava/lang/String;
148-
public fun toString ()Ljava/lang/String;
149-
public static fun valueOf (Ljava/lang/String;)Laws/sdk/kotlin/runtime/http/interceptors/AwsBusinessMetric;
150-
public static fun values ()[Laws/sdk/kotlin/runtime/http/interceptors/AwsBusinessMetric;
151-
}
152-
153143
public final class aws/sdk/kotlin/runtime/http/interceptors/AwsSpanInterceptor : aws/smithy/kotlin/runtime/client/Interceptor {
154144
public static final field INSTANCE Laws/sdk/kotlin/runtime/http/interceptors/AwsSpanInterceptor;
155145
public fun modifyBeforeAttemptCompletion-gIAlu-s (Laws/smithy/kotlin/runtime/client/ResponseInterceptorContext;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
@@ -197,9 +187,11 @@ public final class aws/sdk/kotlin/runtime/http/interceptors/UnsupportedSigningAl
197187
}
198188

199189
public final class aws/sdk/kotlin/runtime/http/interceptors/businessmetrics/AwsBusinessMetric : java/lang/Enum, aws/smithy/kotlin/runtime/businessmetrics/BusinessMetric {
190+
public static final field DDB_MAPPER Laws/sdk/kotlin/runtime/http/interceptors/businessmetrics/AwsBusinessMetric;
200191
public static final field S3_EXPRESS_BUCKET Laws/sdk/kotlin/runtime/http/interceptors/businessmetrics/AwsBusinessMetric;
201192
public static fun getEntries ()Lkotlin/enums/EnumEntries;
202193
public fun getIdentifier ()Ljava/lang/String;
194+
public fun toString ()Ljava/lang/String;
203195
public static fun valueOf (Ljava/lang/String;)Laws/sdk/kotlin/runtime/http/interceptors/businessmetrics/AwsBusinessMetric;
204196
public static fun values ()[Laws/sdk/kotlin/runtime/http/interceptors/businessmetrics/AwsBusinessMetric;
205197
}

aws-runtime/aws-http/common/src/aws/sdk/kotlin/runtime/http/interceptors/BusinessMetricsInterceptor.kt

Lines changed: 0 additions & 88 deletions
This file was deleted.

aws-runtime/aws-http/common/src/aws/sdk/kotlin/runtime/http/interceptors/businessmetrics/AwsBusinessMetricsUtils.kt

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,26 @@ import aws.smithy.kotlin.runtime.businessmetrics.BusinessMetric
88
import aws.smithy.kotlin.runtime.businessmetrics.emitBusinessMetric
99
import aws.smithy.kotlin.runtime.collections.MutableAttributes
1010
import aws.smithy.kotlin.runtime.collections.toMutableAttributes
11+
import aws.smithy.kotlin.runtime.telemetry.logging.Logger
1112

1213
/**
1314
* Makes sure the metrics do not exceed the maximum size and truncates them if so.
15+
* Makes sure that metric identifiers are not > 2 chars in length. Skips them if so.
1416
*/
15-
internal fun formatMetrics(metrics: MutableSet<BusinessMetric>): String {
16-
if (metrics.isEmpty()) return ""
17-
val metricsString = metrics.joinToString(",", "m/") { it.identifier }
17+
internal fun formatMetrics(metrics: MutableSet<BusinessMetric>, logger: Logger): String {
18+
val allowedMetrics = metrics.filter {
19+
if (it.identifier.length > 2) {
20+
logger.warn {
21+
"Business metric '${it.identifier}' will be skipped due to length being > 2. " +
22+
"This is likely a bug. Please raise an issue at https://github.com/awslabs/aws-sdk-kotlin/issues/new/choose"
23+
}
24+
false
25+
} else {
26+
true
27+
}
28+
}
29+
if (allowedMetrics.isEmpty()) return ""
30+
val metricsString = allowedMetrics.joinToString(",", "m/") { it.identifier }
1831
val metricsByteArray = metricsString.encodeToByteArray()
1932

2033
if (metricsByteArray.size <= BUSINESS_METRICS_MAX_LENGTH) return metricsString
@@ -41,6 +54,7 @@ internal fun formatMetrics(metrics: MutableSet<BusinessMetric>): String {
4154
@InternalApi
4255
public enum class AwsBusinessMetric(public override val identifier: String) : BusinessMetric {
4356
S3_EXPRESS_BUCKET("J"),
57+
DDB_MAPPER("d"),
4458
;
4559

4660
@InternalApi
@@ -64,6 +78,8 @@ public enum class AwsBusinessMetric(public override val identifier: String) : Bu
6478
CREDENTIALS_HTTP("z"),
6579
CREDENTIALS_IMDS("0"),
6680
}
81+
82+
override fun toString(): String = identifier
6783
}
6884

6985
/**

aws-runtime/aws-http/common/src/aws/sdk/kotlin/runtime/http/interceptors/businessmetrics/BusinessMetricsInterceptor.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,18 @@ import aws.smithy.kotlin.runtime.client.ProtocolRequestInterceptorContext
1010
import aws.smithy.kotlin.runtime.http.interceptors.HttpInterceptor
1111
import aws.smithy.kotlin.runtime.http.request.HttpRequest
1212
import aws.smithy.kotlin.runtime.http.request.toBuilder
13+
import aws.smithy.kotlin.runtime.telemetry.logging.logger
14+
import kotlin.coroutines.coroutineContext
1315

1416
/**
1517
* Appends business metrics to the `User-Agent` header.
1618
*/
1719
public class BusinessMetricsInterceptor : HttpInterceptor {
1820
override suspend fun modifyBeforeTransmit(context: ProtocolRequestInterceptorContext<Any, HttpRequest>): HttpRequest {
21+
val logger = coroutineContext.logger<BusinessMetricsInterceptor>()
22+
1923
context.executionContext.getOrNull(BusinessMetrics)?.let { metrics ->
20-
val metricsString = formatMetrics(metrics)
24+
val metricsString = formatMetrics(metrics, logger)
2125
val currentUserAgentHeader = context.protocolRequest.headers[USER_AGENT]
2226
val modifiedRequest = context.protocolRequest.toBuilder()
2327

gradle/libs.versions.toml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
[versions]
2-
kotlin-version = "2.0.21"
3-
ksp-version = "2.0.21-1.0.25" # Keep in sync with kotlin-version
2+
kotlin-version = "2.1.0"
3+
ksp-version = "2.1.0-1.0.29" # Keep in sync with kotlin-version
44

55
dokka-version = "1.9.10"
66

7-
aws-kotlin-repo-tools-version = "0.4.14"
7+
aws-kotlin-repo-tools-version = "0.4.17"
88

99
# libs
1010
coroutines-version = "1.9.0"
1111
atomicfu-version = "0.25.0"
12+
binary-compatibility-validator-version = "0.16.3"
1213

1314
# smithy-kotlin codegen and runtime are versioned separately
1415
smithy-kotlin-runtime-version = "1.3.30"
@@ -140,7 +141,7 @@ dokka = { id = "org.jetbrains.dokka", version.ref = "dokka-version"}
140141
kotlin-jvm = {id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin-version" }
141142
kotlin-multiplatform = {id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin-version" }
142143
kotlinx-benchmark = { id = "org.jetbrains.kotlinx.benchmark", version.ref = "kotlinx-benchmark-version" }
143-
kotlinx-binary-compatibility-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version = "0.13.2" }
144+
kotlinx-binary-compatibility-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "binary-compatibility-validator-version" }
144145
kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin-version"}
145146
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp-version" }
146147
aws-kotlin-repo-tools-kmp = { id = "aws.sdk.kotlin.gradle.kmp", version.ref = "aws-kotlin-repo-tools-version" }

0 commit comments

Comments
 (0)