You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2020/08/28 16:45:12 UTC

[jena] branch master updated: Prevent EnvJavaScript.get from returning multiple instances

This is an automated email from the ASF dual-hosted git repository.

andy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jena.git


The following commit(s) were added to refs/heads/master by this push:
     new 792930c  Prevent EnvJavaScript.get from returning multiple instances
     new 5c96e84  Merge pull request #788 from strangepleasures/JENA-1953
792930c is described below

commit 792930c7ed74427aabda51fcea29554e48ffe894
Author: strangepleasures <pa...@thehyve.nl>
AuthorDate: Thu Aug 27 13:02:57 2020 +0200

    Prevent EnvJavaScript.get from returning multiple instances
---
 .../org/apache/jena/sparql/function/js/EnvJavaScript.java    | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/function/js/EnvJavaScript.java b/jena-arq/src/main/java/org/apache/jena/sparql/function/js/EnvJavaScript.java
index 259ba83..3d1bfe3 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/function/js/EnvJavaScript.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/function/js/EnvJavaScript.java
@@ -52,7 +52,7 @@ public class EnvJavaScript {
         return new EnvJavaScript(context);
     }
     
-    private static EnvJavaScript global = null;
+    private static volatile EnvJavaScript global = null;
     
     /**
      * Return the global {@code EnvJavaScript}. 
@@ -61,9 +61,11 @@ public class EnvJavaScript {
     public static EnvJavaScript get() {
         if ( global == null ) {
             synchronized(EnvJavaScript.class) {
-                Context context = ARQ.getContext();
-                if ( context.isDefined(symJavaScriptFunctions) || context.isDefined(symJavaScriptLibFile) )
-                    global = create(ARQ.getContext());
+                if ( global == null ) {
+                    Context context = ARQ.getContext();
+                    if ( context.isDefined(symJavaScriptFunctions) || context.isDefined(symJavaScriptLibFile) )
+                        global = create(context);
+                }
             }
         }
         return global ;
@@ -90,7 +92,7 @@ public class EnvJavaScript {
     // For now, in combination with the implementation of JSEngine,
     // we keep separate Nashorn script engines. 
     
-    private Pool<JSEngine> pool = PoolSync.create(new PoolBase<JSEngine>());
+    private final Pool<JSEngine> pool = PoolSync.create(new PoolBase<JSEngine>());
     
     private EnvJavaScript(Context context) {
         this.scriptLib = context.getAsString(symJavaScriptFunctions);