[
https://issues.apache.org/jira/browse/QPIDJMS-516?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17222466#comment-17222466
]
Timothy A. Bish edited comment on QPIDJMS-516 at 10/28/20, 9:00 PM:
--------------------------------------------------------------------
>From a quick look at the logs it appears that your application attempts to
>close the consumer after logging the following:
{quote}
Message 92268 not received within timeout, stopping.
{quote}
The client then issues a draining flow frame with 1000 credits:
{quote}
{noformat}
[489474962:1] -> Flow{nextIncomingId=91861, incomingWindow=2047,
nextOutgoingId=1, outgoingWindow=2147483647, handle=0, deliveryCount=542316,
linkCredit=1000, available=null, drain=true, echo=false, properties=null}
{noformat}
{quote}
Following this the remote should either fulfil the drain by sending all 1000
messages or by responding that the link credit is drained. It appears to go on
sending in Transfers at a fairly leisurely pace such that after the default 1
minute drain timeout the drain has still not been fulfilled and so the client
signals the error as instructed by the current configuration. You have a
couple options which are either reduce the prefetch size such that the remote
can send the messages in time, or extend the drain timeout to account for the
slow delivery pace, or both I suppose.
This does not appear to be a client issue from what I can see in the logs.
was (Author: tabish121):
>From a quick look at the logs it appears that your application attempts to
>close the consumer after logging the following:
{quote}
Message 92268 not received within timeout, stopping.
{quote}
The client then issues a draining flow frame with 1000 credits:
{quote}
[489474962:1] -> Flow{nextIncomingId=91861, incomingWindow=2047,
nextOutgoingId=1, outgoingWindow=2147483647, handle=0, deliveryCount=542316,
linkCredit=1000, available=null, drain=true, echo=false, properties=null}
{quote}
Following this the remote should either fulfil the drain by sending all 1000
messages or by responding that the link credit is drained. It appears to go on
sending in Transfers at a fairly leisurely pace such that after the default 1
minute drain timeout the drain has still not been fulfilled and so the client
signals the error as instructed by the current configuration. You have a
couple options which are either reduce the prefetch size such that the remote
can send the messages in time, or extend the drain timeout to account for the
slow delivery pace, or both I suppose.
This does not appear to be a client issue from what I can see in the logs.
> Constantly receiving drain request timeouts
> -------------------------------------------
>
> Key: QPIDJMS-516
> URL: https://issues.apache.org/jira/browse/QPIDJMS-516
> Project: Qpid JMS
> Issue Type: Bug
> Components: qpid-jms-client
> Affects Versions: 0.54.0
> Reporter: Sai P
> Priority: Major
> Attachments: amqp_json.log.gz
>
>
> We notice a behavior where once we are able to connect and receive messages,
> at some point, the consumer stops sending acknowledgements. After 60 seconds,
> we get hit the drain timeout exception even though the messages are being
> sent.
> Reproducible using one of the examples provided
> [https://github.com/apache/qpid-jms/blob/master/qpid-jms-examples/src/main/java/org/apache/qpid/jms/example/Receiver.java]
> org.apache.qpid.jms.JmsOperationTimedOutException: Remote did not respond to
> a drain request in timeorg.apache.qpid.jms.JmsOperationTimedOutException:
> Remote did not respond to a drain request in time at
> org.apache.qpid.jms.provider.exceptions.ProviderOperationTimedOutException.toJMSException(ProviderOperationTimedOutException.java:39)
> at
> org.apache.qpid.jms.provider.exceptions.ProviderOperationTimedOutException.toJMSException(ProviderOperationTimedOutException.java:25)
> at
> org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:80)
> at
> org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:112)
> at org.apache.qpid.jms.JmsConnection.pull(JmsConnection.java:915) at
> org.apache.qpid.jms.JmsConnection.pull(JmsConnection.java:899) at
> org.apache.qpid.jms.JmsMessageConsumer.performPullIfRequired(JmsMessageConsumer.java:732)
> at
> org.apache.qpid.jms.JmsMessageConsumer.dequeue(JmsMessageConsumer.java:332)
> at
> org.apache.qpid.jms.JmsMessageConsumer.receive(JmsMessageConsumer.java:213)
> at com.aireon.amqp.App.main(App.java:85)Caused by:
> org.apache.qpid.jms.provider.exceptions.ProviderOperationTimedOutException:
> Remote did not respond to a drain request in time at
> org.apache.qpid.jms.provider.amqp.AmqpConsumer.lambda$stop$1(AmqpConsumer.java:184)
> at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98) at
> io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:170)
> at
> io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
> at
> io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
> at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) at
> io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
> at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
> at java.base/java.lang.Thread.run(Thread.java:832)
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]