Quick fix to logging and to init script execution

Init scripts weren't working right for scriptengines because they weren't 
getting the bindings set to the engine scope (which was happening under the old 
model of initialization). Without that setting, the types couldn't be 
identified and type checking features of Groovy wouldn't work if configured. CTR


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/38217929
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/38217929
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/38217929

Branch: refs/heads/TINKERPOP-1642
Commit: 38217929138ffe9e5ff391d33a42b92d8ca5700e
Parents: 7b234b4
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Mar 15 17:18:07 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Mar 15 17:18:07 2017 -0400

----------------------------------------------------------------------
 .../gremlin/jsr223/DefaultGremlinScriptEngineManager.java     | 7 ++++++-
 .../gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java      | 2 --
 .../tinkerpop/gremlin/server/util/ServerGremlinExecutor.java  | 5 +++--
 3 files changed, 9 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/38217929/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultGremlinScriptEngineManager.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultGremlinScriptEngineManager.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultGremlinScriptEngineManager.java
index b3025ec..c8b77e6 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultGremlinScriptEngineManager.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultGremlinScriptEngineManager.java
@@ -474,7 +474,12 @@ public class DefaultGremlinScriptEngineManager implements 
GremlinScriptEngineMan
         scriptCustomizers.stream().flatMap(sc -> sc.getScripts().stream()).
                 map(l -> String.join(System.lineSeparator(), 
l)).forEach(initScript -> {
             try {
-                final Object initializedBindings = engine.eval(initScript);
+                // need to apply global bindings here as part of the engine or 
else they don't get their binding types
+                // registered by certain GremlinScriptEngine instances (pretty 
much talking about gremlin-groovy here)
+                // where type checking is made important. this may not be a 
good generic way to handled this in the
+                // long run, but for now we only have two GremlinScriptEngines 
to be concerned about so thus far it
+                // presents no real pains
+                final Object initializedBindings = engine.eval(initScript, 
getBindings());
                 if (initializedBindings != null && initializedBindings 
instanceof Map)
                     ((Map<String,Object>) initializedBindings).forEach((k,v) 
-> put(k,v));
             } catch (Exception ex) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/38217929/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
----------------------------------------------------------------------
diff --git 
a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
 
b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
index 4b27180..7a39f43 100644
--- 
a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
+++ 
b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
@@ -720,8 +720,6 @@ public class GremlinGroovyScriptEngine extends 
GroovyScriptEngineImpl
             //This should never happen as the future should completed before 
it is returned to the us.
             throw new AssertionError();
         }
-
-
     }
 
     boolean isCached(final String script) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/38217929/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
----------------------------------------------------------------------
diff --git 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
index e3c0cae..56e78fb 100644
--- 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
+++ 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
@@ -149,7 +149,7 @@ public class ServerGremlinExecutor<T extends 
ScheduledExecutorService> {
 
         gremlinExecutor = gremlinExecutorBuilder.create();
 
-        logger.info("Initialized GremlinExecutor and configured 
ScriptEngines.");
+        logger.info("Initialized GremlinExecutor and preparing 
GremlinScriptEngines instances.");
 
         // force each scriptengine to process something so that the init 
scripts will fire (this is necessary if
         // the GremlinExecutor is using the GremlinScriptEngineManager. this 
is a bit of hack, but it at least allows
@@ -159,8 +159,9 @@ public class ServerGremlinExecutor<T extends 
ScheduledExecutorService> {
             try {
                 gremlinExecutor.eval("1+1", engineName, 
Collections.emptyMap()).join();
                 registerMetrics(engineName);
+                logger.info("Initialized {} GremlinScriptEngine and registered 
metrics", engineName);
             } catch (Exception ex) {
-                logger.warn(String.format("Could not initialize {} 
ScriptEngine as script could not be evaluated - %s", engineName), ex);
+                logger.warn(String.format("Could not initialize %s 
GremlinScriptEngine as init script could not be evaluated", engineName), ex);
             }
         });
 

Reply via email to