Author: kwall
Date: Wed Oct 5 16:50:57 2016
New Revision: 1763467
URL: http://svn.apache.org/viewvc?rev=1763467&view=rev
Log:
QPID-7447: [Java Broker] Avoid empty iterator garbage when processing pending
work for sessions with no consumers
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/AMQPConnection.java
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8Impl.java
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0.java
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/AMQPConnection.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/AMQPConnection.java?rev=1763467&r1=1763466&r2=1763467&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/AMQPConnection.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/AMQPConnection.java
Wed Oct 5 16:50:57 2016
@@ -82,6 +82,11 @@ public interface AMQPConnection<C extend
void stopConnection();
+ /**
+ * Returns the a list of session models. Required to return a copy.
+ *
+ * @return list of sessions
+ */
List<? extends AMQSessionModel<?>> getSessionModels();
void resetStatistics();
Modified:
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java?rev=1763467&r1=1763466&r2=1763467&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
Wed Oct 5 16:50:57 2016
@@ -506,7 +506,7 @@ public class ServerConnection extends Co
private Iterator<? extends AMQSessionModel<?>> _sessionIterator;
private ProcessPendingIterator()
{
- _sessionsWithPending = new ArrayList<>(getSessionModels());
+ _sessionsWithPending = getSessionModels();
_sessionIterator = _sessionsWithPending.iterator();
}
Modified:
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java?rev=1763467&r1=1763466&r2=1763467&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java
Wed Oct 5 16:50:57 2016
@@ -1209,7 +1209,7 @@ public class ServerSession extends Sessi
consumerListNeedsRefreshing = true;
}
- Iterator<ConsumerTarget> iter = _consumersWithPendingWork.iterator();
+ Iterator<ConsumerTarget> iter = _consumersWithPendingWork.isEmpty() ?
Collections.<ConsumerTarget>emptyIterator() :
_consumersWithPendingWork.iterator();
boolean consumerHasMoreWork = false;
while(iter.hasNext())
Modified:
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java?rev=1763467&r1=1763466&r2=1763467&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
Wed Oct 5 16:50:57 2016
@@ -3782,7 +3782,7 @@ public class AMQChannel
consumerListNeedsRefreshing = true;
}
- Iterator<ConsumerTarget_0_8> iter =
_consumersWithPendingWork.iterator();
+ Iterator<ConsumerTarget_0_8> iter =
_consumersWithPendingWork.isEmpty() ?
Collections.<ConsumerTarget_0_8>emptyIterator() :
_consumersWithPendingWork.iterator();
boolean consumerHasMoreWork = false;
while(iter.hasNext())
Modified:
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8Impl.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8Impl.java?rev=1763467&r1=1763466&r2=1763467&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8Impl.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8Impl.java
Wed Oct 5 16:50:57 2016
@@ -1418,7 +1418,7 @@ public class AMQPConnection_0_8Impl
private Iterator<? extends AMQSessionModel<?>> _sessionIterator;
private ProcessPendingIterator()
{
- _sessionsWithPending = new ArrayList<>(getSessionModels());
+ _sessionsWithPending = getSessionModels();
_sessionIterator = _sessionsWithPending.iterator();
}
Modified:
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0.java?rev=1763467&r1=1763466&r2=1763467&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0.java
Wed Oct 5 16:50:57 2016
@@ -1536,7 +1536,7 @@ public class AMQPConnection_1_0 extends
private Iterator<? extends AMQSessionModel<?>> _sessionIterator;
private ProcessPendingIterator()
{
- _sessionsWithPending = new ArrayList<>(getSessionModels());
+ _sessionsWithPending = getSessionModels();
_sessionIterator = _sessionsWithPending.iterator();
}
Modified:
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java?rev=1763467&r1=1763466&r2=1763467&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java
Wed Oct 5 16:50:57 2016
@@ -1544,7 +1544,7 @@ public class Session_1_0 implements AMQS
consumerListNeedsRefreshing = true;
}
- Iterator<ConsumerTarget_1_0> iter =
_consumersWithPendingWork.iterator();
+ Iterator<ConsumerTarget_1_0> iter =
_consumersWithPendingWork.isEmpty() ?
Collections.<ConsumerTarget_1_0>emptyIterator() :
_consumersWithPendingWork.iterator();
boolean consumerHasMoreWork = false;
while(iter.hasNext())
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]