[jboss-jira] [JBoss JIRA] Commented: (JBMESSAGING-1851) Failure to send changeRate message results in idle client
Yong Hao Gao (JIRA)
jira-events at lists.jboss.org
Sat Mar 19 02:20:50 EDT 2011
[ https://issues.jboss.org/browse/JBMESSAGING-1851?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12589079#comment-12589079 ]
Yong Hao Gao commented on JBMESSAGING-1851:
-------------------------------------------
Added two attributes to ConnectionFactory mbean.
1. MaxRetryChangeRate
Maximum attempts to retry sending change rate message for a consumer. Default is zero (no retry).
This attribute is useful when there is some random network disturbance between a client and the JBM server. A
JMS client can inform the JMS server to deliver more messages to it when there is no more messages in the client
buffer, by sending a changeRate message to the server. If the changeRate message failed to reach the server due to
a temporary network disturbance, the server won't start delivering messages to the client and the client receives no
more messages even the messages at the server keep building up. With this parameter, the client can retry sending
of the changeRate messages in case of failure so this issue can be greatly alleviated .
The valid values for this attribute are zero (default, no retry), -1 (retry forever), and any positive long type number.
It is used together with attribute RetryChangeRateInterval.
2. RetryChangeRateInterval
Interval (milliseconds) between two attempts of retrying to send change rate message. Default is 5000.
This attribute takes effect only if the MaxRetryChangeRate attribute is not zero.
> Failure to send changeRate message results in idle client
> ---------------------------------------------------------
>
> Key: JBMESSAGING-1851
> URL: https://issues.jboss.org/browse/JBMESSAGING-1851
> Project: JBoss Messaging
> Issue Type: Bug
> Affects Versions: 1.4.0.SP3.CP09
> Reporter: Justin Bertram
> Assignee: Yong Hao Gao
>
> If a client fails to send a changeRate message, e.g.:
> ERROR [org.jboss.jms.client.container.ClientConsumer] Failed to send changeRate message
> org.jboss.jms.exception.MessagingNetworkFailureException
> at org.jboss.jms.client.delegate.DelegateSupport.handleThrowable(DelegateSupport.java:245)
> at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:205)
> at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:160)
> at org.jboss.jms.client.delegate.ClientConsumerDelegate.org$jboss$jms$client$delegate$ClientConsumerDelegate$changeRate$aop(ClientConsumerDelegate.java:138)
> at org.jboss.jms.client.delegate.ClientConsumerDelegate$changeRate_N952316153687074823.invokeNext(ClientConsumerDelegate$changeRate_N952316153687074823.java)
> at org.jboss.jms.client.container.FailoverValveInterceptor.invoke(FailoverValveInterceptor.java:92)
> at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:105)
> at org.jboss.jms.client.delegate.ClientConsumerDelegate$changeRate_N952316153687074823.invokeNext(ClientConsumerDelegate$changeRate_N952316153687074823.java)
> at org.jboss.jms.client.container.ClosedInterceptor.invoke(ClosedInterceptor.java:172)
> at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:105)
> at org.jboss.jms.client.delegate.ClientConsumerDelegate$changeRate_N952316153687074823.invokeNext(ClientConsumerDelegate$changeRate_N952316153687074823.java)
> at org.jboss.jms.client.delegate.ClientConsumerDelegate.changeRate(ClientConsumerDelegate.java)
> at org.jboss.jms.client.container.ClientConsumer.sendChangeRateMessage(ClientConsumer.java:754)
> at org.jboss.jms.client.container.ClientConsumer.checkSendChangeRate(ClientConsumer.java:913)
> at org.jboss.jms.client.container.ClientConsumer.access$1300(ClientConsumer.java:56)
> at org.jboss.jms.client.container.ClientConsumer$ListenerRunner.run(ClientConsumer.java:1026)
> at org.jboss.messaging.util.OrderedExecutorFactory$ChildExecutor.run(OrderedExecutorFactory.java:104)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:619)
> Caused by: java.rmi.MarshalException: Failed to communicate. Problem during marshalling/unmarshalling; nested exception is:
> java.io.EOFException
> at org.jboss.remoting.transport.socket.SocketClientInvoker.handleException(SocketClientInvoker.java:131)
> at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.handleOtherException(MicroSocketClientInvoker.java:812)
> at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:725)
> at org.jboss.remoting.transport.bisocket.BisocketClientInvoker.transport(BisocketClientInvoker.java:458)
> at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:141)
> at org.jboss.remoting.Client.invoke(Client.java:1935)
> at org.jboss.remoting.Client.invoke(Client.java:788)
> at org.jboss.remoting.Client.invoke(Client.java:776)
> at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:189)
> ... 18 more
> Caused by: java.io.EOFException
> at java.io.DataInputStream.readInt(DataInputStream.java:375)
> at org.jboss.jms.wireformat.JMSWireFormat.read(JMSWireFormat.java:288)
> at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.versionedRead(MicroSocketClientInvoker.java:1036)
> at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:694)
> ... 24 more
> The server will never know that the client needs more messages. Therefore the client will just sit there idle while messages on the server accumulate in its subscription.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list