[
https://issues.apache.org/jira/browse/QPID-6028?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15836034#comment-15836034
]
Alex Rudyy edited comment on QPID-6028 at 1/27/17 3:10 PM:
-----------------------------------------------------------
References to deleted queues are not removed from
org.apache.qpid.server.exchange.FanoutExchangeImpl.BindingSet#_unfilteredQueues.
As result, the memory is leaked and on routing of messages the debug logs are
reported as below:
{noformat}
DEBUG [IO-/127.0.0.1:51446] (o.a.q.s.m.RoutingResult) - Attempt to enqueue
message onto deleted queue
qpidsub_/_global__/ffc740f2-ca91-4cc9-b8f5-3fdecdff9b95_/nondurable
{noformat}
Steps to reproduce the issue
* enable debug logging on broker filelogger
* in a loop
** create topic subscriber
** send message into topic
** consume message with subscriber
** close subscriber
{code}
Topic queue = session.createTopic("foo");
MessageProducer messageProducer = session.createProducer(queue);
for(int i = 0; i<10; i++ )
{
MessageConsumer messageConsumer = session.createConsumer(queue);
TextMessage message = session.createTextMessage("Hello world! " + i);
messageProducer.send(message,
DeliveryMode.NON_PERSISTENT,
Message.DEFAULT_PRIORITY,
Message.DEFAULT_TIME_TO_LIVE);
TextMessage receivedMessage = (TextMessage) messageConsumer.receive(1000);
if (receivedMessage != null)
{
System.out.println(receivedMessage.getText());
}
else
{
System.out.println("No message received within the given timeout!");
}
messageConsumer.close();
}
{code}
* Check broker logs for presense of entries "Attempt to enqueue message onto
deleted queue"
# tail -f ${QPID_WORK}/log/qpid.log | grep "Attempt to enqueue message onto
deleted queue
was (Author: alex.rufous):
References to deleted queues are not removed from
org.apache.qpid.server.exchange.FanoutExchangeImpl.BindingSet#_unfilteredQueues.
As result, the memory is leaked and on routing of messages the debug logs are
reported as below:
{noformat}
DEBUG [IO-/127.0.0.1:51446] (o.a.q.s.m.RoutingResult) - Attempt to enqueue
message onto deleted queue
qpidsub_/_global__/ffc740f2-ca91-4cc9-b8f5-3fdecdff9b95_/nondurable
{noformat}
> [Java Broker] Configured model objects should have only one parent
> ------------------------------------------------------------------
>
> Key: QPID-6028
> URL: https://issues.apache.org/jira/browse/QPID-6028
> Project: Qpid
> Issue Type: Improvement
> Components: Java Broker
> Reporter: Rob Godfrey
> Assignee: Keith Wall
> Fix For: qpid-java-7.0
>
>
> Currently it is possible for a configured object to be defined as having
> multiple parents (of different classes)
> Thus a binding has a "queue" parent and an "exchange" parent, a consumer has
> a "session" parent and a "queue" parent, a virtualhostalias has a "port"
> parent and a virtialhost parent.
> This design should be changed.
> h5. Bindings
> Bindings should have a single exchange parent with the queue being an
> attribute (note that this probably also requires adding binding-key as an
> attribute and setting the name to queue/binding-key or some such.
> Exchange-wide validation on the binding-key will be required)
> h5. Consumers
> Since in AMQP 1.0 a link endpoint may outlive the session that created it, it
> makes sense for the parent of the Consumer to be the Queue. The Session will
> be a (derived) attribute of the Consumer.
> h5. VirtualhostAliases
> The primary parent of the virtualhostalias should be the (amqp) port. The
> virtualHost should be an attribute. On creating a VirtualHost we should
> offer to create an alias for the virtual host on all existing ports with the
> host name as the alias. On creating a port we should offer to create aliases
> for each of the existing virtualhosts.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]