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