You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2017/10/18 13:52:51 UTC

[1/4] qpid-broker-j git commit: QPID-7913: [Java Broker] Log warning with aggregated details for all orphan messages and unused messages instances per queue

Repository: qpid-broker-j
Updated Branches:
  refs/heads/master 3a6bb20dc -> fa9f46abf


QPID-7913: [Java Broker] Log warning with aggregated details for all orphan messages and unused messages instances per queue


Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/fa9f46ab
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/fa9f46ab
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/fa9f46ab

Branch: refs/heads/master
Commit: fa9f46abfc2206f07054d1ec111f9c43aea494e2
Parents: d253bea
Author: Alex Rudyy <or...@apache.org>
Authored: Wed Oct 18 14:52:26 2017 +0100
Committer: Alex Rudyy <or...@apache.org>
Committed: Wed Oct 18 14:52:42 2017 +0100

----------------------------------------------------------------------
 .../AsynchronousMessageStoreRecoverer.java      | 44 ++++++++----
 .../SynchronousMessageStoreRecoverer.java       | 76 ++++++++++++++++----
 2 files changed, 91 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/fa9f46ab/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecoverer.java
----------------------------------------------------------------------
diff --git a/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecoverer.java b/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecoverer.java
index cfdeba7..675c31f 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecoverer.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecoverer.java
@@ -31,7 +31,6 @@ import java.util.concurrent.SynchronousQueue;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import com.google.common.base.Function;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
@@ -46,6 +45,7 @@ import org.apache.qpid.server.message.MessageReference;
 import org.apache.qpid.server.message.ServerMessage;
 import org.apache.qpid.server.model.Queue;
 import org.apache.qpid.server.plugin.MessageMetaDataType;
+import org.apache.qpid.server.pool.QpidByteBufferDisposingThreadPoolExecutor;
 import org.apache.qpid.server.queue.QueueEntry;
 import org.apache.qpid.server.store.MessageEnqueueRecord;
 import org.apache.qpid.server.store.MessageStore;
@@ -55,14 +55,13 @@ import org.apache.qpid.server.store.Transaction;
 import org.apache.qpid.server.store.handler.DistributedTransactionHandler;
 import org.apache.qpid.server.store.handler.MessageHandler;
 import org.apache.qpid.server.store.handler.MessageInstanceHandler;
+import org.apache.qpid.server.transport.util.Functions;
 import org.apache.qpid.server.txn.DtxBranch;
 import org.apache.qpid.server.txn.DtxRegistry;
 import org.apache.qpid.server.txn.ServerTransaction;
 import org.apache.qpid.server.txn.Xid;
 import org.apache.qpid.server.util.Action;
-import org.apache.qpid.server.pool.QpidByteBufferDisposingThreadPoolExecutor;
 import org.apache.qpid.server.util.ServerScopedRuntimeException;
-import org.apache.qpid.server.transport.util.Functions;
 
 public class AsynchronousMessageStoreRecoverer implements MessageStoreRecoverer
 {
@@ -88,7 +87,6 @@ public class AsynchronousMessageStoreRecoverer implements MessageStoreRecoverer
 
     private static class AsynchronousRecoverer
     {
-        private static final Logger LOGGER = LoggerFactory.getLogger(AsynchronousRecoverer.class);
 
         public static final int THREAD_POOL_SHUTDOWN_TIMEOUT = 5000;
         private final QueueManagingVirtualHost<?> _virtualHost;
@@ -172,6 +170,13 @@ public class AsynchronousMessageStoreRecoverer implements MessageStoreRecoverer
             MessageInstanceVisitor handler = new MessageInstanceVisitor(queue);
             _storeReader.visitMessageInstances(queue, handler);
 
+            if (handler.getNumberOfUnknownMessageInstances() > 0)
+            {
+                _logger.warn("Discarded {} of unknown message instances for queue '{}'.",
+                             handler.getNumberOfUnknownMessageInstances(),
+                             queue.getName());
+            }
+
             getEventLogger().message(getLogSubject(), TransactionLogMessages.RECOVERED(handler.getRecoveredCount(), queue.getName()));
             getEventLogger().message(getLogSubject(), TransactionLogMessages.RECOVERY_COMPLETE(queue.getName(), true));
             queue.completeRecovery();
@@ -209,19 +214,23 @@ public class AsynchronousMessageStoreRecoverer implements MessageStoreRecoverer
                     return false;
                 }
             });
+            int unusedMessageCounter = 0;
             for(StoredMessage<?> storedMessage : messagesToDelete)
             {
                 if (_continueRecovery.get())
                 {
-                    if (storedMessage.getMetaData().isPersistent())
-                    {
-                        _logger.warn("Message id {} in store, but not in any queue - removing....",
-                                     storedMessage.getMessageNumber());
-                    }
+                    _logger.debug("Message id {} in store, but not in any queue - removing....",
+                                 storedMessage.getMessageNumber());
                     storedMessage.remove();
+                    unusedMessageCounter++;
                 }
             }
 
+            if (unusedMessageCounter > 0)
+            {
+                _logger.warn("Discarded {} of orphan messages.", unusedMessageCounter);
+            }
+
             messagesToDelete.clear();
             _recoveredMessages.clear();
             _storeReader.close();
@@ -501,10 +510,12 @@ public class AsynchronousMessageStoreRecoverer implements MessageStoreRecoverer
         {
             private final Queue<?> _queue;
             long _recoveredCount;
+            private int _numberOfUnknownMessageInstances;
 
             private MessageInstanceVisitor(Queue<?> queue)
             {
                 _queue = queue;
+                _numberOfUnknownMessageInstances = 0;
             }
 
             @Override
@@ -529,14 +540,14 @@ public class AsynchronousMessageStoreRecoverer implements MessageStoreRecoverer
                     }
                     else
                     {
-                        _logger.warn("Message id "
-                                     + messageId
-                                     + " referenced in log as enqueued in queue "
-                                     + queueName
-                                     + " is unknown, entry will be discarded");
+                        _logger.debug(
+                                "Message id {} referenced in log as enqueued in queue '{}' is unknown, entry will be discarded",
+                                messageId,
+                                queueName);
                         Transaction txn = _store.newTransaction();
                         txn.dequeueMessage(record);
                         txn.commitTranAsync((Void) null);
+                        _numberOfUnknownMessageInstances++;
                     }
                     return _continueRecovery.get();
                 }
@@ -551,6 +562,11 @@ public class AsynchronousMessageStoreRecoverer implements MessageStoreRecoverer
             {
                 return _recoveredCount;
             }
+
+            public int getNumberOfUnknownMessageInstances()
+            {
+                return _numberOfUnknownMessageInstances;
+            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/fa9f46ab/broker-core/src/main/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecoverer.java
----------------------------------------------------------------------
diff --git a/broker-core/src/main/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecoverer.java b/broker-core/src/main/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecoverer.java
index 3ed203f..057b8c3 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecoverer.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecoverer.java
@@ -48,13 +48,13 @@ import org.apache.qpid.server.store.Transaction.EnqueueRecord;
 import org.apache.qpid.server.store.handler.DistributedTransactionHandler;
 import org.apache.qpid.server.store.handler.MessageHandler;
 import org.apache.qpid.server.store.handler.MessageInstanceHandler;
+import org.apache.qpid.server.transport.util.Functions;
 import org.apache.qpid.server.txn.DtxBranch;
 import org.apache.qpid.server.txn.DtxRegistry;
 import org.apache.qpid.server.txn.ServerTransaction;
 import org.apache.qpid.server.txn.Xid;
 import org.apache.qpid.server.util.Action;
 import org.apache.qpid.server.util.ServerScopedRuntimeException;
-import org.apache.qpid.server.transport.util.Functions;
 
 public class SynchronousMessageStoreRecoverer implements MessageStoreRecoverer
 {
@@ -71,15 +71,37 @@ public class SynchronousMessageStoreRecoverer implements MessageStoreRecoverer
         Map<String, Integer> queueRecoveries = new TreeMap<>();
         Map<Long, ServerMessage<?>> recoveredMessages = new HashMap<>();
         Map<Long, StoredMessage<?>> unusedMessages = new HashMap<>();
-
+        Map<Object, Integer> unknownMessageInstances = new HashMap<>();
 
         eventLogger.message(logSubject, MessageStoreMessages.RECOVERY_START());
 
         storeReader.visitMessages(new MessageVisitor(recoveredMessages, unusedMessages));
 
         eventLogger.message(logSubject, TransactionLogMessages.RECOVERY_START(null, false));
-        storeReader.visitMessageInstances(new MessageInstanceVisitor(virtualHost, store, queueRecoveries,
-                                                               recoveredMessages, unusedMessages));
+        try
+        {
+            storeReader.visitMessageInstances(new MessageInstanceVisitor(virtualHost,
+                                                                         store,
+                                                                         queueRecoveries,
+                                                                         recoveredMessages,
+                                                                         unusedMessages,
+                                                                         unknownMessageInstances));
+        }
+        finally
+        {
+            if (!unknownMessageInstances.isEmpty())
+            {
+                for (Map.Entry<Object, Integer> entry: unknownMessageInstances.entrySet())
+                {
+                    Object key = entry.getKey();
+                    String logMessage = key instanceof UUID
+                            ? "Discarded {} of unknown message instances for unknown queue with id '{}'."
+                            : "Discarded {} of unknown message instances for queue '{}'.";
+                    _logger.warn(logMessage, entry.getValue(), key);
+                }
+            }
+        }
+
         for(Map.Entry<String,Integer> entry : queueRecoveries.entrySet())
         {
             eventLogger.message(logSubject, TransactionLogMessages.RECOVERED(entry.getValue(), entry.getKey()));
@@ -99,15 +121,18 @@ public class SynchronousMessageStoreRecoverer implements MessageStoreRecoverer
                                                                              logSubject, recoveredMessages, unusedMessages));
 
 
-
+        int unusedMessageCounter = 0;
         for(StoredMessage<?> m : unusedMessages.values())
         {
-            if (m.getMetaData().isPersistent())
-            {
-                _logger.warn("Message id {} in store, but not in any queue - removing....", m.getMessageNumber());
-            }
+            unusedMessageCounter++;
             m.remove();
         }
+
+        if (unusedMessageCounter > 0)
+        {
+            _logger.warn("Discarded {} of orphan messages.", unusedMessageCounter);
+        }
+
         eventLogger.message(logSubject, TransactionLogMessages.RECOVERY_COMPLETE(null, false));
 
         eventLogger.message(logSubject,
@@ -162,18 +187,21 @@ public class SynchronousMessageStoreRecoverer implements MessageStoreRecoverer
         private final Map<String, Integer> _queueRecoveries;
         private final Map<Long, ServerMessage<?>> _recoveredMessages;
         private final Map<Long, StoredMessage<?>> _unusedMessages;
+        private final Map<Object, Integer> _unknownMessageInstances;
 
         private MessageInstanceVisitor(final QueueManagingVirtualHost<?> virtualHost,
                                        final MessageStore store,
                                        final Map<String, Integer> queueRecoveries,
                                        final Map<Long, ServerMessage<?>> recoveredMessages,
-                                       final Map<Long, StoredMessage<?>> unusedMessages)
+                                       final Map<Long, StoredMessage<?>> unusedMessages,
+                                       final Map<Object, Integer> unknownMessageInstances)
         {
             _virtualHost = virtualHost;
             _store = store;
             _queueRecoveries = queueRecoveries;
             _recoveredMessages = recoveredMessages;
             _unusedMessages = unusedMessages;
+            _unknownMessageInstances = unknownMessageInstances;
         }
 
         @Override
@@ -182,6 +210,7 @@ public class SynchronousMessageStoreRecoverer implements MessageStoreRecoverer
             final UUID queueId = record.getQueueId();
             long messageId = record.getMessageNumber();
             Queue<?> queue = _virtualHost.getAttainedQueue(queueId);
+            boolean unknownMessageInstance = true;
             if(queue != null)
             {
                 String queueName = queue.getName();
@@ -204,22 +233,39 @@ public class SynchronousMessageStoreRecoverer implements MessageStoreRecoverer
                     queue.recover(message, record);
 
                     _queueRecoveries.put(queueName, ++count);
+                    unknownMessageInstance = false;
                 }
                 else
                 {
-                    _logger.warn("Message id " + messageId + " referenced in log as enqueued in queue " + queueName + " is unknown, entry will be discarded");
-                    Transaction txn = _store.newTransaction();
-                    txn.dequeueMessage(record);
-                    txn.commitTranAsync((Void) null);
+                    _logger.debug(
+                            "Message id {} referenced in log as enqueued in queue '{}' is unknown, entry will be discarded",
+                            messageId,
+                            queueName);
                 }
             }
             else
             {
-                _logger.warn("Message id " + messageId + " in log references queue with id " + queueId + " which is not in the configuration, entry will be discarded");
+                _logger.debug(
+                        "Message id {} in log references queue with id '{}' which is not in the configuration, entry will be discarded",
+                        messageId,
+                        queueId);
+            }
+
+            if (unknownMessageInstance)
+            {
                 Transaction txn = _store.newTransaction();
                 txn.dequeueMessage(record);
                 txn.commitTranAsync((Void) null);
+
+                Object queueNameOrId = queue == null ? queueId : queue.getName();
+                Integer unknownMessageCounter = _unknownMessageInstances.get(queueNameOrId);
+                if (unknownMessageCounter == null)
+                {
+                    unknownMessageCounter = 0;
+                }
+                _unknownMessageInstances.put(queueNameOrId, ++unknownMessageCounter);
             }
+
             return true;
         }
     }


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


[3/4] qpid-broker-j git commit: QPID-7799: [Java Broker] Modify broker and virtual host store upgraders to add statistics related context variables and logging rules

Posted by or...@apache.org.
QPID-7799: [Java Broker] Modify broker and virtual host store upgraders to add statistics related context variables and logging rules


Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/d253bea1
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/d253bea1
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/d253bea1

Branch: refs/heads/master
Commit: d253bea18fb976ec7868e12e1867698211a51afb
Parents: 06a3072
Author: Alex Rudyy <or...@apache.org>
Authored: Wed Oct 18 13:41:45 2017 +0100
Committer: Alex Rudyy <or...@apache.org>
Committed: Wed Oct 18 14:52:42 2017 +0100

----------------------------------------------------------------------
 .../store/BrokerStoreUpgraderAndRecoverer.java  | 36 ++++++++++++++++++++
 .../VirtualHostStoreUpgraderAndRecoverer.java   | 34 +++++++++++++++++-
 ...irtualHostStoreUpgraderAndRecovererTest.java |  5 +++
 3 files changed, 74 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/d253bea1/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
----------------------------------------------------------------------
diff --git a/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java b/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
index 3c04785..e69fe77 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
@@ -569,6 +569,7 @@ public class BrokerStoreUpgraderAndRecoverer extends AbstractConfigurationStoreU
         {
             if (record.getType().equals("Broker"))
             {
+                boolean rebuildRecord = false;
                 Map<String, Object> attributes = new HashMap<>(record.getAttributes());
                 Map<String, String> additionalContext = new HashMap<>();
                 for (String attributeName : BROKER_ATTRIBUTES_MOVED_INTO_CONTEXT.keySet())
@@ -581,6 +582,20 @@ public class BrokerStoreUpgraderAndRecoverer extends AbstractConfigurationStoreU
                     }
                 }
 
+                if (attributes.containsKey("statisticsReportingResetEnabled"))
+                {
+                    attributes.remove("statisticsReportingResetEnabled");
+                    rebuildRecord = true;
+                }
+
+                if (attributes.containsKey("statisticsReportingPeriod")
+                    && Integer.parseInt(String.valueOf(attributes.get("statisticsReportingPeriod"))) > 0)
+                {
+                    additionalContext.put("qpid.broker.statisticsReportPattern", "messagesIn=${messagesIn}, bytesIn=${bytesIn:byteunit}, messagesOut=${messagesOut}, bytesOut=${bytesOut:byteunit}");
+
+                    rebuildRecord = true;
+                }
+
                 if (!additionalContext.isEmpty())
                 {
                     Map<String, String> newContext = new HashMap<>();
@@ -591,6 +606,11 @@ public class BrokerStoreUpgraderAndRecoverer extends AbstractConfigurationStoreU
                     newContext.putAll(additionalContext);
                     attributes.put("context", newContext);
 
+                    rebuildRecord = true;
+                }
+
+                if (rebuildRecord)
+                {
                     record = new ConfiguredObjectRecordImpl(record.getId(),
                                                             record.getType(),
                                                             attributes,
@@ -610,6 +630,22 @@ public class BrokerStoreUpgraderAndRecoverer extends AbstractConfigurationStoreU
                     upgradeHttpPortIfRequired(record);
                 }
             }
+            else if (record.getType().equals("BrokerLogger"))
+            {
+                Map<String,Object> attributes = new HashMap<>();
+                attributes.put("name", "statistics-" + record.getAttributes().get("name"));
+                attributes.put("level", "INFO");
+                attributes.put("loggerName", "qpid.statistics.*");
+                attributes.put("type", "NameAndLevel");
+
+
+                final ConfiguredObjectRecord filterRecord = new ConfiguredObjectRecordImpl(UUID.randomUUID(),
+                                                                                           "BrokerLogInclusionRule",
+                                                                                           attributes,
+                                                                                           Collections.singletonMap("BrokerLogger",
+                                                                                                                    record.getId()));
+                getUpdateMap().put(filterRecord.getId(), filterRecord);
+            }
         }
 
         private void upgradeHttpPortIfRequired(final ConfiguredObjectRecord record)

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/d253bea1/broker-core/src/main/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecoverer.java
----------------------------------------------------------------------
diff --git a/broker-core/src/main/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecoverer.java b/broker-core/src/main/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecoverer.java
index 62fc386..0bf0aef 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecoverer.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecoverer.java
@@ -38,6 +38,7 @@ import org.apache.qpid.server.filter.FilterSupport;
 import org.apache.qpid.server.model.AbstractConfigurationChangeListener;
 import org.apache.qpid.server.model.AbstractConfiguredObject;
 import org.apache.qpid.server.model.Binding;
+import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.Exchange;
 import org.apache.qpid.server.model.Queue;
@@ -631,9 +632,10 @@ public class VirtualHostStoreUpgraderAndRecoverer extends AbstractConfigurationS
                 Map<String, Object> attributes = new HashMap<>(record.getAttributes());
                 boolean modified = attributes.remove("queue_deadLetterQueueEnabled") != null;
                 Object context = attributes.get("context");
+                Map<String,Object> contextMap = null;
                 if(context instanceof Map)
                 {
-                    Map<String,Object> contextMap = new HashMap<>((Map<String,Object>) context);
+                    contextMap = new HashMap<>((Map<String,Object>) context);
                     modified |= contextMap.remove("queue.deadLetterQueueEnabled") != null;
                     if (modified)
                     {
@@ -641,6 +643,20 @@ public class VirtualHostStoreUpgraderAndRecoverer extends AbstractConfigurationS
                     }
                 }
 
+                int brokerStatisticsReportingPeriod = ((Broker) _virtualHostNode.getParent()).getStatisticsReportingPeriod();
+                if (brokerStatisticsReportingPeriod > 0)
+                {
+                    attributes.put("statisticsReportingPeriod", brokerStatisticsReportingPeriod);
+                    if (contextMap == null)
+                    {
+                        contextMap = new HashMap<>();
+                    }
+
+                    contextMap.put("qpid.virtualhost.statisticsReportPattern", "${ancestor:virtualhost:name}: messagesIn=${messagesIn}, bytesIn=${bytesIn:byteunit}, messagesOut=${messagesOut}, bytesOut=${bytesOut:byteunit}");
+                    attributes.put("context", contextMap);
+                    modified = true;
+                }
+
                 if (modified)
                 {
                     record = new ConfiguredObjectRecordImpl(record.getId(), record.getType(), attributes, record.getParents());
@@ -780,6 +796,22 @@ public class VirtualHostStoreUpgraderAndRecoverer extends AbstractConfigurationS
                                                                       record.getParents()));
                 }
             }
+            else if (record.getType().equals("VirtualHostLogger"))
+            {
+                Map<String,Object> attributes = new HashMap<>();
+                attributes.put("name", "statistics-" + record.getAttributes().get("name"));
+                attributes.put("level", "INFO");
+                attributes.put("loggerName", "qpid.statistics.*");
+                attributes.put("type", "NameAndLevel");
+
+
+                final ConfiguredObjectRecord filterRecord = new ConfiguredObjectRecordImpl(UUID.randomUUID(),
+                                                                                           "VirtualHostLogInclusionRule",
+                                                                                           attributes,
+                                                                                           Collections.singletonMap("VirtualHostLogger",
+                                                                                                                    record.getId()));
+                getUpdateMap().put(filterRecord.getId(), filterRecord);
+            }
         }
 
         private long convertAttributeValueToLong(final String attributeName,

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/d253bea1/broker-core/src/test/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecovererTest.java
----------------------------------------------------------------------
diff --git a/broker-core/src/test/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecovererTest.java b/broker-core/src/test/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecovererTest.java
index cbfa362..40c11ee 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecovererTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecovererTest.java
@@ -21,6 +21,7 @@ package org.apache.qpid.server.store;
 
 
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.util.Arrays;
 import java.util.Collections;
@@ -29,6 +30,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.OverflowPolicy;
 import org.apache.qpid.server.model.VirtualHostNode;
 import org.apache.qpid.test.utils.QpidTestCase;
@@ -44,7 +47,9 @@ public class VirtualHostStoreUpgraderAndRecovererTest extends QpidTestCase
     {
         super.setUp();
 
+        final Broker broker = mock(Broker.class);
         _virtualHostNode = mock(VirtualHostNode.class);
+        when(_virtualHostNode.getParent()).thenReturn(broker);
         _store = mock(DurableConfigurationStore.class);
         _upgraderAndRecoverer = new VirtualHostStoreUpgraderAndRecoverer(_virtualHostNode);
     }


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


[4/4] qpid-broker-j git commit: QPID-7799: [Java Broker] Fix typos and improve documentation for statistics reporting

Posted by or...@apache.org.
QPID-7799: [Java Broker] Fix typos and improve documentation for statistics reporting


Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/cec19543
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/cec19543
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/cec19543

Branch: refs/heads/master
Commit: cec195436a4547cff7c652d4689faf902942b818
Parents: 3a6bb20
Author: Alex Rudyy <or...@apache.org>
Authored: Wed Oct 18 10:24:04 2017 +0100
Committer: Alex Rudyy <or...@apache.org>
Committed: Wed Oct 18 14:52:42 2017 +0100

----------------------------------------------------------------------
 .../Java-Broker-Appendix-Statistics-Reporting.xml       | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/cec19543/doc/java-broker/src/docbkx/Java-Broker-Appendix-Statistics-Reporting.xml
----------------------------------------------------------------------
diff --git a/doc/java-broker/src/docbkx/Java-Broker-Appendix-Statistics-Reporting.xml b/doc/java-broker/src/docbkx/Java-Broker-Appendix-Statistics-Reporting.xml
index 8970cbc..ddc39b2 100644
--- a/doc/java-broker/src/docbkx/Java-Broker-Appendix-Statistics-Reporting.xml
+++ b/doc/java-broker/src/docbkx/Java-Broker-Appendix-Statistics-Reporting.xml
@@ -23,9 +23,9 @@
 <appendix xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="Java-Broker-Appendix-Statistics-Reporting">
   <title>Statistics Reporting</title>
   <para>The Broker has the ability to periodically write statistics of any entity within the system to
-    the log.  Statistics can be enabled for a single entity  (e.g. a queue) or for all entities of a particular
-    class (e.g. for all queues). The system can be configured dynamically at runtime without the need for the
-    system to be restarted.</para>
+    the log.  Statistics reporting can be configured for a single entity  (e.g. a queue) or for all entities of a
+    particular category (e.g. for all queues). The system can be configured dynamically at runtime without the need
+    for the system to be restarted.</para>
   <para>This feature helps allow the behaviour of the overall system to be understood and can aid real-time problem
     diagnosis.</para>
   <para>It can be configured Broker-wide or separately for each virtual host.</para>
@@ -42,7 +42,7 @@
     <title>Statistic Report Patterns</title>
     <para>The statistic report pattern defines the format of a statistic report written to the log.</para>
     <para>Statistic report patterns are defined by <link linkend="Java-Broker-Management-Managing-Entities-General">
-      content variables</link>.  The place where the context variable is definedgoverns the scope i.e. the entities to
+      content variables</link>.  The place where the context variable is defined governs the scope i.e. the entities to
       which the pattern will be applied.</para>
     <para>For instance, to define a statistics reporting pattern for a single queue,
       <link linkend="Java-Broker-Management-Channel-Web-Console-Managing-Context-Variables">set the contextvariable
@@ -54,8 +54,8 @@
     <para>For instance, for queue: <literal>qpid.queue.statisticsReportPattern</literal> and virtualhost:
       <literal>qpid.virtualhost.statisticsReportPattern</literal></para>
     <para>The value of the context variable is a free text string containing reference(s) to the statistic names that
-      are to appear in the report. References are made by surrounding the name of the statistic thus
-      <literal>${&lt;statistic-name&gt;</literal>.</para>
+      are to appear in the report. References are made by surrounding the name of the statistic with '$' and curly braces,
+      thus <literal>${&lt;statistic-name&gt;}</literal>.</para>
     <para>Statistics references allow an optional formatters. The supported formatters are: <literal>:byteunit</literal>
       (produces a human readable byte value e.g. 3 MiB), <literal>:duration</literal> (produces a ISO-8601 duration)and
       <literal>:datetime</literal> (produces a ISO-8601 date/time).</para>


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


[2/4] qpid-broker-j git commit: QPID-7799: [Java Broker] Remove duplicate code

Posted by or...@apache.org.
QPID-7799: [Java Broker] Remove duplicate code


Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/06a30729
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/06a30729
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/06a30729

Branch: refs/heads/master
Commit: 06a30729357dce56da9c27c0aa252eed1b7388df
Parents: cec1954
Author: Alex Rudyy <or...@apache.org>
Authored: Wed Oct 18 10:54:42 2017 +0100
Committer: Alex Rudyy <or...@apache.org>
Committed: Wed Oct 18 14:52:42 2017 +0100

----------------------------------------------------------------------
 .../org/apache/qpid/server/model/ConfiguredObjectFinder.java  | 7 +------
 .../server/management/plugin/servlet/rest/RestServlet.java    | 7 +------
 2 files changed, 2 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/06a30729/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFinder.java
----------------------------------------------------------------------
diff --git a/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFinder.java b/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFinder.java
index 8792094..3e385b7 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFinder.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFinder.java
@@ -20,7 +20,7 @@
  */
 package org.apache.qpid.server.model;
 
-import static org.apache.qpid.server.model.ConfiguredObjectTypeRegistry.getRawType;
+import static org.apache.qpid.server.model.ConfiguredObjectTypeRegistry.getCollectionMemberType;
 import static org.apache.qpid.server.model.ConfiguredObjectTypeRegistry.returnsCollectionOfConfiguredObjects;
 
 import java.lang.reflect.ParameterizedType;
@@ -452,11 +452,6 @@ public class ConfiguredObjectFinder
         return hierarchyList;
     }
 
-    private Class getCollectionMemberType(ParameterizedType collectionType)
-    {
-        return getRawType((collectionType).getActualTypeArguments()[0]);
-    }
-
     public Collection<? extends ConfiguredObject> getAssociatedChildren(final Class<? extends ConfiguredObject> childClass)
     {
         final ConfiguredObjectOperation<ConfiguredObject<?>> op =

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/06a30729/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
----------------------------------------------------------------------
diff --git a/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java b/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
index 319e8ea..8361886 100644
--- a/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
+++ b/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
@@ -22,6 +22,7 @@ package org.apache.qpid.server.management.plugin.servlet.rest;
 import static org.apache.qpid.server.management.plugin.HttpManagementConfiguration.DEFAULT_PREFERENCE_OPERATION_TIMEOUT;
 import static org.apache.qpid.server.management.plugin.HttpManagementConfiguration.PREFERENCE_OPERTAION_TIMEOUT_CONTEXT_NAME;
 import static org.apache.qpid.server.management.plugin.HttpManagementUtil.ensureFilenameIsRfc2183;
+import static org.apache.qpid.server.model.ConfiguredObjectTypeRegistry.getCollectionMemberType;
 import static org.apache.qpid.server.model.ConfiguredObjectTypeRegistry.returnsCollectionOfConfiguredObjects;
 
 import java.io.IOException;
@@ -56,7 +57,6 @@ import org.apache.qpid.server.model.AbstractConfiguredObject;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.ConfiguredObjectFinder;
 import org.apache.qpid.server.model.ConfiguredObjectOperation;
-import org.apache.qpid.server.model.ConfiguredObjectTypeRegistry;
 import org.apache.qpid.server.model.Content;
 import org.apache.qpid.server.model.IllegalStateTransitionException;
 import org.apache.qpid.server.model.IntegrityViolationException;
@@ -700,11 +700,6 @@ public class RestServlet extends AbstractServlet
         return target;
     }
 
-    private Class getCollectionMemberType(ParameterizedType collectionType)
-    {
-        return ConfiguredObjectTypeRegistry.getRawType((collectionType).getActualTypeArguments()[0]);
-    }
-
     private Map<String, Object> getOperationArgumentsAsMap(HttpServletRequest request)
     {
         Map<String, Object> providedObject;


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