[
https://issues.apache.org/jira/browse/TINKERPOP-1644?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15899808#comment-15899808
]
ASF GitHub Bot commented on TINKERPOP-1644:
-------------------------------------------
Github user dkuppitz commented on the issue:
https://github.com/apache/tinkerpop/pull/567
This part:
```
if (clazz != null) {
return clazz.get();
}
clazz = CompletableFuture.supplyAsync(() -> loader.parseClass(script,
generateScriptName()));
classMap.put(script, clazz);
return clazz.get();
```
should be more like:
```
classMap.computeIfAbsent(script, s ->
CompletableFuture.supplyAsync(() -> loader.parseClass(s,
generateScriptName())))
return classMap.get(script).get();
```
No?
> Improve script compilation syncronisation
> -----------------------------------------
>
> 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
>
> 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)