Alex Rudyy created QPIDJMS-337:
----------------------------------

             Summary: Consumer created on non-started connection can acquire 
messages from the broker due to unexpectedly given credits
                 Key: QPIDJMS-337
                 URL: https://issues.apache.org/jira/browse/QPIDJMS-337
             Project: Qpid JMS
          Issue Type: Bug
          Components: qpid-jms-client
            Reporter: Alex Rudyy


Flow command with credits is issued for the consumer link created on 
non-started connection. As result, such consumer can prematurely acquire 
messages from the broker.
For the code below 
{code}
Connection connection = factory.createConnection(username, password);
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//connection.stop();
MessageConsumer messageConsumer = session.createConsumer(queue);
connection.close();
{code} 
the following frame stack traces are logged
{noformat}
[1955726848:0] -> Open{ 
containerId='ID:cf0ea7b4-3b60-425d-a79b-8bc5ab0978eb:1', hostname='localhost', 
maxFrameSize=1048576, channelMax=32767, idleTimeOut=30000, 
outgoingLocales=null, incomingLocales=null, offeredCapabilities=null, 
desiredCapabilities=[sole-connection-for-container, DELAYED_DELIVERY, 
ANONYMOUS-RELAY, SHARED-SUBS], properties={product=QpidJMS, 
version=0.27.0-SNAPSHOT, platform=JVM: 1.8.0_121, 25.121-b13, Oracle 
Corporation, OS: Linux, 4.12.13-200.fc25.x86_64, amd64}}
[1955726848:0] <- Open{ containerId='1ba5f492-a39a-46f7-9906-58c4ec826802', 
hostname='null', maxFrameSize=262144, channelMax=255, idleTimeOut=0, 
outgoingLocales=null, incomingLocales=null, 
offeredCapabilities=[ANONYMOUS-RELAY, SHARED-SUBS, 
sole-connection-for-container], desiredCapabilities=null, 
properties={product=qpid, version=7.0.0-SNAPSHOT, 
qpid.build=332a3c08c14705ebab2853ab2e58f2f64a24f409, qpid.instance_name=Broker, 
sole-connection-detection-policy=0}}
[1955726848:0] -> Begin{remoteChannel=null, nextOutgoingId=1, 
incomingWindow=2047, outgoingWindow=2147483647, handleMax=65535, 
offeredCapabilities=null, desiredCapabilities=null, properties=null}
[1955726848:0] <- Begin{remoteChannel=0, nextOutgoingId=0, incomingWindow=8192, 
outgoingWindow=2048, handleMax=4294967295, offeredCapabilities=null, 
desiredCapabilities=null, properties=null}
[1955726848:1] -> Begin{remoteChannel=null, nextOutgoingId=1, 
incomingWindow=2047, outgoingWindow=2147483647, handleMax=65535, 
offeredCapabilities=null, desiredCapabilities=null, properties=null}
[1955726848:1] <- Begin{remoteChannel=1, nextOutgoingId=0, incomingWindow=8192, 
outgoingWindow=2048, handleMax=4294967295, offeredCapabilities=null, 
desiredCapabilities=null, properties=null}
[1955726848:1] -> 
Attach{name='qpid-jms:receiver:ID:9986ade6-6501-45f3-b22c-aa2785bf98c7:1:1:1:queue',
 handle=0, role=RECEIVER, sndSettleMode=UNSETTLED, rcvSettleMode=FIRST, 
source=Source{address='queue', durable=NONE, expiryPolicy=LINK_DETACH, 
timeout=0, dynamic=false, dynamicNodeProperties=null, distributionMode=null, 
filter=null, defaultOutcome=Modified{deliveryFailed=true, 
undeliverableHere=null, messageAnnotations=null}, outcomes=[amqp:accepted:list, 
amqp:rejected:list, amqp:released:list, amqp:modified:list], 
capabilities=[queue]}, target=Target{address='null', durable=NONE, 
expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, 
capabilities=null}, unsettled=null, incompleteUnsettled=false, 
initialDeliveryCount=null, maxMessageSize=null, offeredCapabilities=null, 
desiredCapabilities=null, properties=null}
[1955726848:1] <- 
Attach{name='qpid-jms:receiver:ID:9986ade6-6501-45f3-b22c-aa2785bf98c7:1:1:1:queue',
 handle=0, role=SENDER, sndSettleMode=UNSETTLED, rcvSettleMode=FIRST, 
source=Source{address='queue', durable=NONE, expiryPolicy=LINK_DETACH, 
timeout=0, dynamic=false, dynamicNodeProperties=null, distributionMode=null, 
filter=null, defaultOutcome=Modified{deliveryFailed=true, 
undeliverableHere=null, messageAnnotations=null}, outcomes=[amqp:accepted:list, 
amqp:released:list, amqp:rejected:list], capabilities=[queue]}, 
target=Target{address='null', durable=NONE, expiryPolicy=SESSION_END, 
timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}, 
unsettled={}, incompleteUnsettled=false, initialDeliveryCount=0, 
maxMessageSize=null, offeredCapabilities=[SHARED-SUBS], 
desiredCapabilities=null, properties={}}
[1955726848:1] -> Flow{nextIncomingId=0, incomingWindow=2047, nextOutgoingId=1, 
outgoingWindow=2147483647, handle=0, deliveryCount=0, linkCredit=1000, 
available=null, drain=false, echo=false, properties=null}
[1955726848:0] -> Close{error=null}
[1955726848:0] <- Close{error=null}
{noformat}
Stopping connection explicitly before consumer creation has no effect.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to