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