This is an automated email from the ASF dual-hosted git repository.

cschneider pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-journal.git

commit f4662464d5dc92ad8eb358600659453f2ab2af25
Author: Christian Schneider <cschn...@adobe.com>
AuthorDate: Fri Apr 12 14:56:22 2024 +0200

    SLING-12292 - Move metrics into publisher and bookkeeper
---
 .../journal/bookkeeper/BookKeeper.java             |  1 -
 .../journal/bookkeeper/BookKeeperFactory.java      |  1 -
 .../{shared => bookkeeper}/SubscriberMetrics.java  | 34 +-----------
 .../impl/publisher/DistributionPublisher.java      |  7 ++-
 .../impl/publisher/MessagingCacheCallback.java     |  1 -
 .../impl/publisher/PubQueueProviderPublisher.java  |  1 -
 .../{shared => impl/publisher}/PublishMetrics.java |  2 +-
 .../impl/subscriber/DistributionSubscriber.java    |  2 +-
 .../sling/distribution/journal/shared/Timed.java   | 60 ++++++++++++++++++++++
 .../journal/bookkeeper/BookKeeperTest.java         |  1 -
 .../impl/publisher/DistributionPublisherTest.java  |  1 -
 .../impl/publisher/MessagingCacheCallbackTest.java |  1 -
 .../journal/impl/subscriber/SubscriberTest.java    |  2 +-
 .../journal/shared/SubscriberMetricsTest.java      |  1 +
 14 files changed, 68 insertions(+), 47 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeper.java
 
b/src/main/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeper.java
index 2a2b023..bc7805b 100644
--- 
a/src/main/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeper.java
+++ 
b/src/main/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeper.java
@@ -49,7 +49,6 @@ import 
org.apache.sling.distribution.journal.messages.LogMessage;
 import org.apache.sling.distribution.journal.messages.PackageMessage;
 import org.apache.sling.distribution.journal.messages.PackageStatusMessage;
 import 
org.apache.sling.distribution.journal.messages.PackageStatusMessage.Status;
-import org.apache.sling.distribution.journal.shared.SubscriberMetrics;
 import org.apache.sling.distribution.journal.shared.NoOpImportPostProcessor;
 import org.apache.sling.distribution.journal.shared.NoOpInvalidationProcessor;
 import org.osgi.service.event.Event;
diff --git 
a/src/main/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeperFactory.java
 
b/src/main/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeperFactory.java
index 79ee33e..f650fc4 100644
--- 
a/src/main/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeperFactory.java
+++ 
b/src/main/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeperFactory.java
@@ -27,7 +27,6 @@ import org.apache.sling.distribution.InvalidationProcessor;
 import org.apache.sling.distribution.journal.messages.LogMessage;
 import org.apache.sling.distribution.journal.messages.PackageStatusMessage;
 import org.apache.sling.distribution.journal.BinaryStore;
-import org.apache.sling.distribution.journal.shared.SubscriberMetrics;
 import org.apache.sling.distribution.packaging.DistributionPackageBuilder;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Reference;
diff --git 
a/src/main/java/org/apache/sling/distribution/journal/shared/SubscriberMetrics.java
 
b/src/main/java/org/apache/sling/distribution/journal/bookkeeper/SubscriberMetrics.java
similarity index 89%
rename from 
src/main/java/org/apache/sling/distribution/journal/shared/SubscriberMetrics.java
rename to 
src/main/java/org/apache/sling/distribution/journal/bookkeeper/SubscriberMetrics.java
index b0d656c..c7a4c3e 100644
--- 
a/src/main/java/org/apache/sling/distribution/journal/shared/SubscriberMetrics.java
+++ 
b/src/main/java/org/apache/sling/distribution/journal/bookkeeper/SubscriberMetrics.java
@@ -16,11 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.sling.distribution.journal.shared;
+package org.apache.sling.distribution.journal.bookkeeper;
 
 import static java.lang.String.format;
 
-import java.util.concurrent.Callable;
 import java.util.function.Supplier;
 
 import org.apache.sling.commons.metrics.Counter;
@@ -101,37 +100,6 @@ public class SubscriberMetrics {
         permanentImportErrors = getCounter(getMetricName(SUB_COMPONENT, 
"permanent_import_errors"));
     }
 
-    /**
-     * Runs provided code updating provided metric
-     * with its execution time.
-     * The method guarantees that the metric is updated
-     * even if the code throws an exception
-     * @param metric metric to update
-     * @param code code to clock
-     * @throws Exception actually it doesn't
-     */
-    public static void timed(Timer metric, Runnable code) throws Exception {
-        try (Timer.Context ignored = metric.time()) {
-            code.run();
-        }
-    }
-
-    /**
-     * Runs provided code updating provided metric
-     * with its execution time.
-     * The method guarantees that the metric is updated
-     * even if the code throws an exception
-     * @param metric metric to update
-     * @param code code to clock
-     * @return a value returned but <code>code.call()</code> invocation
-     * @throws Exception if underlying code throws
-     */
-    public static <T> T timed(Timer metric, Callable<T> code) throws Exception 
{
-        try (Timer.Context ignored = metric.time()) {
-            return code.call();
-        }
-    }
-
     /**
      * Histogram of the imported content package size in Byte.
      *
diff --git 
a/src/main/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisher.java
 
b/src/main/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisher.java
index ae1dc4a..2bf24f5 100644
--- 
a/src/main/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisher.java
+++ 
b/src/main/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisher.java
@@ -23,7 +23,6 @@ import static java.lang.String.format;
 import static java.util.Objects.requireNonNull;
 import static org.apache.sling.distribution.DistributionRequestState.ACCEPTED;
 import static org.apache.sling.distribution.DistributionRequestType.*;
-import static 
org.apache.sling.distribution.journal.shared.SubscriberMetrics.timed;
 import static 
org.apache.sling.distribution.journal.shared.Strings.requireNotBlank;
 import static 
org.osgi.service.component.annotations.ReferenceCardinality.OPTIONAL;
 import static 
org.osgi.service.component.annotations.ReferencePolicyOption.GREEDY;
@@ -44,7 +43,7 @@ import 
org.apache.sling.distribution.journal.messages.PackageMessage.ReqType;
 import org.apache.sling.distribution.journal.queue.PubQueueProvider;
 import org.apache.sling.distribution.journal.shared.DefaultDistributionLog;
 import 
org.apache.sling.distribution.journal.shared.DistributionLogEventListener;
-import org.apache.sling.distribution.journal.shared.PublishMetrics;
+import org.apache.sling.distribution.journal.shared.Timed;
 import org.apache.sling.distribution.journal.shared.Topics;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.distribution.DistributionRequest;
@@ -246,7 +245,7 @@ public class DistributionPublisher implements 
DistributionAgent {
             if (request.getRequestType() != TEST && request.getPaths().length 
== 0) {
                 throw new DistributionException("Empty paths are not allowed");
             }
-            return timed(publishMetrics.getBuildPackageDuration(), () -> 
factory.create(packageBuilder, resourceResolver, pubAgentName, request));
+            return Timed.timed(publishMetrics.getBuildPackageDuration(), () -> 
factory.create(packageBuilder, resourceResolver, pubAgentName, request));
         } catch (Exception e) {
             publishMetrics.getDroppedRequests().mark();
             String msg = format("Failed to create content package for 
requestType=%s, paths=%s. Error=%s",
@@ -259,7 +258,7 @@ public class DistributionPublisher implements 
DistributionAgent {
     @Nonnull
     private DistributionResponse send(final PackageMessage pkg, int queueSize, 
int delayMS) throws DistributionException {
         try {
-            long offset = timed(publishMetrics.getEnqueuePackageDuration(), () 
-> this.sendAndWait(pkg));
+            long offset = 
Timed.timed(publishMetrics.getEnqueuePackageDuration(), () -> 
this.sendAndWait(pkg));
             publishMetrics.getExportedPackageSize().update(pkg.getPkgLength());
             publishMetrics.getAcceptedRequests().mark();
             String msg = format("Request accepted with distribution package %s 
at offset=%d, queueSize=%d, queueSizeDelay=%d", pkg, offset, queueSize, 
delayMS);
diff --git 
a/src/main/java/org/apache/sling/distribution/journal/impl/publisher/MessagingCacheCallback.java
 
b/src/main/java/org/apache/sling/distribution/journal/impl/publisher/MessagingCacheCallback.java
index 23e8df7..341d553 100644
--- 
a/src/main/java/org/apache/sling/distribution/journal/impl/publisher/MessagingCacheCallback.java
+++ 
b/src/main/java/org/apache/sling/distribution/journal/impl/publisher/MessagingCacheCallback.java
@@ -39,7 +39,6 @@ import 
org.apache.sling.distribution.journal.queue.CacheCallback;
 import org.apache.sling.distribution.journal.queue.ClearCallback;
 import org.apache.sling.distribution.journal.queue.QueueState;
 import org.apache.sling.distribution.journal.shared.AgentId;
-import org.apache.sling.distribution.journal.shared.PublishMetrics;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git 
a/src/main/java/org/apache/sling/distribution/journal/impl/publisher/PubQueueProviderPublisher.java
 
b/src/main/java/org/apache/sling/distribution/journal/impl/publisher/PubQueueProviderPublisher.java
index 7f64427..16e597c 100644
--- 
a/src/main/java/org/apache/sling/distribution/journal/impl/publisher/PubQueueProviderPublisher.java
+++ 
b/src/main/java/org/apache/sling/distribution/journal/impl/publisher/PubQueueProviderPublisher.java
@@ -32,7 +32,6 @@ import 
org.apache.sling.distribution.journal.messages.PackageStatusMessage;
 import org.apache.sling.distribution.journal.queue.CacheCallback;
 import org.apache.sling.distribution.journal.queue.PubQueueProvider;
 import org.apache.sling.distribution.journal.queue.PubQueueProviderFactory;
-import org.apache.sling.distribution.journal.shared.PublishMetrics;
 import org.apache.sling.distribution.journal.shared.Topics;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceRegistration;
diff --git 
a/src/main/java/org/apache/sling/distribution/journal/shared/PublishMetrics.java
 
b/src/main/java/org/apache/sling/distribution/journal/impl/publisher/PublishMetrics.java
similarity index 98%
rename from 
src/main/java/org/apache/sling/distribution/journal/shared/PublishMetrics.java
rename to 
src/main/java/org/apache/sling/distribution/journal/impl/publisher/PublishMetrics.java
index 430c8cb..29f252a 100644
--- 
a/src/main/java/org/apache/sling/distribution/journal/shared/PublishMetrics.java
+++ 
b/src/main/java/org/apache/sling/distribution/journal/impl/publisher/PublishMetrics.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.sling.distribution.journal.shared;
+package org.apache.sling.distribution.journal.impl.publisher;
 
 import static java.lang.String.format;
 
diff --git 
a/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/DistributionSubscriber.java
 
b/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/DistributionSubscriber.java
index d09a8e7..170eeb0 100644
--- 
a/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/DistributionSubscriber.java
+++ 
b/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/DistributionSubscriber.java
@@ -64,6 +64,7 @@ import org.apache.sling.distribution.journal.Reset;
 import org.apache.sling.distribution.journal.bookkeeper.BookKeeper;
 import org.apache.sling.distribution.journal.bookkeeper.BookKeeperConfig;
 import org.apache.sling.distribution.journal.bookkeeper.BookKeeperFactory;
+import org.apache.sling.distribution.journal.bookkeeper.SubscriberMetrics;
 import org.apache.sling.distribution.journal.impl.precondition.Precondition;
 import 
org.apache.sling.distribution.journal.impl.precondition.Precondition.Decision;
 import org.apache.sling.distribution.journal.messages.LogMessage;
@@ -71,7 +72,6 @@ import 
org.apache.sling.distribution.journal.messages.OffsetMessage;
 import org.apache.sling.distribution.journal.messages.PackageMessage;
 import org.apache.sling.distribution.journal.messages.PackageStatusMessage;
 import org.apache.sling.distribution.journal.shared.Delay;
-import org.apache.sling.distribution.journal.shared.SubscriberMetrics;
 import org.apache.sling.distribution.journal.shared.Topics;
 import org.apache.sling.distribution.packaging.DistributionPackageBuilder;
 import org.apache.sling.settings.SlingSettingsService;
diff --git 
a/src/main/java/org/apache/sling/distribution/journal/shared/Timed.java 
b/src/main/java/org/apache/sling/distribution/journal/shared/Timed.java
new file mode 100644
index 0000000..7a46f8b
--- /dev/null
+++ b/src/main/java/org/apache/sling/distribution/journal/shared/Timed.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.distribution.journal.shared;
+
+import java.util.concurrent.Callable;
+
+import org.apache.sling.commons.metrics.Timer;
+
+public final class Timed {
+    
+    private Timed() {
+    }
+    
+    /**
+     * Runs provided code updating provided metric
+     * with its execution time.
+     * The method guarantees that the metric is updated
+     * even if the code throws an exception
+     * @param metric metric to update
+     * @param code code to clock
+     * @throws Exception actually it doesn't
+     */
+    public static void timed(Timer metric, Runnable code) throws Exception {
+        try (Timer.Context ignored = metric.time()) {
+            code.run();
+        }
+    }
+
+    /**
+     * Runs provided code updating provided metric
+     * with its execution time.
+     * The method guarantees that the metric is updated
+     * even if the code throws an exception
+     * @param metric metric to update
+     * @param code code to clock
+     * @return a value returned but <code>code.call()</code> invocation
+     * @throws Exception if underlying code throws
+     */
+    public static <T> T timed(Timer metric, Callable<T> code) throws Exception 
{
+        try (Timer.Context ignored = metric.time()) {
+            return code.call();
+        }
+    }
+}
diff --git 
a/src/test/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeperTest.java
 
b/src/test/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeperTest.java
index 1df8910..5c11b2d 100644
--- 
a/src/test/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeperTest.java
+++ 
b/src/test/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeperTest.java
@@ -38,7 +38,6 @@ import 
org.apache.sling.distribution.common.DistributionException;
 import org.apache.sling.distribution.journal.messages.LogMessage;
 import org.apache.sling.distribution.journal.messages.PackageMessage;
 import org.apache.sling.distribution.journal.messages.PackageStatusMessage;
-import org.apache.sling.distribution.journal.shared.SubscriberMetrics;
 import org.apache.sling.distribution.packaging.DistributionPackageBuilder;
 import org.apache.sling.testing.resourceresolver.MockResourceResolverFactory;
 import org.junit.Before;
diff --git 
a/src/test/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisherTest.java
 
b/src/test/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisherTest.java
index 1182734..d7541e9 100644
--- 
a/src/test/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisherTest.java
+++ 
b/src/test/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisherTest.java
@@ -63,7 +63,6 @@ import 
org.apache.sling.distribution.journal.messages.PackageMessage;
 import org.apache.sling.distribution.journal.queue.PubQueueProvider;
 import org.apache.sling.distribution.journal.queue.impl.OffsetQueueImpl;
 import org.apache.sling.distribution.journal.queue.impl.PubQueue;
-import org.apache.sling.distribution.journal.shared.PublishMetrics;
 import org.apache.sling.distribution.journal.shared.Topics;
 import org.apache.sling.distribution.packaging.DistributionPackageBuilder;
 import org.apache.sling.distribution.queue.spi.DistributionQueue;
diff --git 
a/src/test/java/org/apache/sling/distribution/journal/impl/publisher/MessagingCacheCallbackTest.java
 
b/src/test/java/org/apache/sling/distribution/journal/impl/publisher/MessagingCacheCallbackTest.java
index ddeebd9..c30d56b 100644
--- 
a/src/test/java/org/apache/sling/distribution/journal/impl/publisher/MessagingCacheCallbackTest.java
+++ 
b/src/test/java/org/apache/sling/distribution/journal/impl/publisher/MessagingCacheCallbackTest.java
@@ -49,7 +49,6 @@ import 
org.apache.sling.distribution.journal.messages.ClearCommand;
 import org.apache.sling.distribution.journal.messages.PackageMessage;
 import org.apache.sling.distribution.journal.messages.PackageMessage.ReqType;
 import org.apache.sling.distribution.journal.queue.QueueState;
-import org.apache.sling.distribution.journal.shared.PublishMetrics;
 import org.apache.sling.distribution.journal.shared.TestMessageInfo;
 import org.apache.sling.distribution.journal.shared.Topics;
 import org.junit.Before;
diff --git 
a/src/test/java/org/apache/sling/distribution/journal/impl/subscriber/SubscriberTest.java
 
b/src/test/java/org/apache/sling/distribution/journal/impl/subscriber/SubscriberTest.java
index 5d13f72..f1fa3d5 100644
--- 
a/src/test/java/org/apache/sling/distribution/journal/impl/subscriber/SubscriberTest.java
+++ 
b/src/test/java/org/apache/sling/distribution/journal/impl/subscriber/SubscriberTest.java
@@ -72,6 +72,7 @@ import org.apache.sling.distribution.journal.Reset;
 import org.apache.sling.distribution.journal.bookkeeper.BookKeeper;
 import org.apache.sling.distribution.journal.bookkeeper.BookKeeperFactory;
 import org.apache.sling.distribution.journal.bookkeeper.LocalStore;
+import org.apache.sling.distribution.journal.bookkeeper.SubscriberMetrics;
 import org.apache.sling.distribution.journal.shared.NoOpImportPostProcessor;
 import org.apache.sling.distribution.journal.impl.precondition.Precondition;
 import 
org.apache.sling.distribution.journal.impl.precondition.Precondition.Decision;
@@ -82,7 +83,6 @@ import 
org.apache.sling.distribution.journal.messages.PackageMessage.ReqType;
 import org.apache.sling.distribution.journal.messages.PackageStatusMessage;
 import 
org.apache.sling.distribution.journal.messages.PackageStatusMessage.Status;
 import org.apache.sling.distribution.journal.messages.PingMessage;
-import org.apache.sling.distribution.journal.shared.SubscriberMetrics;
 import org.apache.sling.distribution.journal.shared.TestMessageInfo;
 import org.apache.sling.distribution.journal.shared.Topics;
 import org.apache.sling.distribution.packaging.DistributionPackageBuilder;
diff --git 
a/src/test/java/org/apache/sling/distribution/journal/shared/SubscriberMetricsTest.java
 
b/src/test/java/org/apache/sling/distribution/journal/shared/SubscriberMetricsTest.java
index be5e2e3..7d43820 100644
--- 
a/src/test/java/org/apache/sling/distribution/journal/shared/SubscriberMetricsTest.java
+++ 
b/src/test/java/org/apache/sling/distribution/journal/shared/SubscriberMetricsTest.java
@@ -27,6 +27,7 @@ import org.apache.sling.commons.metrics.Meter;
 import org.apache.sling.commons.metrics.MetricsService;
 import org.apache.sling.commons.metrics.Timer;
 import org.apache.sling.commons.metrics.Timer.Context;
+import org.apache.sling.distribution.journal.bookkeeper.SubscriberMetrics;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;

Reply via email to