|Summary:||__groovy function seems to have useless synchronized in execute|
|Product:||JMeter - Now in Github||Reporter:||Philippe Mouawad <p.mouawad>|
|Component:||Main||Assignee:||JMeter issues mailing list <issues>|
Description Philippe Mouawad 2018-02-06 20:09:07 UTC
Following same analysis of Bug 57114 and as per understanding of this: - https://stackoverflow.com/questions/48644849/is-groovy-scriptingengine-thread-safe Groovy ScriptEngine "THREADING" is equal to MULTITHREADED: - https://docs.oracle.com/javase/8/docs/api/javax/script/ScriptEngineFactory.html#getParameter-java.lang.String- It seems we could avoid the synchronized block. Thoughts ? Thanks
Comment 1 Vladimir Sitnikov 2018-02-06 20:32:53 UTC
It does look like the synchronization there is not needed.
Comment 2 Philippe Mouawad 2018-02-06 20:41:44 UTC
(In reply to Vladimir Sitnikov from comment #1) > It does look like the synchronization there is not needed. Hi Vladimir, Would you say that this answer is correct : - https://stackoverflow.com/q/48648931/460802 IMO, it is. If we remove the synchronization, my understanding is that: - there is a risk if Groovy script uses global variables, there is no reason to do that - I am not sure about the risk on GroovyClassLoader. I don't think there is as per what is described here: http://docs.groovy-lang.org/latest/html/documentation/guide-integrating.html#groovyclassloader Is my understanding correct ? Thanks
Comment 3 Vladimir Sitnikov 2018-03-10 19:54:50 UTC
>- https://stackoverflow.com/q/48648931/460802 The link seems to not related to Groovy. >- there is a risk if Groovy script uses global variables, there is no reason to do that I agree, there's a little reason to do that. We might want to document how to avoid global variables. >- I am not sure about the risk on GroovyClassLoader. I don't think there is as per what is described here: As far as I can understand, it means "use of Apache JMeter string interpolation inside Groovy scripts would result in OutOfMemoryError". In other words, the best practice is to keep script string constant and pass all the params via parameters and/or Apache JMeter variables.
Comment 4 Philippe Mouawad 2018-03-11 20:10:50 UTC
The correct link is: https://stackoverflow.com/questions/48644849/is-groovy-scriptingengine-thread-safe