[ 
https://issues.apache.org/jira/browse/TINKERPOP-1644?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15901092#comment-15901092
 ] 

ASF GitHub Bot commented on TINKERPOP-1644:
-------------------------------------------

Github user BrynCooke commented on the issue:

    https://github.com/apache/tinkerpop/pull/567
  
    1. ManagedConcurrentValueMap is not a map. I don't really know why we use 
this. but computeIfAbsent is not present on this class.
    2. Guava LoadingCache and MoreExecutors.directExecutor() is the correct way 
of solving this problem. It allows soft values and does all the syncronisation 
stuff for us. Is there a reason why guava is not used by Tinkerpop?
    
    If we want avoid guava we need to have a striped lock on script, and to 
create our own direct executor.



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

Reply via email to