Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,9 @@ public AmazonWebServiceRequest beforeMarshalling(AmazonWebServiceRequest request
PublishBatchRequest pmbRequest = (PublishBatchRequest) request;
// Extract the topic name from the ARN for DSM
String topicName = pmbRequest.getTopicArn();
if (null == topicName) {
return request; // no topic to attribute the batch to, leave it untouched
}
topicName = topicName.substring(topicName.lastIndexOf(':') + 1);

final ByteBuffer bytebuffer = this.getMessageAttributeValueToInject(request, topicName);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import com.amazonaws.AmazonClientException
import com.amazonaws.auth.AWSStaticCredentialsProvider
import com.amazonaws.auth.BasicAWSCredentials
import com.amazonaws.client.builder.AwsClientBuilder
import com.amazonaws.services.sns.AmazonSNSClient
import com.amazonaws.services.sns.AmazonSNSClientBuilder
import com.amazonaws.services.sns.model.MessageAttributeValue
import com.amazonaws.services.sns.model.PublishBatchRequest
import com.amazonaws.services.sns.model.PublishBatchRequestEntry
import com.amazonaws.services.sns.model.PublishRequest
import datadog.trace.agent.test.naming.VersionedNamingTestBase
import datadog.trace.agent.test.utils.TraceUtils
Expand Down Expand Up @@ -235,6 +238,15 @@ abstract class SnsClientTest extends VersionedNamingTestBase {
then:
noExceptionThrown()
}

def "SNS batch without topic ARN doesn't leak exception"() {
when:
snsClient.publishBatch(new PublishBatchRequest()
.withPublishBatchRequestEntries(new PublishBatchRequestEntry().withId("1").withMessage('sometext')))

then:
thrown(AmazonClientException)
}
}

class SnsClientV0Test extends SnsClientTest {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ public SdkRequest modifyRequest(ModifyRequest context, ExecutionAttributes execu
PublishBatchRequest request = (PublishBatchRequest) context.request();
// Get topic name for DSM
String snsTopicArn = request.topicArn();
if (null == snsTopicArn) {
return request; // no topic to attribute the batch to, leave it untouched
}
String snsTopicName = snsTopicArn.substring(snsTopicArn.lastIndexOf(':') + 1);
ArrayList<PublishBatchRequestEntry> entries = new ArrayList<>();
SdkBytes value = this.getMessageAttributeValueToInject(executionAttributes, snsTopicName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import software.amazon.awssdk.auth.credentials.AwsBasicCredentials
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
import software.amazon.awssdk.regions.Region
import software.amazon.awssdk.services.sns.SnsClient
import software.amazon.awssdk.core.exception.SdkException
import software.amazon.awssdk.services.sns.model.PublishBatchRequestEntry
import software.amazon.awssdk.services.sns.model.PublishResponse
import software.amazon.awssdk.services.sqs.SqsClient
import software.amazon.awssdk.services.sqs.model.QueueAttributeName
Expand Down Expand Up @@ -184,6 +186,16 @@ abstract class SnsClientTest extends VersionedNamingTestBase {
noExceptionThrown()
}

def "SNS batch without topic ARN doesn't leak exception"() {
when:
snsClient.publishBatch {
it.publishBatchRequestEntries(PublishBatchRequestEntry.builder().id("1").message("sometext").build())
}

then:
thrown(SdkException)
}

def "test propagation styles"() {
when:
TEST_WRITER.clear()
Expand Down