Skip to content

Commit

Permalink
Got rid of unnecessary code in identity provider chain for credential…
Browse files Browse the repository at this point in the history
…s business metrics
  • Loading branch information
0marperez committed Oct 24, 2024
1 parent 287e050 commit cb76cd5
Show file tree
Hide file tree
Showing 4 changed files with 5 additions and 44 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
package aws.smithy.kotlin.runtime.identity

import aws.smithy.kotlin.runtime.InternalApi
import aws.smithy.kotlin.runtime.businessmetrics.BusinessMetrics
import aws.smithy.kotlin.runtime.businessmetrics.copyBusinessMetrics
import aws.smithy.kotlin.runtime.collections.*
import aws.smithy.kotlin.runtime.io.Closeable
import aws.smithy.kotlin.runtime.telemetry.logging.logger
Expand Down Expand Up @@ -39,15 +37,11 @@ public abstract class IdentityProviderChain<P : IdentityProvider, I : Identity>(
val chainException = lazy { IdentityProviderException("No identity could be resolved from the chain: $chain") }
for (provider in providers) {
logger.trace { "Attempting to resolve identity from $provider" }

val businessMetricsSnapshot = attributes.copyBusinessMetrics()

try {
@Suppress("UNCHECKED_CAST")
return@withSpan provider.resolve(attributes) as I
} catch (ex: Exception) {
logger.debug { "unable to resolve identity from $provider: ${ex.message}" }
if (attributes is MutableAttributes) attributes[BusinessMetrics] = businessMetricsSnapshot
chainException.value.addSuppressed(ex)
}
}
Expand Down
3 changes: 0 additions & 3 deletions runtime/runtime-core/api/runtime-core.api
Original file line number Diff line number Diff line change
Expand Up @@ -83,13 +83,11 @@ public abstract interface class aws/smithy/kotlin/runtime/businessmetrics/Busine

public final class aws/smithy/kotlin/runtime/businessmetrics/BusinessMetricsUtilsKt {
public static final fun containsBusinessMetric (Laws/smithy/kotlin/runtime/operation/ExecutionContext;Laws/smithy/kotlin/runtime/businessmetrics/BusinessMetric;)Z
public static final fun copyBusinessMetrics (Laws/smithy/kotlin/runtime/collections/Attributes;)Ljava/util/Set;
public static final fun emitBusinessMetric (Laws/smithy/kotlin/runtime/collections/Attributes;Laws/smithy/kotlin/runtime/businessmetrics/BusinessMetric;)V
public static final fun emitBusinessMetric (Laws/smithy/kotlin/runtime/operation/ExecutionContext;Laws/smithy/kotlin/runtime/businessmetrics/BusinessMetric;)V
public static final fun getAccountIdBasedEndpointAccountId ()Laws/smithy/kotlin/runtime/collections/AttributeKey;
public static final fun getBusinessMetrics ()Laws/smithy/kotlin/runtime/collections/AttributeKey;
public static final fun getServiceEndpointOverride ()Laws/smithy/kotlin/runtime/collections/AttributeKey;
public static final fun mergeBusinessMetrics (Laws/smithy/kotlin/runtime/collections/MutableAttributes;Laws/smithy/kotlin/runtime/collections/Attributes;)V
public static final fun removeBusinessMetric (Laws/smithy/kotlin/runtime/operation/ExecutionContext;Laws/smithy/kotlin/runtime/businessmetrics/BusinessMetric;)V
}

Expand Down Expand Up @@ -140,7 +138,6 @@ public final class aws/smithy/kotlin/runtime/collections/AttributesKt {
public static final fun get (Laws/smithy/kotlin/runtime/collections/Attributes;Laws/smithy/kotlin/runtime/collections/AttributeKey;)Ljava/lang/Object;
public static final fun isNotEmpty (Laws/smithy/kotlin/runtime/collections/Attributes;)Z
public static final fun merge (Laws/smithy/kotlin/runtime/collections/MutableAttributes;Laws/smithy/kotlin/runtime/collections/Attributes;)V
public static final fun mergeExcept (Laws/smithy/kotlin/runtime/collections/MutableAttributes;Laws/smithy/kotlin/runtime/collections/Attributes;Ljava/util/Set;)V
public static final fun mutableAttributes ()Laws/smithy/kotlin/runtime/collections/MutableAttributes;
public static final fun mutableAttributesOf (Lkotlin/jvm/functions/Function1;)Laws/smithy/kotlin/runtime/collections/MutableAttributes;
public static final fun putIfAbsent (Laws/smithy/kotlin/runtime/collections/MutableAttributes;Laws/smithy/kotlin/runtime/collections/AttributeKey;Ljava/lang/Object;)V
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,27 +81,9 @@ public enum class SmithyBusinessMetric(public override val identifier: String) :
/**
* Emits a business metric if the current [Attributes] instance is of type [ExecutionContext].
*/
public fun Attributes.emitBusinessMetric(metric: BusinessMetric) {
if (this is ExecutionContext) this.emitBusinessMetric(metric)
}

/**
* Creates a copy of an [Attributes] business metrics.
* Returns an empty set if no business metrics are available.
*/
public fun Attributes.copyBusinessMetrics(): MutableSet<String> {
val copy = mutableSetOf<String>()
if (!this.contains(BusinessMetrics)) return copy

this[BusinessMetrics].forEach { metric ->
copy.add(metric)
@InternalApi
public fun Attributes.emitBusinessMetric(metric: BusinessMetric): Unit =
when (this) {
is ExecutionContext -> this.emitBusinessMetric(metric)
else -> throw UnsupportedOperationException("Business metric emission is supported only for attributes of type 'execution context'")
}
return copy
}

/**
* Merges another [Attributes] business metrics into this instance of [MutableAttributes].
*/
public fun MutableAttributes.mergeBusinessMetrics(other: Attributes) {
this[BusinessMetrics] = this[BusinessMetrics].union(other[BusinessMetrics]).toMutableSet()
}
Original file line number Diff line number Diff line change
Expand Up @@ -115,18 +115,6 @@ public fun MutableAttributes.merge(other: Attributes) {
}
}

/**
* Merge another attributes instance into this set of attributes favoring [other] except for any keys that are
* specified in the [exceptions] set
*/
public fun MutableAttributes.mergeExcept(other: Attributes, exceptions: Set<AttributeKey<*>>) {
other.keys.forEach {
if (it in exceptions) return@forEach
@Suppress("UNCHECKED_CAST")
set(it as AttributeKey<Any>, other[it])
}
}

private class AttributesImpl constructor(seed: Attributes) : MutableAttributes {
private val map: MutableMap<AttributeKey<*>, Any> = mutableMapOf()
constructor() : this(emptyAttributes())
Expand Down

0 comments on commit cb76cd5

Please sign in to comment.