HI, my code loads a Nashorn Script Engine binding values representing metadata fields and allows user to write Javascript to modify those metadata fields by passing the script to the eval method and then checking for modified metadata values. It was working fine but as I have increased the number of values added to the bindings I have unexpected issues that some binding variables values are missing or changed despite the script not modifying these values.

I am now able to mimic the problem with self contained example

|import javax.script.ScriptContext; import javax.script.ScriptEngine; public class JsTest { public static void main(String[] args) throws Exception { int numberOfBindingVars = Integer.parseInt(args[0]); ScriptEngine engine; for(int i=0; i<10; i++) { engine = new org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory().getScriptEngine(); for(int k=0;k<numberOfBindingVars;k++) { engine.put("var"+k,"1963"); } System.out.println(String.format("Bindings %d", engine.getBindings(ScriptContext.ENGINE_SCOPE).size())); for(int k=0;k<numberOfBindingVars;k++) { if(engine.get("var"+k)==null) { System.out.println("Missing var"+k); } } } } } Running this with parameter **400** works fine and gives me Bindings 400 Bindings 400 Bindings 400 Bindings 400 Bindings 400 Bindings 400 Bindings 400 Bindings 400 Bindings 400 Bindings 400 But if I increase parameter to **500** the binding count is inconsistent , although wierdly checking for each value doesnt reveal any missing. Bindings 500 Bindings 499 Bindings 498 Bindings 497 Bindings 496 Bindings 495 Bindings 494 Bindings 500 Bindings 499 Bindings 498 And if run with **1000** I get inconsistent count again, also unable to find certain vars around the 500 mark Bindings 1000 Bindings 999 Missing var448 Bindings 1000 Bindings 999 Missing var448 Bindings 998 Missing var448 Missing var449 Bindings 997 Missing var448 Missing var449 Missing var450 Bindings 996 Missing var448 Missing var449 Missing var450 Missing var451 Bindings 995 Missing var448 Missing var449 Missing var450 Missing var451 Missing var452 Bindings 994 Missing var448 Missing var449 Missing var450 Missing var451 Missing var452 Missing var453 Bindings 993 Missing var448 Missing var449 Missing var450 Missing var451 Missing var452 Missing var453 Missing var454 In all cases works okay the first time, but with the 500 and 1000 calls thesubsequent iterations are incorrect. Seems like there is some other Nashorn process trimming the size of the bindings?|

Reply via email to