SQS Receive activity encountered error [] intermittently

SQS Receive activity encountered error [] intermittently

book

Article ID: KB0070936

calendar_today

Updated On:

Products Versions
TIBCO ActiveMatrix BusinessWorks Plug-in for Amazon SQS and SNS 6.5.2, 6.6.0

Description

When using the 'Receive' activity to receive message from AWS SQS, the activity prints below error log:

ERROR [SQSSNSThread] c.t.t.p.a.s.r.r.ReceiveActivity - Process starter [<application name>] worker thread encountered error: []

and also below stack is printed: 
com.amazonaws.AbortedException: 
    at com.amazonaws.internal.SdkFilterInputStream.abortIfNeeded(SdkFilterInputStream.java:61)
    at com.amazonaws.internal.SdkFilterInputStream.read(SdkFilterInputStream.java:83)
    at com.amazonaws.event.ProgressInputStream.read(ProgressInputStream.java:158)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager$RewindableInputStream.readAndBuffer(XMLEntityManager.java:3024)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:704)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1396)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDocumentEntity(XMLEntityManager.java:1347)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.setInputSource(XMLDocumentScannerImpl.java:256)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.setInputSource(XMLStreamReaderImpl.java:225)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.<init>(XMLStreamReaderImpl.java:210)
    at java.xml/com.sun.xml.internal.stream.XMLInputFactoryImpl.getXMLStreamReaderImpl(XMLInputFactoryImpl.java:262)
    at java.xml/com.sun.xml.internal.stream.XMLInputFactoryImpl.createXMLStreamReader(XMLInputFactoryImpl.java:129)
    at java.xml/com.sun.xml.internal.stream.XMLInputFactoryImpl.createXMLEventReader(XMLInputFactoryImpl.java:78)
    at com.amazonaws.http.StaxResponseHandler.handle(StaxResponseHandler.java:105)
    at com.amazonaws.http.StaxResponseHandler.handle(StaxResponseHandler.java:42)
    at com.amazonaws.http.response.AwsResponseHandlerAdapter.handle(AwsResponseHandlerAdapter.java:69)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleResponse(AmazonHttpClient.java:1734)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleSuccessResponse(AmazonHttpClient.java:1454)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1369)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1145)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:802)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:770)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:744)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:704)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:686)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:550)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:530)
    at com.amazonaws.services.sqs.AmazonSQSClient.doInvoke(AmazonSQSClient.java:2283)
    at com.amazonaws.services.sqs.AmazonSQSClient.invoke(AmazonSQSClient.java:2250)
    at com.amazonaws.services.sqs.AmazonSQSClient.invoke(AmazonSQSClient.java:2239)
    at com.amazonaws.services.sqs.AmazonSQSClient.executeReceiveMessage(AmazonSQSClient.java:1665)
    at com.amazonaws.services.sqs.AmazonSQSClient.receiveMessage(AmazonSQSClient.java:1633)
    at com.tibco.tci.plugin.aws.sqs.runtime.receive.Receiver.run(Receiver.java:143)
    at java.base/java.lang.Thread.run(Thread.java:834)
 

Environment

All systems

Resolution

This usually happens to the application that has flowlimit set on the application or to the SQS Receive component. When the engine flow control tries to stop the Receive activity from receiving more messages, it may interrupt the ongoing pulling request. If the message is being received during the same time frame, the plugin could throw such an error.

The message will marked as failed to be delivered on the SQS side, and the SQS will always retry the message until one of the following conditions is met:
1. the message is deleted by the client.
2. the failed attempts reaches maximum receives counts. Then the message will be moved to the DLQ. 

To make sure the message is received correctly by the plugin:
On the AWS side, if the DLQ is enabled, make sure the 'Maximum Receives' is set to a larger value so that more retry attempts are made.
If DLQ is not enabled, then there is nothing to worry about. 

Also, there is no message loss when this error occurs.

Issue/Introduction

SQS Receive activity encountered error [] intermittently