Skip to content

Commit ac19742

Browse files
authored
feat: surface HTTP connection manager metrics (#88)
1 parent c647f5d commit ac19742

File tree

7 files changed

+69
-0
lines changed

7 files changed

+69
-0
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"id": "11a891eb-b51f-4508-9010-f17d35ce96a3",
3+
"type": "feature",
4+
"description": "Surface HTTP connection manager metrics",
5+
"issues": [
6+
"awslabs/smithy-kotlin#893"
7+
]
8+
}

aws-crt-kotlin/api/android/aws-crt-kotlin.api

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,7 @@ public final class aws/sdk/kotlin/crt/http/HttpClientConnectionManager : aws/sdk
448448
public fun <init> (Laws/sdk/kotlin/crt/http/HttpClientConnectionManagerOptions;)V
449449
public final fun acquireConnection (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
450450
public fun close ()V
451+
public final fun getManagerMetrics ()Laws/sdk/kotlin/crt/http/HttpManagerMetrics;
451452
public final fun getOptions ()Laws/sdk/kotlin/crt/http/HttpClientConnectionManagerOptions;
452453
public final fun releaseConnection (Laws/sdk/kotlin/crt/http/HttpClientConnection;)V
453454
public fun waitForShutdown (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
@@ -527,6 +528,21 @@ public final class aws/sdk/kotlin/crt/http/HttpHeaderBlock : java/lang/Enum {
527528
public static fun values ()[Laws/sdk/kotlin/crt/http/HttpHeaderBlock;
528529
}
529530

531+
public final class aws/sdk/kotlin/crt/http/HttpManagerMetrics {
532+
public fun <init> (JJJ)V
533+
public final fun component1 ()J
534+
public final fun component2 ()J
535+
public final fun component3 ()J
536+
public final fun copy (JJJ)Laws/sdk/kotlin/crt/http/HttpManagerMetrics;
537+
public static synthetic fun copy$default (Laws/sdk/kotlin/crt/http/HttpManagerMetrics;JJJILjava/lang/Object;)Laws/sdk/kotlin/crt/http/HttpManagerMetrics;
538+
public fun equals (Ljava/lang/Object;)Z
539+
public final fun getAvailableConcurrency ()J
540+
public final fun getLeasedConcurrency ()J
541+
public final fun getPendingConcurrencyAcquires ()J
542+
public fun hashCode ()I
543+
public fun toString ()Ljava/lang/String;
544+
}
545+
530546
public final class aws/sdk/kotlin/crt/http/HttpMonitoringOptions {
531547
public fun <init> ()V
532548
public fun <init> (II)V

aws-crt-kotlin/api/jvm/aws-crt-kotlin.api

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,7 @@ public final class aws/sdk/kotlin/crt/http/HttpClientConnectionManager : aws/sdk
448448
public fun <init> (Laws/sdk/kotlin/crt/http/HttpClientConnectionManagerOptions;)V
449449
public final fun acquireConnection (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
450450
public fun close ()V
451+
public final fun getManagerMetrics ()Laws/sdk/kotlin/crt/http/HttpManagerMetrics;
451452
public final fun getOptions ()Laws/sdk/kotlin/crt/http/HttpClientConnectionManagerOptions;
452453
public final fun releaseConnection (Laws/sdk/kotlin/crt/http/HttpClientConnection;)V
453454
public fun waitForShutdown (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
@@ -527,6 +528,21 @@ public final class aws/sdk/kotlin/crt/http/HttpHeaderBlock : java/lang/Enum {
527528
public static fun values ()[Laws/sdk/kotlin/crt/http/HttpHeaderBlock;
528529
}
529530

531+
public final class aws/sdk/kotlin/crt/http/HttpManagerMetrics {
532+
public fun <init> (JJJ)V
533+
public final fun component1 ()J
534+
public final fun component2 ()J
535+
public final fun component3 ()J
536+
public final fun copy (JJJ)Laws/sdk/kotlin/crt/http/HttpManagerMetrics;
537+
public static synthetic fun copy$default (Laws/sdk/kotlin/crt/http/HttpManagerMetrics;JJJILjava/lang/Object;)Laws/sdk/kotlin/crt/http/HttpManagerMetrics;
538+
public fun equals (Ljava/lang/Object;)Z
539+
public final fun getAvailableConcurrency ()J
540+
public final fun getLeasedConcurrency ()J
541+
public final fun getPendingConcurrencyAcquires ()J
542+
public fun hashCode ()I
543+
public fun toString ()Ljava/lang/String;
544+
}
545+
530546
public final class aws/sdk/kotlin/crt/http/HttpMonitoringOptions {
531547
public fun <init> ()V
532548
public fun <init> (II)V

aws-crt-kotlin/common/src/aws/sdk/kotlin/crt/http/HttpClientConnectionManager.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ import aws.sdk.kotlin.crt.Closeable
1414
public expect class HttpClientConnectionManager(options: HttpClientConnectionManagerOptions) :
1515
Closeable,
1616
AsyncShutdown {
17+
/**
18+
* The active metrics for this connection manager
19+
*/
20+
public val managerMetrics: HttpManagerMetrics
21+
1722
/**
1823
* The options this manager was configured with
1924
*/
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/*
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
package aws.sdk.kotlin.crt.http
6+
7+
public data class HttpManagerMetrics(
8+
public val availableConcurrency: Long,
9+
public val pendingConcurrencyAcquires: Long,
10+
public val leasedConcurrency: Long,
11+
)

aws-crt-kotlin/jvm/src/aws/sdk/kotlin/crt/http/HttpClientConnectionManagerJVM.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,16 @@ public actual class HttpClientConnectionManager actual constructor(
2424

2525
private val jniManager = HttpClientConnectionManagerJni.create(options.into())
2626

27+
public actual val managerMetrics: HttpManagerMetrics
28+
get() {
29+
val jniMetrics = jniManager.managerMetrics
30+
return HttpManagerMetrics(
31+
availableConcurrency = jniMetrics.availableConcurrency,
32+
pendingConcurrencyAcquires = jniMetrics.pendingConcurrencyAcquires,
33+
leasedConcurrency = jniMetrics.leasedConcurrency,
34+
)
35+
}
36+
2737
/**
2838
* Request an HttpClientConnection from the pool
2939
*/

aws-crt-kotlin/native/src/aws/sdk/kotlin/crt/http/HttpClientConnectionManagerNative.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ import aws.sdk.kotlin.crt.Closeable
1111
public actual class HttpClientConnectionManager actual constructor(
1212
public actual val options: HttpClientConnectionManagerOptions,
1313
) : Closeable, AsyncShutdown {
14+
public actual val managerMetrics: HttpManagerMetrics
15+
get() = TODO("Not yet implemented")
16+
1417
/**
1518
* Request an HttpClientConnection from the pool
1619
*/

0 commit comments

Comments
 (0)