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;
}