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

radu pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-graphql-core.git


The following commit(s) were added to refs/heads/master by this push:
     new 1387c9c  SLING-9744 - Add metrics for the persisted queries
1387c9c is described below

commit 1387c9cfdb1091ad68115253de68a79b855f12b5
Author: Radu Cotescu <[email protected]>
AuthorDate: Tue Sep 22 23:46:05 2020 +0200

    SLING-9744 - Add metrics for the persisted queries
    
    * renamed metrics
    * unified metrics with OSGi configurations
---
 docs/metrics.md                                    |  5 +++--
 .../core/cache/SimpleGraphQLCacheProvider.java     | 26 +++++++++++-----------
 .../sling/graphql/core/servlet/GraphQLServlet.java | 20 ++++++++++++-----
 .../core/cache/SimpleGraphQLCacheProviderTest.java |  6 ++---
 .../graphql/core/servlet/GraphQLServletTest.java   |  2 +-
 5 files changed, 34 insertions(+), 25 deletions(-)

diff --git a/docs/metrics.md b/docs/metrics.md
index 318752a..abe910e 100644
--- a/docs/metrics.md
+++ b/docs/metrics.md
@@ -12,7 +12,7 @@ This page documents the metrics the Apache Sling GraphQL Core 
bundle exposes to
     the number of cache evictions for <a 
href="../README.md#caching-persisted-queries-api">persisted queries</a>
 </dd>
 
-<dt>org.apache.sling.graphql.core.cache.SimpleGraphQLCacheProvider.capacity</dt>
+<dt>org.apache.sling.graphql.core.cache.SimpleGraphQLCacheProvider.cacheSize</dt>
 <dd>
     the maximum number of entries the cache can store
 </dd>
@@ -38,7 +38,8 @@ This page documents the metrics the Apache Sling GraphQL Core 
bundle exposes to
 
 For each service instance of the 
`org.apache.sling.graphql.core.servlet.GraphQLServlet` servlet, the following 
additional
 metrics are available, where the `<qualifier>` is a string using the
-`[rt=list of servlet resource types][m=list of servlet methods][s=list of 
servlet selectors][e=list of servlet extensions]` pattern:
+`.rt:list of servlet resource types.m:list of servlet methods.s:list of 
servlet selectors.e:list of servlet extensions` pattern (each
+ list uses `_` as an element separator):
 
 <dl>
 
diff --git 
a/src/main/java/org/apache/sling/graphql/core/cache/SimpleGraphQLCacheProvider.java
 
b/src/main/java/org/apache/sling/graphql/core/cache/SimpleGraphQLCacheProvider.java
index 5b4a7b7..97a6092 100644
--- 
a/src/main/java/org/apache/sling/graphql/core/cache/SimpleGraphQLCacheProvider.java
+++ 
b/src/main/java/org/apache/sling/graphql/core/cache/SimpleGraphQLCacheProvider.java
@@ -68,18 +68,18 @@ public class SimpleGraphQLCacheProvider implements 
GraphQLCacheProvider {
 
         @AttributeDefinition(
                 name = "Capacity",
-                description = "The number of persisted queries to cache. If 
the capacity is set to a number greater than 0, then this " +
-                        "parameter will have priority over maxSize.",
+                description = "The number of persisted queries to cache. If 
the cache size is set to a number greater than 0, then this " +
+                        "parameter will have priority over maxMemory.",
                 type = AttributeType.INTEGER,
                 min = "0"
         )
-        int capacity() default 0;
+        int cacheSize() default 0;
 
         @AttributeDefinition(
                 name = "Max Values in Bytes",
                 description = "The maximum amount of memory the values stored 
in the cache can use."
         )
-        long maxSize() default 10 * FileUtils.ONE_MB;
+        long maxMemory() default 10 * FileUtils.ONE_MB;
 
     }
 
@@ -98,12 +98,12 @@ public class SimpleGraphQLCacheProvider implements 
GraphQLCacheProvider {
     private Counter evictions;
 
     private static final String METRIC_NS = 
SimpleGraphQLCacheProvider.class.getName();
-    private static final String GAUGE_CAPACITY = METRIC_NS + ".capacity";
+    private static final String GAUGE_CACHE_SIZE = METRIC_NS + ".cacheSize";
     private static final String GAUGE_ELEMENTS = METRIC_NS + ".elements";
     private static final String GAUGE_MAX_MEMORY = METRIC_NS + ".maxMemory";
     private static final String GAUGE_CURRENT_MEMORY = METRIC_NS + 
".currentMemory";
     private static final String COUNTER_EVICTIONS = METRIC_NS + ".evictions";
-    private static final Set<String> MANUALLY_REGISTERED_METRICS = new 
HashSet<>(Arrays.asList(GAUGE_CAPACITY, GAUGE_ELEMENTS,
+    private static final Set<String> MANUALLY_REGISTERED_METRICS = new 
HashSet<>(Arrays.asList(GAUGE_CACHE_SIZE, GAUGE_ELEMENTS,
             GAUGE_MAX_MEMORY, GAUGE_CURRENT_MEMORY));
 
     @Activate
@@ -112,22 +112,22 @@ public class SimpleGraphQLCacheProvider implements 
GraphQLCacheProvider {
         readLock = readWriteLock.readLock();
         writeLock = readWriteLock.writeLock();
         int capacity;
-        if (config.capacity() < 0) {
+        if (config.cacheSize() < 0) {
             capacity = 0;
-            LOGGER.debug("Cache capacity set to {}. Defaulting to 0.", 
config.capacity());
+            LOGGER.debug("Cache capacity set to {}. Defaulting to 0.", 
config.cacheSize());
         } else {
-            capacity = config.capacity();
+            capacity = config.cacheSize();
         }
         long maxMemory;
-        if (config.maxSize() < 0) {
+        if (config.maxMemory() < 0) {
             maxMemory = 0;
-            LOGGER.debug("Cache max memory set to {}. Defaulting to 0.", 
config.maxSize());
+            LOGGER.debug("Cache max memory set to {}. Defaulting to 0.", 
config.maxMemory());
         } else {
-            maxMemory = config.maxSize();
+            maxMemory = config.maxMemory();
         }
         persistedQueriesCache = new InMemoryLRUCache(capacity, maxMemory);
         LOGGER.debug("In-memory cache initialized: capacity={}, 
maxMemory={}.", capacity, maxMemory);
-        metricRegistry.register(GAUGE_CAPACITY, (Gauge<Integer>) () -> 
capacity);
+        metricRegistry.register(GAUGE_CACHE_SIZE, (Gauge<Integer>) () -> 
capacity);
         metricRegistry.register(GAUGE_MAX_MEMORY, (Gauge<Long>) () -> 
maxMemory);
         metricRegistry.register(GAUGE_CURRENT_MEMORY, (Gauge<Long>) () -> 
persistedQueriesCache.currentSizeInBytes);
         metricRegistry.register(GAUGE_ELEMENTS, (Gauge<Integer>) () -> 
persistedQueriesCache.size());
diff --git 
a/src/main/java/org/apache/sling/graphql/core/servlet/GraphQLServlet.java 
b/src/main/java/org/apache/sling/graphql/core/servlet/GraphQLServlet.java
index 7943bb8..f38c29f 100644
--- a/src/main/java/org/apache/sling/graphql/core/servlet/GraphQLServlet.java
+++ b/src/main/java/org/apache/sling/graphql/core/servlet/GraphQLServlet.java
@@ -21,6 +21,7 @@
 package org.apache.sling.graphql.core.servlet;
 
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -179,20 +180,27 @@ public class GraphQLServlet extends 
SlingAllMethodsServlet {
             patternGetPersistedQuery = null;
         }
         StringBuilder sb = new StringBuilder();
-        sb.append("[rt=").append(String.join(",", 
config.sling_servlet_resourceTypes())).append("]");
+        String[] resourceTypes = config.sling_servlet_resourceTypes();
+        Arrays.sort(resourceTypes);
+        sb.append("rt:").append(String.join("_", resourceTypes));
         if (config.sling_servlet_methods().length > 0) {
-            sb.append("[m=").append(String.join(",", 
config.sling_servlet_methods())).append("]");
+            String[] methods = config.sling_servlet_methods();
+            Arrays.sort(methods);
+            sb.append(".m:").append(String.join("_", methods));
         }
         if (config.sling_servlet_selectors().length > 0) {
-            sb.append("[s=").append(String.join(",", 
config.sling_servlet_selectors())).append("]");
+            String[] selectors = config.sling_servlet_selectors();
+            Arrays.sort(selectors);
+            sb.append(".s:").append(String.join("_", selectors));
         }
-        if (config.sling_servlet_extensions().length > 0) {
-            sb.append("[e=").append(String.join(",", 
config.sling_servlet_extensions())).append("]");
+        if (extensions.length > 0) {
+            Arrays.sort(extensions);
+            sb.append(".e:").append(String.join("_", extensions));
         }
         servletRegistrationProperties = sb.toString();
         cacheHits = metricsService.counter(METRIC_NS + "." + 
servletRegistrationProperties + ".cache_hits");
         cacheMisses = metricsService.counter(METRIC_NS + "." + 
servletRegistrationProperties + ".cache_misses");
-        requestsServed = metricsService.counter(METRIC_NS + "." + 
servletRegistrationProperties + ".total_requests");
+        requestsServed = metricsService.counter(METRIC_NS + "." + 
servletRegistrationProperties + ".requests_total");
         gaugeCacheHitRate = METRIC_NS + "." + servletRegistrationProperties + 
".cache_hit_rate";
         metricRegistry.register(gaugeCacheHitRate,
                 (Gauge<Float>) () -> (float) (cacheHits.getCount() / (float) 
(cacheHits.getCount() + cacheMisses.getCount())));
diff --git 
a/src/test/java/org/apache/sling/graphql/core/cache/SimpleGraphQLCacheProviderTest.java
 
b/src/test/java/org/apache/sling/graphql/core/cache/SimpleGraphQLCacheProviderTest.java
index b42eaac..16fe357 100644
--- 
a/src/test/java/org/apache/sling/graphql/core/cache/SimpleGraphQLCacheProviderTest.java
+++ 
b/src/test/java/org/apache/sling/graphql/core/cache/SimpleGraphQLCacheProviderTest.java
@@ -62,7 +62,7 @@ public class SimpleGraphQLCacheProviderTest {
 
     @Test
     public void testMemoryLimits() {
-        context.registerInjectActivateService(new 
SimpleGraphQLCacheProvider(), "capacity", 0, "maxSize", 40);
+        context.registerInjectActivateService(new 
SimpleGraphQLCacheProvider(), "cacheSize", 0, "maxMemory", 40);
         SimpleGraphQLCacheProvider provider = (SimpleGraphQLCacheProvider) 
context.getService(GraphQLCacheProvider.class);
         assertNotNull(provider);
 
@@ -89,7 +89,7 @@ public class SimpleGraphQLCacheProviderTest {
 
     @Test
     public void testCapacityLimits() {
-        context.registerInjectActivateService(new 
SimpleGraphQLCacheProvider(), "capacity", 3, "maxSize", 0);
+        context.registerInjectActivateService(new 
SimpleGraphQLCacheProvider(), "cacheSize", 3, "maxMemory", 0);
         SimpleGraphQLCacheProvider provider = (SimpleGraphQLCacheProvider) 
context.getService(GraphQLCacheProvider.class);
         assertNotNull(provider);
 
@@ -116,7 +116,7 @@ public class SimpleGraphQLCacheProviderTest {
 
     @Test
     public void testCapacityHasPriorityOverMemory() {
-        context.registerInjectActivateService(new 
SimpleGraphQLCacheProvider(), "capacity", 2, "maxSize", 40);
+        context.registerInjectActivateService(new 
SimpleGraphQLCacheProvider(), "cacheSize", 2, "maxMemory", 40);
         SimpleGraphQLCacheProvider provider = (SimpleGraphQLCacheProvider) 
context.getService(GraphQLCacheProvider.class);
         assertNotNull(provider);
 
diff --git 
a/src/test/java/org/apache/sling/graphql/core/servlet/GraphQLServletTest.java 
b/src/test/java/org/apache/sling/graphql/core/servlet/GraphQLServletTest.java
index 6703d28..100bdc0 100644
--- 
a/src/test/java/org/apache/sling/graphql/core/servlet/GraphQLServletTest.java
+++ 
b/src/test/java/org/apache/sling/graphql/core/servlet/GraphQLServletTest.java
@@ -90,7 +90,7 @@ public class GraphQLServletTest {
             SlingScalarsProvider slingScalarsProvider = 
mock(SlingScalarsProvider.class);
             context.registerService(slingScalarsProvider);
 
-            context.registerInjectActivateService(new 
SimpleGraphQLCacheProvider(), "maxSize", 10);
+            context.registerInjectActivateService(new 
SimpleGraphQLCacheProvider(), "maxMemory", 10);
 
             context.registerInjectActivateService(new GraphQLServlet(), 
ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES, "a/b/c",
                     "persistedQueries.suffix", "/persisted");

Reply via email to