You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2016/12/19 15:25:09 UTC

svn commit: r1775121 - in /sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl: CommonResourceResolverFactoryImpl.java ResourceResolverFactoryActivator.java ResourceResolverFactoryConfig.java

Author: cziegeler
Date: Mon Dec 19 15:25:09 2016
New Revision: 1775121

URL: http://svn.apache.org/viewvc?rev=1775121&view=rev
Log:
SLING-6375 : Log a warning in case a resource resolver is closed by the Sling RR Finalizer thread

Modified:
    sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java
    sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
    sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryConfig.java

Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java?rev=1775121&r1=1775120&r2=1775121&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java Mon Dec 19 15:25:09 2016
@@ -86,11 +86,14 @@ public class CommonResourceResolverFacto
     /** Background thread handling disposing of resource resolver instances. */
     private final Thread refQueueThread;
 
+    private boolean logUnclosedResolvers;
+
     /**
      * Create a new common resource resolver factory.
      */
     public CommonResourceResolverFactoryImpl(final ResourceResolverFactoryActivator activator) {
         this.activator = activator;
+        this.logUnclosedResolvers = activator.isLogUnclosedResourceResolvers();
         this.refQueueThread = new Thread("Apache Sling Resource Resolver Finalizer Thread") {
 
             @Override
@@ -465,12 +468,12 @@ public class CommonResourceResolverFacto
             super(referent, q);
             this.control = ctrl;
             this.factory = factory;
-            this.openingException = LOG.isInfoEnabled() ? new Exception("Opening Stacktrace") : null;
+            this.openingException = factory.logUnclosedResolvers && LOG.isInfoEnabled() ? new Exception("Opening Stacktrace") : null;
         }
 
         public void close() {
             try {
-                if (factory.unregisterControl(this.control)) {
+                if (factory.unregisterControl(this.control) && factory.logUnclosedResolvers) {
                     if (factory.isLive()) {
                         LOG.warn("Closed unclosed ResourceResolver. The creation stacktrace is available on info log level.");
                     } else {

Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java?rev=1775121&r1=1775120&r2=1775121&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java Mon Dec 19 15:25:09 2016
@@ -195,6 +195,10 @@ public class ResourceResolverFactoryActi
         return this.config.resource_resolver_optimize_alias_resolution();
     }
 
+    public boolean isLogUnclosedResourceResolvers() {
+        return this.config.resource_resolver_log_unclosed();
+    }
+
     public String[] getVanityPathWhiteList() {
         return this.vanityPathWhiteList;
     }

Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryConfig.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryConfig.java?rev=1775121&r1=1775120&r2=1775121&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryConfig.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryConfig.java Mon Dec 19 15:25:09 2016
@@ -174,5 +174,10 @@ public @interface ResourceResolverFactor
                       "with the point where the used resolver was closed. It's advisable to not enable this feature on " +
                       "production systems.")
     boolean resource_resolver_log_closing() default false;
+
+    @AttributeDefinition(name = "Log unclosed resource resolvers",
+            description = "When enabled unclosed resource resolvers will be logged. Not closing " +
+                          "a resource resolver is a bug in the code using the resolver and should be fixed.")
+    boolean resource_resolver_log_unclosed() default true;
 }