You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by tm...@apache.org on 2022/03/31 07:16:11 UTC

[sling-org-apache-sling-distribution-journal] branch master updated: SLING-11157: Emit content distribution metrics per action type (#104)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 06de17d  SLING-11157: Emit content distribution metrics per action type (#104)
06de17d is described below

commit 06de17da7e0378fa61d22f950f50abaae3b898fd
Author: José Correia <37...@users.noreply.github.com>
AuthorDate: Thu Mar 31 09:16:05 2022 +0200

    SLING-11157: Emit content distribution metrics per action type (#104)
    
    * Adds a new metric that counts the amount of package status changes
    
    Co-authored-by: José Correia <jo...@adobe.com>
---
 .../sling/distribution/journal/bookkeeper/BookKeeper.java     |  4 ++++
 .../journal/shared/DistributionMetricsService.java            | 11 +++++++++++
 .../sling/distribution/journal/bookkeeper/BookKeeperTest.java |  8 ++++++++
 .../distribution/journal/impl/subscriber/SubscriberTest.java  |  2 ++
 .../journal/shared/DistributionMetricsServiceTest.java        |  1 +
 5 files changed, 26 insertions(+)

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 c5c6b9b..3dd4e54 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
@@ -173,6 +173,7 @@ public class BookKeeper implements Closeable {
             Event event = new AppliedEvent(pkgMsg, config.getSubAgentName()).toEvent();
             eventAdmin.postEvent(event);
             log.info("Imported distribution package {} at offset={}", pkgMsg, offset);
+            distributionMetricsService.getPackageStatusCounter(Status.IMPORTED.name()).increment();
         } catch (DistributionException | LoginException | IOException | RuntimeException | ImportPostProcessException e) {
             failure(pkgMsg, offset, e);
         }
@@ -205,6 +206,7 @@ public class BookKeeper implements Closeable {
 
             log.info("Invalidated the cache for the package {} at offset={}", pkgMsg, offset);
 
+            distributionMetricsService.getPackageStatusCounter(Status.IMPORTED.name()).increment();
             distributionMetricsService.getInvalidationProcessDuration().update((currentTimeMillis() - invalidationStartTime), TimeUnit.MILLISECONDS);
             distributionMetricsService.getInvalidationProcessSuccess().increment();
         } catch (LoginException | PersistenceException | InvalidationProcessException e) {
@@ -289,6 +291,7 @@ public class BookKeeper implements Closeable {
         }
         packageRetries.clear(pkgMsg.getPubAgentName());
         context.stop();
+        distributionMetricsService.getPackageStatusCounter(Status.REMOVED.name()).increment();
     }
     
     public void skipPackage(long offset) throws LoginException, PersistenceException {
@@ -381,6 +384,7 @@ public class BookKeeper implements Closeable {
             throw new DistributionException("Error removing failed package", e);
         }
         context.stop();
+        distributionMetricsService.getPackageStatusCounter(Status.REMOVED_FAILED.name()).increment();
     }
 
     private void storeStatus(ResourceResolver resolver, PackageStatus packageStatus) throws PersistenceException {
diff --git a/src/main/java/org/apache/sling/distribution/journal/shared/DistributionMetricsService.java b/src/main/java/org/apache/sling/distribution/journal/shared/DistributionMetricsService.java
index de68952..b118d53 100644
--- a/src/main/java/org/apache/sling/distribution/journal/shared/DistributionMetricsService.java
+++ b/src/main/java/org/apache/sling/distribution/journal/shared/DistributionMetricsService.java
@@ -340,6 +340,17 @@ public class DistributionMetricsService {
             getNameWithLabel(getMetricName(BASE_COMPONENT, "journal_unavailable_error_code_count"), "error_code", errorCode));
     }
 
+    /**
+     * Counter for all the different package status.
+     *
+     * @return a Sling Metric counter
+     */
+    public Counter getPackageStatusCounter(String status) {
+        return getCounter(
+                getNameWithLabel(getMetricName(BASE_COMPONENT, "package_status_count"), "status", status)
+        );
+    }
+
     public <T> GaugeService<T> createGauge(String name, String description, Supplier<T> supplier) {
         return new GaugeService<>(name, description, supplier);
     }
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 7174b12..87b33e9 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
@@ -131,6 +131,10 @@ public class BookKeeperTest {
 
     @Test
     public void testPackageImport() throws DistributionException {
+        when(distributionMetricsService.getPackageStatusCounter(
+                PackageStatusMessage.Status.IMPORTED.name())
+        ).thenReturn(mock(Counter.class));
+
         try {
             bookKeeper.importPackage(buildPackageMessage(PackageMessage.ReqType.ADD), 10, currentTimeMillis());
         } finally {
@@ -140,6 +144,10 @@ public class BookKeeperTest {
 
     @Test
     public void testCacheInvalidation() throws DistributionException {
+        when(distributionMetricsService.getPackageStatusCounter(
+                PackageStatusMessage.Status.IMPORTED.name())
+        ).thenReturn(mock(Counter.class));
+
         try {
             bookKeeper.invalidateCache(buildPackageMessage(PackageMessage.ReqType.INVALIDATE), 10);
         } finally {
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 045b47a..0fc92ef 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
@@ -524,6 +524,8 @@ public class SubscriberTest {
             .thenReturn(counter);
         when(distributionMetricsService.getImportPostProcessSuccess())
             .thenReturn(counter);
+        when(distributionMetricsService.getPackageStatusCounter(any(String.class)))
+            .thenReturn(counter);
     }
 
     private void assumeNoPrecondition() {
diff --git a/src/test/java/org/apache/sling/distribution/journal/shared/DistributionMetricsServiceTest.java b/src/test/java/org/apache/sling/distribution/journal/shared/DistributionMetricsServiceTest.java
index c980a22..516369c 100644
--- a/src/test/java/org/apache/sling/distribution/journal/shared/DistributionMetricsServiceTest.java
+++ b/src/test/java/org/apache/sling/distribution/journal/shared/DistributionMetricsServiceTest.java
@@ -105,6 +105,7 @@ public class DistributionMetricsServiceTest {
         assertNotNull(metrics.getRemovedFailedPackageDuration());
         assertNotNull(metrics.getRemovedPackageDuration());
         assertNotNull(metrics.getSendStoredStatusDuration());
+        assertNotNull(metrics.getPackageStatusCounter("mockStatus"));
     }
     
     @Test