[ 
https://issues.apache.org/jira/browse/QPIDJMS-444?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jiri Daněk updated QPIDJMS-444:
-------------------------------
    Comment: was deleted

(was: edit: temporarily hidden)

> Heartbeating is affected by changes to wall clock time
> ------------------------------------------------------
>
>                 Key: QPIDJMS-444
>                 URL: https://issues.apache.org/jira/browse/QPIDJMS-444
>             Project: Qpid JMS
>          Issue Type: Bug
>          Components: qpid-jms-client
>    Affects Versions: 0.40.0
>            Reporter: Jiri Daněk
>            Priority: Minor
>
> Monotonic clock should be used, which will not be affected by changes to 
> system time.
> h3. reproducer
> Change the date like this
> {noformat}
> $ date --set "$(date -d '1 hour')"
> {noformat}
> while the client is in operation (example uses 
> https://github.com/rh-messaging/cli-java/tree/master/cli-qpid-jms)
> {noformat}
> $ PN_TRACE_FRM=1 java -jar 
> ~/Work/repos/cli-java/cli-qpid-jms/target/cli-qpid-jms-1.2.2-SNAPSHOT-LATEST.jar
>  sender amqpws://localhost:1126 --address address/0 --log-msgs=dict --count=2 
> --duration 9999999 --conn-heartbeat 1        [1270504454:0] -> Open{ 
> containerId='ID:fae6a385-77b2-4f3c-8c67-1ade8d303ed7:1', 
> hostname='localhost', maxFrameSize=1048576, channelMax=32767, 
> idleTimeOut=500, outgoingLocales=null, incomingLocales=null, 
> offeredCapabilities=null, desiredCapabilities=[sole-connection-for-container, 
> DELAYED_DELIVERY, ANONYMOUS-RELAY, SHARED-SUBS], properties={product=QpidJMS, 
> version=0.40.0, platform=JVM: 11.0.1-internal, 
> 11.0.1-internal+0-adhoc..jdk11u-jdk-11.0.113, Oracle Corporation, OS: Linux, 
> 4.14.98, amd64}}
> [1270504454:0] <- Open{ containerId='Standalone_En6PorJudCHF9o6', 
> hostname='null', maxFrameSize=16384, channelMax=32767, idleTimeOut=8000, 
> outgoingLocales=null, incomingLocales=null, 
> offeredCapabilities=[ANONYMOUS-RELAY], desiredCapabilities=null, 
> properties={product=qpid-dispatch-router, version=1.6.0-SNAPSHOT, 
> qd.conn-id=1}}
> [1270504454:0] -> Begin{remoteChannel=null, nextOutgoingId=1, 
> incomingWindow=2047, outgoingWindow=2147483647, handleMax=65535, 
> offeredCapabilities=null, desiredCapabilities=null, properties=null}
> [1270504454:0] <- Begin{remoteChannel=0, nextOutgoingId=0, 
> incomingWindow=2147483647, outgoingWindow=2147483647, handleMax=4294967295, 
> offeredCapabilities=null, desiredCapabilities=null, properties=null}
> [1270504454:1] -> Begin{remoteChannel=null, nextOutgoingId=1, 
> incomingWindow=2047, outgoingWindow=2147483647, handleMax=65535, 
> offeredCapabilities=null, desiredCapabilities=null, properties=null}
> [1270504454:1] <- Begin{remoteChannel=1, nextOutgoingId=0, 
> incomingWindow=2147483647, outgoingWindow=2147483647, handleMax=4294967295, 
> offeredCapabilities=null, desiredCapabilities=null, properties=null}
> [1270504454:1] -> 
> Attach{name='qpid-jms:sender:ID:b7a729e4-202f-4822-9b04-a151539493db:1:1:1:address/0',
>  handle=0, role=SENDER, sndSettleMode=UNSETTLED, rcvSettleMode=FIRST, 
> source=Source{address='ID:b7a729e4-202f-4822-9b04-a151539493db:1:1:1', 
> durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, 
> dynamicNodeProperties=null, distributionMode=null, filter=null, 
> defaultOutcome=null, outcomes=[amqp:accepted:list, amqp:rejected:list, 
> amqp:released:list, amqp:modified:list], capabilities=null}, 
> target=Target{address='address/0', durable=NONE, expiryPolicy=SESSION_END, 
> timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=[queue]}, 
> unsettled=null, incompleteUnsettled=false, initialDeliveryCount=0, 
> maxMessageSize=null, offeredCapabilities=null, 
> desiredCapabilities=[DELAYED_DELIVERY], properties=null}
> [1270504454:1] <- 
> Attach{name='qpid-jms:sender:ID:b7a729e4-202f-4822-9b04-a151539493db:1:1:1:address/0',
>  handle=0, role=RECEIVER, sndSettleMode=MIXED, rcvSettleMode=FIRST, 
> source=Source{address='ID:b7a729e4-202f-4822-9b04-a151539493db:1:1:1', 
> durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, 
> dynamicNodeProperties=null, distributionMode=null, filter=null, 
> defaultOutcome=null, outcomes=[amqp:accepted:list, amqp:rejected:list, 
> amqp:released:list, amqp:modified:list], capabilities=null}, 
> target=Target{address='address/0', durable=NONE, expiryPolicy=SESSION_END, 
> timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=[queue]}, 
> unsettled=null, incompleteUnsettled=false, initialDeliveryCount=0, 
> maxMessageSize=0, offeredCapabilities=null, desiredCapabilities=null, 
> properties=null}
> [1270504454:0] <- Empty Frame
> [...]
> [1270504454:0] <- Empty Frame
> [1270504454:0] <- Empty Frame
> {noformat}
> When time changes, observe exception
> {noformat}
> [1270504454:0] <- Close{error=Error{condition=amqp:resource-limit-exceeded, 
> description='local-idle-timeout expired', info=null}}
> [1270504454:0] -> Close{error=null}
> 11:08:49,009 ERROR Error while sending a message!
> javax.jms.ResourceAllocationException: local-idle-timeout expired [condition 
> = amqp:resource-limit-exceeded]
>         at 
> org.apache.qpid.jms.provider.amqp.AmqpSupport.convertToException(AmqpSupport.java:146)
>         at 
> org.apache.qpid.jms.provider.amqp.AmqpSupport.convertToException(AmqpSupport.java:118)
>         at 
> org.apache.qpid.jms.provider.amqp.AmqpConnection.processRemoteClose(AmqpConnection.java:150)
>         at 
> org.apache.qpid.jms.provider.amqp.AmqpProvider.processUpdates(AmqpProvider.java:914)
>         at 
> org.apache.qpid.jms.provider.amqp.AmqpProvider.onData(AmqpProvider.java:824)
>         at 
> org.apache.qpid.jms.transports.netty.NettyTcpTransport$NettyTcpTransportHandler.channelRead0(NettyTcpTransport.java:539)
>         at 
> org.apache.qpid.jms.transports.netty.NettyTcpTransport$NettyTcpTransportHandler.channelRead0(NettyTcpTransport.java:532)
>         at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
>         at 
> io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
>         at 
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
>         at 
> io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:799)
>         at 
> io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:433)
>         at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:330)
>         at 
> io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:909)
>         at java.base/java.lang.Thread.run(Thread.java:834)
> 11:08:49,010 ERROR ExceptionListener error detected! 
> local-idle-timeout expired [condition = amqp:resource-limit-exceeded]
> null
> javax.jms.ResourceAllocationException: local-idle-timeout expired [condition 
> = amqp:resource-limit-exceeded]
>         at 
> org.apache.qpid.jms.provider.amqp.AmqpSupport.convertToException(AmqpSupport.java:146)
>         at 
> org.apache.qpid.jms.provider.amqp.AmqpSupport.convertToException(AmqpSupport.java:118)
>         at 
> org.apache.qpid.jms.provider.amqp.AmqpConnection.processRemoteClose(AmqpConnection.java:150)
>         at 
> org.apache.qpid.jms.provider.amqp.AmqpProvider.processUpdates(AmqpProvider.java:914)
>         at 
> org.apache.qpid.jms.provider.amqp.AmqpProvider.onData(AmqpProvider.java:824)
>         at 
> org.apache.qpid.jms.transports.netty.NettyTcpTransport$NettyTcpTransportHandler.channelRead0(NettyTcpTransport.java:539)
>         at 
> org.apache.qpid.jms.transports.netty.NettyTcpTransport$NettyTcpTransportHandler.channelRead0(NettyTcpTransport.java:532)
>         at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
>         at 
> io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
>         at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
>         at 
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
>         at 
> io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:799)
>         at 
> io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:433)
>         at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:330)
>         at 
> io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:909)
>         at java.base/java.lang.Thread.run(Thread.java:834)
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to