You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by jo...@apache.org on 2021/08/04 08:18:28 UTC
[sling-org-apache-sling-scripting-core] branch master updated:
SLING-10584 log an info message if adding bindings takes more than 1 msec
(#8)
This is an automated email from the ASF dual-hosted git repository.
joerghoh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-core.git
The following commit(s) were added to refs/heads/master by this push:
new fd44c75 SLING-10584 log an info message if adding bindings takes more than 1 msec (#8)
fd44c75 is described below
commit fd44c75af0083a78182bba53cb2b6d8a7d98a8dc
Author: Jörg Hoh <jo...@users.noreply.github.com>
AuthorDate: Wed Aug 4 10:18:25 2021 +0200
SLING-10584 log an info message if adding bindings takes more than 1 msec (#8)
---
.../sling/scripting/core/impl/DefaultSlingScript.java | 12 ++++++++++++
.../scripting/core/impl/bundled/ScriptContextProvider.java | 14 ++++++++++++++
2 files changed, 26 insertions(+)
diff --git a/src/main/java/org/apache/sling/scripting/core/impl/DefaultSlingScript.java b/src/main/java/org/apache/sling/scripting/core/impl/DefaultSlingScript.java
index 519080d..f7cd274 100644
--- a/src/main/java/org/apache/sling/scripting/core/impl/DefaultSlingScript.java
+++ b/src/main/java/org/apache/sling/scripting/core/impl/DefaultSlingScript.java
@@ -89,6 +89,9 @@ class DefaultSlingScript implements SlingScript, Servlet, ServletConfig {
/** The logger. */
private static final Logger LOGGER = LoggerFactory.getLogger(DefaultSlingScript.class);
+ /** is defined on multiple files in this bundle*/
+ private static final long WARN_LIMIT_FOR_BVP_NANOS = (1000*1000); // 1 ms
+
/** Thread local containing the resource resolver. */
private static ThreadLocal<ResourceResolver> requestResourceResolver = new ThreadLocal<ResourceResolver>();
@@ -732,7 +735,16 @@ class DefaultSlingScript implements SlingScript, Servlet, ServletConfig {
ProtectedBindings protectedBindings = new ProtectedBindings(bindings, protectedKeys);
for (BindingsValuesProvider provider : bindingsValuesProviders) {
+ long start = System.nanoTime();
provider.addBindings(protectedBindings);
+ long stop = System.nanoTime();
+ LOGGER.trace("Invoking addBindings() of {} took {} nanoseconds",
+ provider.getClass().getName(), stop-start);
+ if (stop-start > WARN_LIMIT_FOR_BVP_NANOS) {
+ LOGGER.info("Adding the bindings of {} took {} microseconds which is above the harcoded limit of {} microseconds;"
+ + " if this message appears often it indicates that this BindingsValuesProvider has an impact on general page rendering performance",
+ new Object[]{provider.getClass().getName(), (stop-start)/1000, WARN_LIMIT_FOR_BVP_NANOS/1000});
+ }
}
}
diff --git a/src/main/java/org/apache/sling/scripting/core/impl/bundled/ScriptContextProvider.java b/src/main/java/org/apache/sling/scripting/core/impl/bundled/ScriptContextProvider.java
index c4612fd..4e8dd0d 100644
--- a/src/main/java/org/apache/sling/scripting/core/impl/bundled/ScriptContextProvider.java
+++ b/src/main/java/org/apache/sling/scripting/core/impl/bundled/ScriptContextProvider.java
@@ -62,6 +62,11 @@ import org.slf4j.LoggerFactory;
)
public class ScriptContextProvider implements BundleListener {
+ private static final Logger LOG = LoggerFactory.getLogger(ScriptContextProvider.class);
+
+ /** is defined on multiple files in this bundle*/
+ private static final long WARN_LIMIT_FOR_BVP_NANOS = (1000*1000); // 1 ms
+
private static final Set<String> PROTECTED_BINDINGS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(
SlingBindings.REQUEST,
SlingBindings.RESPONSE,
@@ -117,7 +122,16 @@ public class ScriptContextProvider implements BundleListener {
ProtectedBindings protectedBindings = new ProtectedBindings(bindings, PROTECTED_BINDINGS);
for (BindingsValuesProvider bindingsValuesProvider : bvpTracker.getBindingsValuesProviders(scriptEngine.getFactory(),
BindingsValuesProvider.DEFAULT_CONTEXT)) {
+ long start = System.nanoTime();
bindingsValuesProvider.addBindings(protectedBindings);
+ long stop = System.nanoTime();
+ LOG.trace("Invoking addBindings() of {} took {} nanoseconds",
+ bindingsValuesProvider.getClass().getName(), stop-start);
+ if ((stop-start) > WARN_LIMIT_FOR_BVP_NANOS) {
+ LOG.info("Adding the bindings of {} took {} microseconds which is above the hardcoded limit of {} microseconds;"
+ + " if this message appears often it indicates that this BindingsValuesProvider has an impact on general page rendering performance",
+ new Object[]{bindingsValuesProvider.getClass().getName(), (stop-start)/1000, WARN_LIMIT_FOR_BVP_NANOS/1000});
+ }
}
ScriptContext scriptContext = new BundledScriptContext();
Map<String, LazyBindings.Supplier> slingBindingsSuppliers = new HashMap<>();