SLING-9350 - Recompile scripts which hold a stale ScriptEngine reference
diff --git a/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/Script.java b/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/Script.java
index c541e59..bd274b3 100644
--- a/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/Script.java
+++ b/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/Script.java
@@ -76,10 +76,11 @@
@Override
public void eval(@NotNull ScriptEngine scriptEngine, @NotNull ScriptContext context) throws ScriptException {
try {
- if (scriptEngine instanceof Compilable && compiledScript == null) {
+ if (scriptEngine instanceof Compilable &&
+ (compiledScript == null || !scriptEngine.getFactory().equals(compiledScript.getEngine().getFactory()))) {
compilationLock.lock();
try {
- if (compiledScript == null) {
+ if (compiledScript == null || !scriptEngine.getFactory().equals(compiledScript.getEngine().getFactory())) {
compiledScript =
((Compilable) scriptEngine)
.compile(new ScriptNameAwareReader(new StringReader(getSourceCode()), getName()));