[
https://issues.apache.org/jira/browse/TINKERPOP-1644?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15924484#comment-15924484
]
ASF GitHub Bot commented on TINKERPOP-1644:
-------------------------------------------
Github user spmallette commented on a diff in the pull request:
https://github.com/apache/tinkerpop/pull/570#discussion_r105952425
--- Diff:
gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/CompilationOptionsCustomizer.java
---
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.groovy.jsr223;
+
+import org.apache.tinkerpop.gremlin.jsr223.Customizer;
+
+/**
+ * Provides some custom compilation options to the {@link
GremlinGroovyScriptEngine}.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+class CompilationOptionsCustomizer implements Customizer {
+
+ private final int expectedCompilationTime;
+
+ public CompilationOptionsCustomizer(final int expectedCompilationTime)
{
--- End diff --
I'm converting the integers to longs just to be consistent with other times
being in long milliseconds. The new plugin system doesn't work in the same way
as the old so trying to push a `CompilationOptionsCustomizer` into the list of
`compilerCustomizerProviders` won't work. I don't really think we should
promote the new plugin system until 3.3.0, but if you really want to give it a
shot you'll need to look at the SNAPSHOT docs and revised config files for
gremlin-server on the master branch that show how these new configurations go
in place. You can get an idea of how this will work under this new model here:
https://github.com/apache/tinkerpop/blob/master/gremlin-server/conf/gremlin-server-secure.yaml#L36
You would basically add a config option to that line for
`expectedCompilationTime` and it will configure the
`CompilationOptionsCustomizer` into the `GremlinScriptEngine`.
When I go to merge this to master, I'll need to update docs to reflect how
this configuration setting works. I will comment back here as soon as I've
pushed the latest changed.
> Improve script compilation process and include metrics
> ------------------------------------------------------
>
> Key: TINKERPOP-1644
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1644
> Project: TinkerPop
> Issue Type: Improvement
> Components: groovy
> Affects Versions: 3.2.4
> Reporter: Bryn Cooke
> Assignee: stephen mallette
>
> Currently there is no synchronisation around script compilation. This means
> that if a particularly heavy script is in use, many threads may end up
> compiling the same script.
> It would seem like a good idea to have some some sort of synchronisation to
> prevent ever getting to this stage.
> In addition, there will be cases where users will repeatedly submit broken
> scripts to the server. In this case it is useful to log the error the first
> time the script compilation is attempted and then cache the error for
> subsequent runs.
> Finally I have found some scripts take in excess of 30 seconds to compile. To
> aid performance debugging the script compilation times should be included in
> the logs.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)