Skip to content

Commit 0681fa9

Browse files
authored
Add metric and span support for CBOR serialize/deserialize (#566)
1 parent d708d1d commit 0681fa9

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/protocol/DeserializeResponseMiddleware.java

+6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static software.amazon.smithy.go.codegen.GoStackStepMiddlewareGenerator.createDeserializeStepMiddleware;
1919
import static software.amazon.smithy.go.codegen.GoWriter.emptyGoTemplate;
2020
import static software.amazon.smithy.go.codegen.GoWriter.goTemplate;
21+
import static software.amazon.smithy.go.codegen.SmithyGoDependency.SMITHY_TRACING;
2122
import static software.amazon.smithy.go.codegen.integration.ProtocolGenerator.getDeserializeMiddlewareName;
2223

2324
import software.amazon.smithy.go.codegen.GoStdlibTypes;
@@ -61,6 +62,10 @@ public void accept(GoWriter writer) {
6162

6263
private GoWriter.Writable generateHandleDeserialize() {
6364
return goTemplate("""
65+
_, span := $startSpan:T(ctx, "OperationDeserializer")
66+
endTimer := startMetricTimer(ctx, "client.call.deserialization_duration")
67+
defer endTimer()
68+
defer span.End()
6469
out, metadata, err = next.HandleDeserialize(ctx, in)
6570
if err != nil {
6671
return out, metadata, err
@@ -76,6 +81,7 @@ private GoWriter.Writable generateHandleDeserialize() {
7681
return out, metadata, nil
7782
""",
7883
MapUtils.of(
84+
"startSpan", SMITHY_TRACING.func("StartSpan"),
7985
"response", generator.getApplicationProtocol().getResponseType(),
8086
"deserialize", generateDeserialize(),
8187
"errorf", GoStdlibTypes.Fmt.Errorf

codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/protocol/SerializeRequestMiddleware.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static software.amazon.smithy.go.codegen.GoStackStepMiddlewareGenerator.createSerializeStepMiddleware;
1919
import static software.amazon.smithy.go.codegen.GoWriter.emptyGoTemplate;
2020
import static software.amazon.smithy.go.codegen.GoWriter.goTemplate;
21+
import static software.amazon.smithy.go.codegen.SmithyGoDependency.SMITHY_TRACING;
2122

2223
import software.amazon.smithy.go.codegen.GoStdlibTypes;
2324
import software.amazon.smithy.go.codegen.GoWriter;
@@ -53,7 +54,6 @@ public void accept(GoWriter writer) {
5354
var name = ProtocolGenerator.getSerializeMiddlewareName(operation.getId(), ctx.getService(),
5455
generator.getProtocolName());
5556
var middleware = createSerializeStepMiddleware(name, ProtocolUtils.OPERATION_SERIALIZER_MIDDLEWARE_ID);
56-
5757
writer.write(middleware.asWritable(generateHandleSerialize(), emptyGoTemplate()));
5858
}
5959

@@ -63,6 +63,10 @@ public void accept(GoWriter writer) {
6363

6464
private GoWriter.Writable generateHandleSerialize() {
6565
return goTemplate("""
66+
_, span := $startSpan:T(ctx, "OperationSerializer")
67+
endTimer := startMetricTimer(ctx, "client.call.serialization_duration")
68+
defer endTimer()
69+
defer span.End()
6670
input, ok := in.Parameters.($input:P)
6771
if !ok {
6872
return out, metadata, $errorf:T("unexpected input type %T", in.Parameters)
@@ -81,6 +85,7 @@ private GoWriter.Writable generateHandleSerialize() {
8185
return next.HandleSerialize(ctx, in)
8286
""",
8387
MapUtils.of(
88+
"startSpan", SMITHY_TRACING.func("StartSpan"),
8489
"input", ctx.getSymbolProvider().toSymbol(input),
8590
"request", generator.getApplicationProtocol().getRequestType(),
8691
"route", generateRouteRequest(),

0 commit comments

Comments
 (0)