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