karate: Scenario Outline with huge Examples amount produces StackOverflowError (v0.9.1)
Hi Peter,
I recently upgraded from v0.8.0.1 to v0.9.1 and now one of my scenario outlines (Examples ~6400 rows) result in an StackOverflowError.
Exception in thread "main" java.lang.StackOverflowError
at java.lang.String.indexOf(String.java:1503)
at java.net.URLStreamHandler.parseURL(URLStreamHandler.java:143)
at sun.net.www.protocol.file.Handler.parseURL(Handler.java:67)
at java.net.URL.<init>(URL.java:622)
at java.net.URL.<init>(URL.java:490)
at sun.misc.URLClassPath$FileLoader.getResource(URLClassPath.java:1259)
at sun.misc.URLClassPath$FileLoader.findResource(URLClassPath.java:1249)
at sun.misc.URLClassPath.findResource(URLClassPath.java:215)
at java.net.URLClassLoader$2.run(URLClassLoader.java:569)
at java.net.URLClassLoader$2.run(URLClassLoader.java:567)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findResource(URLClassLoader.java:566)
at java.lang.ClassLoader.getResource(ClassLoader.java:1096)
at com.intuit.karate.FileUtils.fromRelativeClassPath(FileUtils.java:399)
at com.intuit.karate.FileUtils.toResource(FileUtils.java:162)
at com.intuit.karate.FileUtils.getFileStream(FileUtils.java:195)
at com.intuit.karate.FileUtils.readFileAsString(FileUtils.java:185)
at com.intuit.karate.FileUtils.readFile(FileUtils.java:107)
at com.intuit.karate.core.ScriptBridge.read(ScriptBridge.java:81)
at jdk.nashorn.internal.scripts.Script$Recompilation$6$14A$\^eval\_.L:1(<eval>:1)
at jdk.nashorn.internal.scripts.Script$5$\^eval\_.:program(<eval>:1)
at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637)
at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:449)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:406)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:402)
at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:155)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233)
at com.intuit.karate.ScriptBindings.eval(ScriptBindings.java:147)
at com.intuit.karate.ScriptBindings.updateBindingsAndEval(ScriptBindings.java:142)
at com.intuit.karate.ScriptBindings.evalInNashorn(ScriptBindings.java:127)
at com.intuit.karate.Script.evalJsExpression(Script.java:423)
at com.intuit.karate.Script.evalKarateExpression(Script.java:337)
at com.intuit.karate.Script.evalKarateExpression(Script.java:203)
at com.intuit.karate.Script.call(Script.java:1621)
at com.intuit.karate.Script.callAndUpdateConfigAndAlsoVarsIfMapReturned(Script.java:1773)
at com.intuit.karate.core.ScenarioContext.<init>(ScenarioContext.java:237)
at com.intuit.karate.StepActions.<init>(StepActions.java:52)
at com.intuit.karate.core.ScenarioExecutionUnit.init(ScenarioExecutionUnit.java:105)
at com.intuit.karate.core.ScenarioExecutionUnit.run(ScenarioExecutionUnit.java:179)
at com.intuit.karate.core.FeatureExecutionUnit.lambda$new$1(FeatureExecutionUnit.java:51)
at com.intuit.karate.core.FeatureExecutionUnit.run(FeatureExecutionUnit.java:123)
at com.intuit.karate.core.FeatureExecutionUnit.lambda$new$1(FeatureExecutionUnit.java:51)
at com.intuit.karate.core.FeatureExecutionUnit.lambda$run$2(FeatureExecutionUnit.java:116)
at com.intuit.karate.core.ScenarioExecutionUnit.run(ScenarioExecutionUnit.java:191)
at com.intuit.karate.core.ScenarioExecutionUnit.lambda$new$0(ScenarioExecutionUnit.java:66)
at com.intuit.karate.core.ScenarioExecutionUnit.run(ScenarioExecutionUnit.java:187)
at com.intuit.karate.core.ScenarioExecutionUnit.lambda$new$0(ScenarioExecutionUnit.java:66)
at com.intuit.karate.core.ScenarioExecutionUnit.run(ScenarioExecutionUnit.java:187)
at com.intuit.karate.core.ScenarioExecutionUnit.lambda$new$0(ScenarioExecutionUnit.java:66)
at com.intuit.karate.core.ScenarioExecutionUnit.run(ScenarioExecutionUnit.java:187)
at com.intuit.karate.core.ScenarioExecutionUnit.lambda$new$0(ScenarioExecutionUnit.java:66)
at com.intuit.karate.core.ScenarioExecutionUnit.run(ScenarioExecutionUnit.java:187)
at com.intuit.karate.core.ScenarioExecutionUnit.lambda$new$0(ScenarioExecutionUnit.java:66)
at com.intuit.karate.core.ScenarioExecutionUnit.run(ScenarioExecutionUnit.java:187)
at com.intuit.karate.core.ScenarioExecutionUnit.lambda$new$0(ScenarioExecutionUnit.java:66)
at com.intuit.karate.core.ScenarioExecutionUnit.run(ScenarioExecutionUnit.java:187)
at com.intuit.karate.core.ScenarioExecutionUnit.lambda$new$0(ScenarioExecutionUnit.java:66)
at com.intuit.karate.core.ScenarioExecutionUnit.run(ScenarioExecutionUnit.java:187)
at com.intuit.karate.core.ScenarioExecutionUnit.lambda$new$0(ScenarioExecutionUnit.java:66)
at com.intuit.karate.core.ScenarioExecutionUnit.run(ScenarioExecutionUnit.java:187)
at com.intuit.karate.core.FeatureExecutionUnit.lambda$new$1(FeatureExecutionUnit.java:51)
at com.intuit.karate.core.FeatureExecutionUnit.run(FeatureExecutionUnit.java:123)
...
I attached a maven skeleton project (bugtest.zip) including a feature where the error can be easily reproduced. The example scenario outline doesn’t do anything beside assigning the row values of the example table to variables in the scenario.
@parallel=false
Feature: StackOverflow Test
Scenario Outline: Produce StackOverflow
* def col1 = <test1>
* def col2 = <test2>
* def col3 = <test3>
* def col4 = <test4>
* def col5 = <test5>
* def col6 = <test6>
* def col7 = <test7>
* print col1
Examples:
| test1 | test2 | test3 | test4 | test5 | test6 | test7 |
|'ADD'| 'ADD'| 'ADD'| 'ADD'| 'ADD'| 'MODIFY'| 'invalid'|
|'ADD'| 'ADD'| 'ADD'| 'ADD'| 'ADD'| 'UNMODIFIED'| 'invalid'|
|'ADD'| 'ADD'| 'ADD'| 'ADD'| 'ADD'| 'DELETE'| 'invalid'|
|'ADD'| 'ADD'| 'ADD'| 'ADD'| 'MODIFY'| 'ADD'| 'invalid'|
...and so on...
This Error does not occure with v0.8.0.1. Please let me know if you need further information.
Keep up the good work, Peter!
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 20 (11 by maintainers)
Commits related to this issue
- improved feature execution loop to not recurse #661 — committed to karatelabs/karate by ptrthomas 5 years ago
- attempt fix too many open files prob #661 — committed to karatelabs/karate by ptrthomas 5 years ago
- tweak attempt fix too many open files prob #661 — committed to karatelabs/karate by ptrthomas 5 years ago
- last attempt fix too many open files prob #661 — committed to karatelabs/karate by ptrthomas 5 years ago
- fixed log / logic issue for dynamic scenario outlines #661 — committed to karatelabs/karate by ptrthomas 5 years ago
- trying to fix unstable build #661 — committed to karatelabs/karate by ptrthomas 5 years ago
- refactored scenario exec unit also to not recurse #661 — committed to karatelabs/karate by ptrthomas 5 years ago
- trying other approaches #661 — committed to karatelabs/karate by ptrthomas 5 years ago
- one more try to solve the gatling hang #661 — committed to karatelabs/karate by ptrthomas 5 years ago
- one more try for gatline cleanup #661 — committed to karatelabs/karate by ptrthomas 5 years ago
- temp disable pause time gatling #661 — committed to karatelabs/karate by ptrthomas 5 years ago
- this is getting ridiculous #661 — committed to karatelabs/karate by ptrthomas 5 years ago
- looks like this is solved now, just tweaking: #661 — committed to karatelabs/karate by ptrthomas 5 years ago
@ptrthomas It works like charm! Thank you, Peter!
@backfloep wow. who would have thought
okay, try this, can you add a
@parallel=falsetag for theScenario Outlineand try again