You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2014/05/16 13:08:52 UTC

svn commit: r1595155 - in /qpid/trunk/qpid/java: broker-core/src/main/java/org/apache/qpid/server/model/adapter/ broker-core/src/main/java/org/apache/qpid/server/stats/ broker-core/src/main/java/org/apache/qpid/server/virtualhost/ broker-core/src/test/...

Author: kwall
Date: Fri May 16 11:08:51 2014
New Revision: 1595155

URL: http://svn.apache.org/r1595155
Log:
QPID-5766: Intitialisation of StatisticsCounter objects can lead to NPE.

Patch Supplied by Andrew MacBean <an...@gmail.com>.

Modified:
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/stats/StatisticsGatherer.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
    qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/consumer/MockConsumer.java
    qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java
    qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
    qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java
    qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/client/ssl/SSLTest.java

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java?rev=1595155&r1=1595154&r2=1595155&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java Fri May 16 11:08:51 2014
@@ -82,7 +82,7 @@ public class BrokerAdapter extends Abstr
     private BrokerOptions _brokerOptions;
 
     private Timer _reportingTimer;
-    private StatisticsCounter _messagesDelivered, _dataDelivered, _messagesReceived, _dataReceived;
+    private final StatisticsCounter _messagesDelivered, _dataDelivered, _messagesReceived, _dataReceived;
 
     @ManagedAttributeField
     private String _defaultVirtualHost;
@@ -119,7 +119,10 @@ public class BrokerAdapter extends Abstr
             authManager.addUser(BrokerOptions.MANAGEMENT_MODE_USER_NAME, _brokerOptions.getManagementModePassword());
             _managementModeAuthenticationProvider = authManager;
         }
-        initialiseStatistics();
+        _messagesDelivered = new StatisticsCounter("messages-delivered");
+        _dataDelivered = new StatisticsCounter("bytes-delivered");
+        _messagesReceived = new StatisticsCounter("messages-received");
+        _dataReceived = new StatisticsCounter("bytes-received");
     }
 
     public void onValidate()
@@ -243,9 +246,6 @@ public class BrokerAdapter extends Abstr
             addVirtualHostNode(virtualHostNode);
         }
 
-
-        initialiseStatistics();
-
         initialiseStatisticsReporting();
        // changeChildState(State.ACTIVE, false);
         if (isManagementMode())
@@ -995,14 +995,6 @@ public class BrokerAdapter extends Abstr
         }
     }
 
-    public void initialiseStatistics()
-    {
-        _messagesDelivered = new StatisticsCounter("messages-delivered");
-        _dataDelivered = new StatisticsCounter("bytes-delivered");
-        _messagesReceived = new StatisticsCounter("messages-received");
-        _dataReceived = new StatisticsCounter("bytes-received");
-    }
-
     private class StatisticsReportingTask extends TimerTask
     {
         private final int DELIVERED = 0;

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/stats/StatisticsGatherer.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/stats/StatisticsGatherer.java?rev=1595155&r1=1595154&r2=1595155&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/stats/StatisticsGatherer.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/stats/StatisticsGatherer.java Fri May 16 11:08:51 2014
@@ -36,17 +36,6 @@ package org.apache.qpid.server.stats;
 public interface StatisticsGatherer
 {
     /**
-     * Initialise the statistics gathering for this object.
-     * 
-     * This method is responsible for creating any {@link StatisticsCounter}
-     * objects and for determining whether statistics generation should be
-     * enabled, by checking broker and system configuration.
-     * 
-     * @see StatisticsCounter#DISABLE_STATISTICS
-     */
-    void initialiseStatistics();
-    
-    /**
      * This method is responsible for registering the receipt of a message
      * with the counters, and also for passing this notification to any parent
      * {@link StatisticsGatherer}s. If statistics generation is not enabled,

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1595155&r1=1595154&r2=1595155&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java Fri May 16 11:08:51 2014
@@ -110,7 +110,7 @@ public abstract class AbstractVirtualHos
 
     private volatile VirtualHostState _state = VirtualHostState.INITIALISING;
 
-    private StatisticsCounter _messagesDelivered, _dataDelivered, _messagesReceived, _dataReceived;
+    private final StatisticsCounter _messagesDelivered, _dataDelivered, _messagesReceived, _dataReceived;
 
     private final Map<String, LinkRegistry> _linkRegistry = new HashMap<String, LinkRegistry>();
     private boolean _blocked;
@@ -173,6 +173,10 @@ public abstract class AbstractVirtualHos
 
         _defaultDestination = new DefaultDestination(this);
 
+        _messagesDelivered = new StatisticsCounter("messages-delivered-" + getName());
+        _dataDelivered = new StatisticsCounter("bytes-delivered-" + getName());
+        _messagesReceived = new StatisticsCounter("messages-received-" + getName());
+        _dataReceived = new StatisticsCounter("bytes-received-" + getName());
     }
 
     public void onValidate()
@@ -245,8 +249,6 @@ public abstract class AbstractVirtualHos
 
         registerSystemNodes();
 
-        initialiseStatistics();
-
         Subject.doAs(SecurityManager.getSubjectWithAddedSystemRights(), new PrivilegedAction<Object>()
         {
             @Override
@@ -790,14 +792,6 @@ public abstract class AbstractVirtualHos
         }
     }
 
-    public void initialiseStatistics()
-    {
-        _messagesDelivered = new StatisticsCounter("messages-delivered-" + getName());
-        _dataDelivered = new StatisticsCounter("bytes-delivered-" + getName());
-        _messagesReceived = new StatisticsCounter("messages-received-" + getName());
-        _dataReceived = new StatisticsCounter("bytes-received-" + getName());
-    }
-
     public synchronized LinkRegistry getLinkRegistry(String remoteContainerId)
     {
         LinkRegistry linkRegistry = _linkRegistry.get(remoteContainerId);

Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/consumer/MockConsumer.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/consumer/MockConsumer.java?rev=1595155&r1=1595154&r2=1595155&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/consumer/MockConsumer.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/consumer/MockConsumer.java Fri May 16 11:08:51 2014
@@ -414,10 +414,6 @@ public class MockConsumer implements Con
 
     private static class MockConnectionModel implements AMQConnectionModel
     {
-        @Override
-        public void initialiseStatistics()
-        {
-        }
 
         @Override
         public void registerMessageReceived(long messageSize, long timestamp)

Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java?rev=1595155&r1=1595154&r2=1595155&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java Fri May 16 11:08:51 2014
@@ -569,11 +569,6 @@ public class MockVirtualHost implements 
         return null;
     }
 
-    public void initialiseStatistics()
-    {
-
-    }
-
     public void registerMessageDelivered(long messageSize)
     {
 

Modified: qpid/trunk/qpid/java/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/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java?rev=1595155&r1=1595154&r2=1595155&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java Fri May 16 11:08:51 2014
@@ -71,7 +71,7 @@ public class ServerConnection extends Co
 
     private final Subject _authorizedSubject = new Subject();
     private Principal _authorizedPrincipal = null;
-    private StatisticsCounter _messagesDelivered, _dataDelivered, _messagesReceived, _dataReceived;
+    private final StatisticsCounter _messagesDelivered, _dataDelivered, _messagesReceived, _dataReceived;
     private final long _connectionId;
     private final Object _reference = new Object();
     private VirtualHostImpl _virtualHost;
@@ -93,6 +93,11 @@ public class ServerConnection extends Co
         _connectionId = connectionId;
         _authorizedSubject.getPrincipals().add(new ConnectionPrincipal(this));
         _broker = broker;
+
+        _messagesDelivered = new StatisticsCounter("messages-delivered-" + getConnectionId());
+        _dataDelivered = new StatisticsCounter("data-delivered-" + getConnectionId());
+        _messagesReceived = new StatisticsCounter("messages-received-" + getConnectionId());
+        _dataReceived = new StatisticsCounter("data-received-" + getConnectionId());
     }
 
     public Object getReference()
@@ -175,8 +180,6 @@ public class ServerConnection extends Co
     public void setVirtualHost(VirtualHostImpl virtualHost)
     {
         _virtualHost = virtualHost;
-
-        initialiseStatistics();
     }
 
     @Override
@@ -455,14 +458,6 @@ public class ServerConnection extends Co
         _dataReceived.reset();
     }
 
-    public void initialiseStatistics()
-    {
-        _messagesDelivered = new StatisticsCounter("messages-delivered-" + getConnectionId());
-        _dataDelivered = new StatisticsCounter("data-delivered-" + getConnectionId());
-        _messagesReceived = new StatisticsCounter("messages-received-" + getConnectionId());
-        _dataReceived = new StatisticsCounter("data-received-" + getConnectionId());
-    }
-
     /**
      * @return authorizedSubject
      */

Modified: qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java?rev=1595155&r1=1595154&r2=1595155&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java Fri May 16 11:08:51 2014
@@ -154,7 +154,7 @@ public class AMQProtocolEngine implement
     private long _maxFrameSize;
     private final AtomicBoolean _closing = new AtomicBoolean(false);
 
-    private StatisticsCounter _messagesDelivered, _dataDelivered, _messagesReceived, _dataReceived;
+    private final StatisticsCounter _messagesDelivered, _dataDelivered, _messagesReceived, _dataReceived;
 
     private NetworkConnection _network;
     private Sender<ByteBuffer> _sender;
@@ -201,12 +201,14 @@ public class AMQProtocolEngine implement
 
                 _closeWhenNoRoute = _broker.getConnection_closeWhenNoRoute();
 
-                initialiseStatistics();
-
                 return null;
             }
         });
 
+        _messagesDelivered = new StatisticsCounter("messages-delivered-" + getSessionID());
+        _dataDelivered = new StatisticsCounter("data-delivered-" + getSessionID());
+        _messagesReceived = new StatisticsCounter("messages-received-" + getSessionID());
+        _dataReceived = new StatisticsCounter("data-received-" + getSessionID());
     }
 
     private <T> T runAsSubject(PrivilegedAction<T> action)
@@ -1500,14 +1502,6 @@ public class AMQProtocolEngine implement
         _dataReceived.reset();
     }
 
-    public void initialiseStatistics()
-    {
-        _messagesDelivered = new StatisticsCounter("messages-delivered-" + getSessionID());
-        _dataDelivered = new StatisticsCounter("data-delivered-" + getSessionID());
-        _messagesReceived = new StatisticsCounter("messages-received-" + getSessionID());
-        _dataReceived = new StatisticsCounter("data-received-" + getSessionID());
-    }
-
     public boolean isSessionNameUnique(byte[] name)
     {
         // 0-8/0-9/0-9-1 sessions don't have names

Modified: qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java?rev=1595155&r1=1595154&r2=1595155&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java Fri May 16 11:08:51 2014
@@ -76,10 +76,7 @@ public class Connection_1_0 implements C
     private final CopyOnWriteArrayList<SessionModelListener> _sessionListeners =
             new CopyOnWriteArrayList<SessionModelListener>();
 
-    private StatisticsCounter _messageDeliveryStatistics = new StatisticsCounter();
-    private StatisticsCounter _messageReceiptStatistics = new StatisticsCounter();
-    private StatisticsCounter _dataDeliveryStatistics = new StatisticsCounter();
-    private StatisticsCounter _dataReceiptStatistics = new StatisticsCounter();
+    private final StatisticsCounter _messageDeliveryStatistics, _messageReceiptStatistics, _dataDeliveryStatistics, _dataReceiptStatistics;
 
     private final LogSubject _logSubject = new LogSubject()
     {
@@ -118,7 +115,10 @@ public class Connection_1_0 implements C
         _connectionId = connectionId;
         _subject.getPrincipals().add(new ConnectionPrincipal(this));
         _subjectCreator = subjectCreator;
-
+        _messageDeliveryStatistics = new StatisticsCounter("messages-delivered-" + getConnectionId());
+        _dataDeliveryStatistics = new StatisticsCounter("data-delivered-" + getConnectionId());
+        _messageReceiptStatistics = new StatisticsCounter("messages-received-" + getConnectionId());
+        _dataReceiptStatistics = new StatisticsCounter("data-received-" + getConnectionId());
     }
 
     public Object getReference()
@@ -368,15 +368,6 @@ public class Connection_1_0 implements C
     }
 
     @Override
-    public void initialiseStatistics()
-    {
-        _messageDeliveryStatistics = new StatisticsCounter("messages-delivered-" + getConnectionId());
-        _dataDeliveryStatistics = new StatisticsCounter("data-delivered-" + getConnectionId());
-        _messageReceiptStatistics = new StatisticsCounter("messages-received-" + getConnectionId());
-        _dataReceiptStatistics = new StatisticsCounter("data-received-" + getConnectionId());
-    }
-
-    @Override
     public void registerMessageReceived(long messageSize, long timestamp)
     {
         _messageReceiptStatistics.registerEvent(1L, timestamp);

Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/client/ssl/SSLTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/client/ssl/SSLTest.java?rev=1595155&r1=1595154&r2=1595155&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/client/ssl/SSLTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/client/ssl/SSLTest.java Fri May 16 11:08:51 2014
@@ -43,9 +43,13 @@ import org.apache.qpid.server.model.Port
 import org.apache.qpid.server.model.Transport;
 import org.apache.qpid.test.utils.QpidBrokerTestCase;
 import org.apache.qpid.test.utils.TestBrokerConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class SSLTest extends QpidBrokerTestCase
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger(SSLTest.class);
+
     private static final String CERT_ALIAS_APP1 = "app1";
     private static final String CERT_ALIAS_APP2 = "app2";
 
@@ -209,6 +213,7 @@ public class SSLTest extends QpidBrokerT
 
     private void verifyExceptionCausesContains(Exception e, String expectedString)
     {
+        LOGGER.debug("verifying that the following exception contains " + expectedString, e);
         ByteArrayOutputStream bout = new ByteArrayOutputStream();
         e.printStackTrace(new PrintStream(bout));
         String strace = bout.toString();



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org