Skip to content

Commit

Permalink
add arn to aws kinesis sdk 1.11.272+
Browse files Browse the repository at this point in the history
  • Loading branch information
obenkenobi committed Oct 17, 2024
1 parent 8e82f7c commit bdf3ead
Show file tree
Hide file tree
Showing 31 changed files with 931 additions and 266 deletions.
2 changes: 1 addition & 1 deletion instrumentation/aws-java-sdk-kinesis-1.11.106/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ jar {
}

verifyInstrumentation {
passesOnly 'com.amazonaws:aws-java-sdk-kinesis:[1.11.106,)'
passesOnly 'com.amazonaws:aws-java-sdk-kinesis:[1.11.106,1.11.272)'
}
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
package com.agent.instrumentation.awsjavasdk2.services.kinesis;
package com.agent.instrumentation.awsjavasdk1.services.kinesis;

import com.amazonaws.AmazonWebServiceRequest;
import com.amazonaws.handlers.AsyncHandler_Instrumentation;
import com.newrelic.agent.bridge.AgentBridge;
import com.newrelic.api.agent.CloudParameters;
import com.newrelic.api.agent.NewRelic;
import com.newrelic.api.agent.Token;
import com.newrelic.api.agent.TracedMethod;

import java.net.URI;
import java.util.Map;
import java.util.function.Function;

public class KinesisUtil {

public static final String PLATFORM = "aws_kinesis_data_streams";
public static final String TRACE_CATEGORY = "Kinesis";

public static final Map<AmazonWebServiceRequest, Token> requestTokenMap = AgentBridge.collectionFactory.createConcurrentWeakKeyedMap();

private KinesisUtil() {}

public static void setTokenForRequest(AmazonWebServiceRequest request) {
Expand All @@ -27,14 +29,14 @@ public static void setTokenForRequest(AmazonWebServiceRequest request) {
}
}

public static void setTraceInformation(String kinesisOperation, AmazonWebServiceRequest request) {
public static void setTraceInformation(String kinesisOperation, AmazonWebServiceRequest request, String streamName) {
Token token = KinesisUtil.getToken(request);
if (token != null) {
token.linkAndExpire();
}
KinesisUtil.cleanToken(request);
TracedMethod tracedMethod = NewRelic.getAgent().getTransaction().getTracedMethod();
KinesisUtil.setTraceDetails(kinesisOperation, tracedMethod);
KinesisUtil.setTraceDetails(kinesisOperation, tracedMethod, streamName);
}

public static Token getToken(AmazonWebServiceRequest request) {
Expand All @@ -50,14 +52,22 @@ public static void cleanToken(AmazonWebServiceRequest request) {
}
}

public static void setTraceDetails(String kinesisOperation, TracedMethod tracedMethod) {
tracedMethod.setMetricName(TRACE_CATEGORY, kinesisOperation);
public static void setTraceDetails(String kinesisOperation, TracedMethod tracedMethod, String streamName) {
String traceName = createTraceName(kinesisOperation, streamName);
tracedMethod.setMetricName(TRACE_CATEGORY, traceName);
tracedMethod.reportAsExternal(createCloudParams());
}

public static String createTraceName(String kinesisOperation, String streamName) {
if (streamName != null && !streamName.isEmpty()) {
return kinesisOperation + "/" + streamName;
}
return kinesisOperation;
}

public static CloudParameters createCloudParams() {
// Todo: add arn to cloud parameters
return CloudParameters.provider(PLATFORM).build();
}


}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.amazonaws.services.kinesis;

import com.agent.instrumentation.awsjavasdk2.services.kinesis.KinesisUtil;
import com.agent.instrumentation.awsjavasdk1.services.kinesis.KinesisUtil;
import com.amazonaws.AmazonWebServiceRequest;
import com.amazonaws.handlers.AsyncHandler_Instrumentation;
import com.amazonaws.services.kinesis.model.AddTagsToStreamRequest;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.amazonaws.services.kinesis;

import com.agent.instrumentation.awsjavasdk2.services.kinesis.KinesisUtil;
import com.agent.instrumentation.awsjavasdk1.services.kinesis.KinesisUtil;
import com.amazonaws.services.kinesis.model.AddTagsToStreamRequest;
import com.amazonaws.services.kinesis.model.AddTagsToStreamResult;
import com.amazonaws.services.kinesis.model.CreateStreamRequest;
Expand Down Expand Up @@ -39,8 +39,6 @@
import com.amazonaws.services.kinesis.model.SplitShardResult;
import com.amazonaws.services.kinesis.model.UpdateShardCountRequest;
import com.amazonaws.services.kinesis.model.UpdateShardCountResult;
import com.newrelic.api.agent.NewRelic;
import com.newrelic.api.agent.Token;
import com.newrelic.api.agent.Trace;
import com.newrelic.api.agent.weaver.MatchType;
import com.newrelic.api.agent.weaver.Weave;
Expand All @@ -51,115 +49,115 @@ public class AmazonKinesisClient_Instrumentation {

@Trace(async = true, leaf = true)
final AddTagsToStreamResult executeAddTagsToStream(AddTagsToStreamRequest request) {
KinesisUtil.setTraceInformation("addTagsToStream", request);
KinesisUtil.setTraceInformation("addTagsToStream", request, request.getStreamName());
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final CreateStreamResult executeCreateStream(CreateStreamRequest request) {
KinesisUtil.setTraceInformation("createStream", request);
KinesisUtil.setTraceInformation("createStream", request, request.getStreamName());
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final DecreaseStreamRetentionPeriodResult executeDecreaseStreamRetentionPeriod(DecreaseStreamRetentionPeriodRequest request) {
KinesisUtil.setTraceInformation("decreaseStreamRetentionPeriod", request);
KinesisUtil.setTraceInformation("decreaseStreamRetentionPeriod", request, request.getStreamName());
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final DeleteStreamResult executeDeleteStream(DeleteStreamRequest request) {
KinesisUtil.setTraceInformation("deleteStream", request);
KinesisUtil.setTraceInformation("deleteStream", request, request.getStreamName());
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final DescribeLimitsResult executeDescribeLimits(DescribeLimitsRequest request) {
KinesisUtil.setTraceInformation("describeLimits", request);
KinesisUtil.setTraceInformation("describeLimits", request, null);
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final DescribeStreamResult executeDescribeStream(DescribeStreamRequest request) {
KinesisUtil.setTraceInformation("describeStream", request);
KinesisUtil.setTraceInformation("describeStream", request, request.getStreamName());
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final DisableEnhancedMonitoringResult executeDisableEnhancedMonitoring(DisableEnhancedMonitoringRequest request) {
KinesisUtil.setTraceInformation("disableEnhancedMonitoring", request);
KinesisUtil.setTraceInformation("disableEnhancedMonitoring", request, request.getStreamName());
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final EnableEnhancedMonitoringResult executeEnableEnhancedMonitoring(EnableEnhancedMonitoringRequest request) {
KinesisUtil.setTraceInformation("enableEnhancedMonitoring", request);
KinesisUtil.setTraceInformation("enableEnhancedMonitoring", request, request.getStreamName());
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final GetRecordsResult executeGetRecords(GetRecordsRequest request) {
KinesisUtil.setTraceInformation("getRecords", request);
KinesisUtil.setTraceInformation("getRecords", request, null);
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final GetShardIteratorResult executeGetShardIterator(GetShardIteratorRequest request) {
KinesisUtil.setTraceInformation("getShardIterator", request);
KinesisUtil.setTraceInformation("getShardIterator", request, request.getStreamName());
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final IncreaseStreamRetentionPeriodResult executeIncreaseStreamRetentionPeriod(IncreaseStreamRetentionPeriodRequest request) {
KinesisUtil.setTraceInformation("increaseStreamRetentionPeriod", request);
KinesisUtil.setTraceInformation("increaseStreamRetentionPeriod", request, request.getStreamName());
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final ListStreamsResult executeListStreams(ListStreamsRequest request) {
KinesisUtil.setTraceInformation("listStreams", request);
KinesisUtil.setTraceInformation("listStreams", request, null);
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final ListTagsForStreamResult executeListTagsForStream(ListTagsForStreamRequest request) {
KinesisUtil.setTraceInformation("listTagsForStream", request);
KinesisUtil.setTraceInformation("listTagsForStream", request, request.getStreamName());
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final MergeShardsResult executeMergeShards(MergeShardsRequest request) {
KinesisUtil.setTraceInformation("mergeShards", request);
KinesisUtil.setTraceInformation("mergeShards", request, request.getStreamName());
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final PutRecordResult executePutRecord(PutRecordRequest request) {
KinesisUtil.setTraceInformation("putRecord", request);
KinesisUtil.setTraceInformation("putRecord", request, request.getStreamName());
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final PutRecordsResult executePutRecords(PutRecordsRequest request) {
KinesisUtil.setTraceInformation("putRecords", request);
KinesisUtil.setTraceInformation("putRecords", request, request.getStreamName());
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final RemoveTagsFromStreamResult executeRemoveTagsFromStream(RemoveTagsFromStreamRequest request) {
KinesisUtil.setTraceInformation("removeTagsFromStream", request);
KinesisUtil.setTraceInformation("removeTagsFromStream", request, request.getStreamName());
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final SplitShardResult executeSplitShard(SplitShardRequest request) {
KinesisUtil.setTraceInformation("splitShard", request);
KinesisUtil.setTraceInformation("splitShard", request, request.getStreamName());
return Weaver.callOriginal();
}

@Trace(async = true, leaf = true)
final UpdateShardCountResult executeUpdateShardCount(UpdateShardCountRequest request) {
KinesisUtil.setTraceInformation("updateShardCount", request);
KinesisUtil.setTraceInformation("updateShardCount", request, request.getStreamName());
return Weaver.callOriginal();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.amazonaws.services.kinesis.model;

import com.newrelic.api.agent.weaver.SkipIfPresent;

@SkipIfPresent(originalName = "com.amazonaws.services.kinesis.model.ListShardsRequest")
public class ListShardsRequest_Skip {
}
Loading

0 comments on commit bdf3ead

Please sign in to comment.