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()));