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

joerghoh pushed a commit to branch SLING-12369
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-models-impl.git

commit 9b1b84dadbdb1b93fd5848e81599aa471784b4fc
Author: Joerg Hoh <[email protected]>
AuthorDate: Fri Jul 5 17:30:36 2024 +0200

    SLING-12369 add metric to report the number of entries in the 
requestDisposalCallbacks map
---
 pom.xml                                                        | 10 ++++++++--
 .../java/org/apache/sling/models/impl/ModelAdapterFactory.java | 10 ++++++++++
 .../java/org/apache/sling/models/impl/AdapterFactoryTest.java  |  2 ++
 .../sling/models/impl/StaticInjectionAPFLoadOrderTest.java     |  3 +++
 4 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/pom.xml b/pom.xml
index c9e6be9..8cad0af 100644
--- a/pom.xml
+++ b/pom.xml
@@ -198,6 +198,12 @@
             <artifactId>annotations</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.commons.metrics</artifactId>
+            <version>1.2.12</version>
+            <scope>provided</scope>
+        </dependency>
         <!-- Test dependencies -->
         <dependency>
             <groupId>junit</groupId>
@@ -233,14 +239,14 @@
             <version>1.4.2</version>
             <scope>test</scope>
         </dependency>
-        <!-- transitive depedendencies of org.apache.sling.servlet-helpers -->
+               <!-- transitive depedendencies of 
org.apache.sling.servlet-helpers -->
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-collections4</artifactId>
             <version>4.1</version>
             <scope>test</scope>
         </dependency>
-        <!-- for testing the annotations -->
+               <!-- for testing the annotations -->
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.util.converter</artifactId>
diff --git 
a/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java 
b/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java
index 9724013..ce1893d 100644
--- a/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java
+++ b/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java
@@ -36,6 +36,8 @@ import org.apache.sling.api.adapter.Adaptable;
 import org.apache.sling.api.adapter.AdapterFactory;
 import org.apache.sling.api.adapter.AdapterManager;
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.commons.metrics.Gauge;
+import org.apache.sling.commons.metrics.MetricsService;
 import org.apache.sling.commons.osgi.RankedServices;
 import org.apache.sling.models.annotations.Model;
 import org.apache.sling.models.annotations.ValidationStrategy;
@@ -186,6 +188,9 @@ public class ModelAdapterFactory implements AdapterFactory, 
Runnable, ModelFacto
     private ConcurrentMap<java.lang.ref.Reference<Object>, Disposable> 
disposalCallbacks;
 
     private RequestDisposalCallbacks requestDisposalCallbacks;
+    
+    // exposes the number of elements in the RequestDisposableCallback's map
+    Gauge<Integer> requestsPendingCleanup;
 
     @Override
     public void run() {
@@ -230,6 +235,9 @@ public class ModelAdapterFactory implements AdapterFactory, 
Runnable, ModelFacto
 
     @Reference
     AdapterManager adapterManager;
+    
+    @Reference
+    MetricsService metricsService;
 
     ModelPackageBundleListener listener;
 
@@ -1179,6 +1187,8 @@ public class ModelAdapterFactory implements 
AdapterFactory, Runnable, ModelFacto
 
         this.configPrinterRegistration = 
bundleContext.registerService(Object.class,
                 new ModelConfigurationPrinter(this, bundleContext, 
adapterImplementations), printerProps);
+        
+        requestsPendingCleanup = 
metricsService.gauge("org.apache.sling.models.ModelAdapterFactory.requestsPendingCleanup",
 requestDisposalCallbacks.callbacks::size);
 
     }
 
diff --git a/src/test/java/org/apache/sling/models/impl/AdapterFactoryTest.java 
b/src/test/java/org/apache/sling/models/impl/AdapterFactoryTest.java
index 8b20b31..ad4842e 100644
--- a/src/test/java/org/apache/sling/models/impl/AdapterFactoryTest.java
+++ b/src/test/java/org/apache/sling/models/impl/AdapterFactoryTest.java
@@ -28,6 +28,7 @@ import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.api.wrappers.ValueMapDecorator;
+import org.apache.sling.commons.metrics.MetricsService;
 import org.apache.sling.models.annotations.Model;
 import org.apache.sling.models.annotations.injectorspecific.Self;
 import org.apache.sling.models.export.spi.ModelExporter;
@@ -81,6 +82,7 @@ public class AdapterFactoryTest {
         Converter c = Converters.standardConverter();
         Map<String, String> map = new HashMap<>();
         ModelAdapterFactoryConfiguration config = 
c.convert(map).to(ModelAdapterFactoryConfiguration.class);
+        factory.metricsService = Mockito.mock(MetricsService.class);
         factory.activate(componentCtx, config);
         factory.injectAnnotationProcessorFactories = Collections.emptyList();
         factory.injectAnnotationProcessorFactories2 = Collections.emptyList();
diff --git 
a/src/test/java/org/apache/sling/models/impl/StaticInjectionAPFLoadOrderTest.java
 
b/src/test/java/org/apache/sling/models/impl/StaticInjectionAPFLoadOrderTest.java
index 24bcb63..637ffa6 100644
--- 
a/src/test/java/org/apache/sling/models/impl/StaticInjectionAPFLoadOrderTest.java
+++ 
b/src/test/java/org/apache/sling/models/impl/StaticInjectionAPFLoadOrderTest.java
@@ -25,6 +25,7 @@ import static org.mockito.Mockito.when;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.adapter.AdapterManager;
 import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.commons.metrics.MetricsService;
 import org.apache.sling.models.annotations.Model;
 import org.apache.sling.models.annotations.injectorspecific.InjectionStrategy;
 import org.apache.sling.models.annotations.injectorspecific.SlingObject;
@@ -37,6 +38,7 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
+import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
 
 /**
@@ -123,6 +125,7 @@ public class StaticInjectionAPFLoadOrderTest {
     private void registerServices() {
         context.registerService(BindingsValuesProvidersByContext.class, 
bindingsValuesProvidersByContext);
         context.registerService(AdapterManager.class, adapterManager);
+        
context.registerService(MetricsService.class,Mockito.mock(MetricsService.class));
         factory = context.registerInjectActivateService(new 
ModelAdapterFactory());
     }
 

Reply via email to