Author: rgodfrey
Date: Wed Oct 21 15:51:32 2015
New Revision: 1709868
URL: http://svn.apache.org/viewvc?rev=1709868&view=rev
Log:
QPID-6797 : Stop creating unnecessary objects (derived from examining profiler
output)
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/QueueRunner.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.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/UnacknowledgedMessageMapImpl.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/framing/FieldTable.java
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/QueueRunner.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/QueueRunner.java?rev=1709868&r1=1709867&r2=1709868&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/QueueRunner.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/QueueRunner.java
Wed Oct 21 15:51:32 2015
@@ -54,11 +54,13 @@ public class QueueRunner implements Runn
private final AtomicLong _lastRunAgain = new AtomicLong();
private final AtomicLong _lastRunTime = new AtomicLong();
private final AccessControlContext _context;
+ private final String _taskName;
public QueueRunner(AbstractQueue queue, AccessControlContext context)
{
_queue = queue;
_context = context;
+ _taskName = "Queue Runner[" + _queue.getName() + "]";
}
@Override
@@ -94,7 +96,7 @@ public class QueueRunner implements Runn
{
if(_scheduled.compareAndSet(IDLE, SCHEDULED))
{
- _queue.execute("Queue Runner["+ _queue.getName()+"]",
QueueRunner.this, _context);
+ _queue.execute(_taskName, QueueRunner.this, _context);
}
}
}
@@ -112,7 +114,7 @@ public class QueueRunner implements Runn
_stateChange.set(true);
if(_scheduled.compareAndSet(IDLE, SCHEDULED))
{
- _queue.execute("Queue Runner["+ _queue.getName()+"]", this,
_context);
+ _queue.execute(_taskName, this, _context);
}
}
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java?rev=1709868&r1=1709867&r2=1709868&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java
Wed Oct 21 15:51:32 2015
@@ -78,8 +78,9 @@ import org.apache.qpid.server.transport.
public class SecurityManager
{
+ private static final SystemPrincipal SYSTEM_PRINCIPAL = new
SystemPrincipal();
private static final Subject SYSTEM = new Subject(true,
- Collections.singleton(new
SystemPrincipal()),
+
Collections.singleton(SYSTEM_PRINCIPAL),
Collections.emptySet(),
Collections.emptySet());
@@ -162,7 +163,7 @@ public class SecurityManager
public static boolean isSystemSubject(final Subject subject)
{
- return !(subject == null ||
subject.getPrincipals(SystemPrincipal.class).isEmpty());
+ return subject != null &&
subject.getPrincipals().contains(SYSTEM_PRINCIPAL);
}
public static AuthenticatedPrincipal getCurrentUser()
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=1709868&r1=1709867&r2=1709868&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 21 15:51:32 2015
@@ -1608,7 +1608,7 @@ public class AMQChannel
private class MessageAcknowledgeAction implements ServerTransaction.Action
{
- private final Collection<MessageInstance> _ackedMessages;
+ private Collection<MessageInstance> _ackedMessages;
public MessageAcknowledgeAction(Collection<MessageInstance>
ackedMessages)
{
@@ -1626,7 +1626,7 @@ public class AMQChannel
}
finally
{
- _ackedMessages.clear();
+ _ackedMessages = Collections.emptySet();
}
}
@@ -1653,7 +1653,7 @@ public class AMQChannel
}
finally
{
- _ackedMessages.clear();
+ _ackedMessages = Collections.emptySet();
}
}
Modified:
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/UnacknowledgedMessageMapImpl.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/UnacknowledgedMessageMapImpl.java?rev=1709868&r1=1709867&r2=1709868&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/UnacknowledgedMessageMapImpl.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/UnacknowledgedMessageMapImpl.java
Wed Oct 21 15:51:32 2015
@@ -21,7 +21,9 @@
package org.apache.qpid.server.protocol.v0_8;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -146,18 +148,38 @@ public class UnacknowledgedMessageMapImp
public Collection<MessageInstance> acknowledge(long deliveryTag, boolean
multiple)
{
- Map<Long, MessageInstance> ackedMessageMap = new
LinkedHashMap<Long,MessageInstance>();
- collect(deliveryTag, multiple, ackedMessageMap);
- remove(ackedMessageMap);
- List<MessageInstance> acknowledged = new ArrayList<>();
- for(MessageInstance instance : ackedMessageMap.values())
+ if(multiple)
{
- if(instance.lockAcquisition())
+ Map<Long, MessageInstance> ackedMessageMap = new
LinkedHashMap<Long, MessageInstance>();
+ collect(deliveryTag, multiple, ackedMessageMap);
+ remove(ackedMessageMap);
+ List<MessageInstance> acknowledged = new ArrayList<>();
+ for (MessageInstance instance : ackedMessageMap.values())
{
- acknowledged.add(instance);
+ if (instance.lockAcquisition())
+ {
+ acknowledged.add(instance);
+ }
}
+ return acknowledged;
+ }
+ else
+ {
+ MessageInstance instance;
+ synchronized (_lock)
+ {
+ instance = remove(deliveryTag);
+ }
+ if(instance != null && instance.lockAcquisition())
+ {
+ return Collections.singleton(instance);
+ }
+ else
+ {
+ return Collections.emptySet();
+ }
+
}
- return acknowledged;
}
private void collect(long key, Map<Long, MessageInstance> msgs)
Modified:
qpid/java/trunk/common/src/main/java/org/apache/qpid/framing/FieldTable.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/common/src/main/java/org/apache/qpid/framing/FieldTable.java?rev=1709868&r1=1709867&r2=1709868&view=diff
==============================================================================
---
qpid/java/trunk/common/src/main/java/org/apache/qpid/framing/FieldTable.java
(original)
+++
qpid/java/trunk/common/src/main/java/org/apache/qpid/framing/FieldTable.java
Wed Oct 21 15:51:32 2015
@@ -52,7 +52,7 @@ public class FieldTable
private static final boolean STRICT_AMQP =
Boolean.valueOf(System.getProperty(STRICT_AMQP_NAME, "false"));
private QpidByteBuffer _encodedForm;
- private LinkedHashMap<AMQShortString, AMQTypedValue> _properties = null;
+ private Map<AMQShortString, AMQTypedValue> _properties = null;
private long _encodedSize;
private static final int INITIAL_HASHMAP_CAPACITY = 16;
private static final int INITIAL_ENCODED_FORM_SIZE = 256;
@@ -966,7 +966,7 @@ public class FieldTable
{
if (_encodedForm != null)
{
- _properties = new LinkedHashMap<>();
+ _properties = Collections.emptyMap();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]