You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2017/03/15 10:02:07 UTC
[21/22] james-project git commit: JAMES-1950 Add time metrics on
Remote Mail delivering
JAMES-1950 Add time metrics on Remote Mail delivering
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/33b74fbc
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/33b74fbc
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/33b74fbc
Branch: refs/heads/master
Commit: 33b74fbca401d8aa78c8d931497fff5862b2240e
Parents: ca04fd6
Author: benwa <bt...@linagora.com>
Authored: Wed Mar 15 10:27:24 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Mar 15 16:57:31 2017 +0700
----------------------------------------------------------------------
.../james/transport/mailets/RemoteDelivery.java | 7 +++----
.../mailets/remoteDelivery/DeliveryRunnable.java | 17 +++++++++++++----
.../remoteDelivery/DeliveryRunnableTest.java | 8 +++++++-
3 files changed, 23 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/33b74fbc/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java
index 006c6bc..1019e30 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java
@@ -126,13 +126,12 @@ public class RemoteDelivery extends GenericMailet {
DO_NOT_START_THREADS
}
- private static final String OUTGOING_MAILS = "outgoingMails";
public static final String NAME_JUNCTION = "-to-";
private final DNSService dnsServer;
private final DomainList domainList;
private final MailQueueFactory queueFactory;
- private final Metric outgoingMailsMetric;
+ private final MetricFactory metricFactory;
private final AtomicBoolean isDestroyed;
private final THREAD_STATE startThreads;
@@ -150,7 +149,7 @@ public class RemoteDelivery extends GenericMailet {
this.dnsServer = dnsServer;
this.domainList = domainList;
this.queueFactory = queueFactory;
- this.outgoingMailsMetric = metricFactory.generate(OUTGOING_MAILS);
+ this.metricFactory = metricFactory;
this.isDestroyed = new AtomicBoolean(false);
this.startThreads = startThreads;
}
@@ -177,7 +176,7 @@ public class RemoteDelivery extends GenericMailet {
new DeliveryRunnable(queue,
configuration,
dnsServer,
- outgoingMailsMetric,
+ metricFactory,
logger,
getMailetContext(),
new Bouncer(configuration, getMailetContext(), logger),
http://git-wip-us.apache.org/repos/asf/james-project/blob/33b74fbc/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnable.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnable.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnable.java
index a7cf23b..b34f3af 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnable.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnable.java
@@ -26,6 +26,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.james.dnsservice.api.DNSService;
import org.apache.james.lifecycle.api.LifecycleUtil;
import org.apache.james.metrics.api.Metric;
+import org.apache.james.metrics.api.MetricFactory;
+import org.apache.james.metrics.api.TimeMetric;
import org.apache.james.queue.api.MailPrioritySupport;
import org.apache.james.queue.api.MailQueue;
import org.apache.mailet.Mail;
@@ -44,34 +46,38 @@ public class DeliveryRunnable implements Runnable {
}
};
public static final AtomicBoolean DEFAULT_NOT_STARTED = new AtomicBoolean(false);
+ private static final String OUTGOING_MAILS = "outgoingMails";
+ public static final String REMOTE_DELIVERY_TRIAL = "RemoteDeliveryTrial";
private final MailQueue queue;
private final RemoteDeliveryConfiguration configuration;
private final Metric outgoingMailsMetric;
+ private final MetricFactory metricFactory;
private final Logger logger;
private final Bouncer bouncer;
private final MailDelivrer mailDelivrer;
private final AtomicBoolean isDestroyed;
private final Supplier<Date> dateSupplier;
- public DeliveryRunnable(MailQueue queue, RemoteDeliveryConfiguration configuration, DNSService dnsServer, Metric outgoingMailsMetric,
+ public DeliveryRunnable(MailQueue queue, RemoteDeliveryConfiguration configuration, DNSService dnsServer, MetricFactory metricFactory,
Logger logger, MailetContext mailetContext, Bouncer bouncer, AtomicBoolean isDestroyed) {
- this(queue, configuration, outgoingMailsMetric, logger, bouncer,
+ this(queue, configuration, metricFactory, logger, bouncer,
new MailDelivrer(configuration, new MailDelivrerToHost(configuration, mailetContext, logger), dnsServer, bouncer, logger),
isDestroyed, CURRENT_DATE_SUPPLIER);
}
@VisibleForTesting
- DeliveryRunnable(MailQueue queue, RemoteDeliveryConfiguration configuration, Metric outgoingMailsMetric, Logger logger, Bouncer bouncer,
+ DeliveryRunnable(MailQueue queue, RemoteDeliveryConfiguration configuration, MetricFactory metricFactory, Logger logger, Bouncer bouncer,
MailDelivrer mailDelivrer, AtomicBoolean isDestroyeds, Supplier<Date> dateSupplier) {
this.queue = queue;
this.configuration = configuration;
- this.outgoingMailsMetric = outgoingMailsMetric;
+ this.outgoingMailsMetric = metricFactory.generate(OUTGOING_MAILS);
this.logger = logger;
this.bouncer = bouncer;
this.mailDelivrer = mailDelivrer;
this.isDestroyed = isDestroyeds;
this.dateSupplier = dateSupplier;
+ this.metricFactory = metricFactory;
}
@Override
@@ -87,6 +93,7 @@ public class DeliveryRunnable implements Runnable {
}
private void runStep() {
+ TimeMetric timeMetric = metricFactory.timer(REMOTE_DELIVERY_TRIAL);
try {
// Get the 'mail' object that is ready for deliverying. If no message is
// ready, the 'accept' will block until message is ready.
@@ -116,6 +123,8 @@ public class DeliveryRunnable implements Runnable {
if (!isDestroyed.get()) {
logger.error("Exception caught in RemoteDelivery.run()", e);
}
+ } finally {
+ timeMetric.stopAndPublish();
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/33b74fbc/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnableTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnableTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnableTest.java
index f8dfd40..09554e1 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnableTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnableTest.java
@@ -20,6 +20,7 @@
package org.apache.james.transport.mailets.remoteDelivery;
import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
@@ -31,6 +32,8 @@ import java.util.concurrent.TimeUnit;
import org.apache.james.domainlist.api.DomainList;
import org.apache.james.metrics.api.Metric;
+import org.apache.james.metrics.api.MetricFactory;
+import org.apache.james.metrics.api.NoopMetricFactory;
import org.apache.james.queue.api.MailQueue;
import org.apache.mailet.Mail;
import org.apache.mailet.base.test.FakeMail;
@@ -74,10 +77,13 @@ public class DeliveryRunnableTest {
RemoteDeliveryConfiguration configuration = new RemoteDeliveryConfiguration(mailetConfig, mock(DomainList.class));
outgoingMailsMetric = mock(Metric.class);
+ MetricFactory mockMetricFactory = mock(MetricFactory.class);
+ when(mockMetricFactory.generate(anyString())).thenReturn(outgoingMailsMetric);
+ when(mockMetricFactory.timer(anyString())).thenReturn(new NoopMetricFactory.NoopTimeMetric());
bouncer = mock(Bouncer.class);
mailDelivrer = mock(MailDelivrer.class);
mailQueue = mock(MailQueue.class);
- testee = new DeliveryRunnable(mailQueue, configuration, outgoingMailsMetric, LOGGER, bouncer, mailDelivrer, DeliveryRunnable.DEFAULT_NOT_STARTED, FIXED_DATE_SUPPLIER);
+ testee = new DeliveryRunnable(mailQueue, configuration, mockMetricFactory, LOGGER, bouncer, mailDelivrer, DeliveryRunnable.DEFAULT_NOT_STARTED, FIXED_DATE_SUPPLIER);
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org