You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by "Josh Adams (Jira)" <ji...@apache.org> on 2020/12/08 22:42:00 UTC
[jira] [Created] (DAFFODIL-2444) Path handling for expressions
expects an infoset to exist, causing unhandled exceptions
Josh Adams created DAFFODIL-2444:
------------------------------------
Summary: Path handling for expressions expects an infoset to exist, causing unhandled exceptions
Key: DAFFODIL-2444
URL: https://issues.apache.org/jira/browse/DAFFODIL-2444
Project: Daffodil
Issue Type: Bug
Components: Diagnostics
Affects Versions: 3.0.0
Reporter: Josh Adams
While enabling support for defineVariable's that have non-constant expressions, I ran into some error cases where the path handling code for expressions would throw NoSuchElement exceptions when trying to handle this case where we are trying to evaluate a path before the infoset even exists.
I attempted to add some basic handling to the case I was running into, but that only lead to finding more issues where we were at least running into some Assert.invariant checks instead of exceptions, but there are probably a number of places that could use proper error handling in here if we want to handle situations like this where the infoset doesn't exist.
Here is the stack trace for the test:
[error] Test org.apache.daffodil.section07.variables.TestVariables.test_defineVariable_ref_infoset_err failed: java.util.NoSuchElementException: head of empty list, took 0.029 sec
[error] at scala.collection.immutable.Nil$.head(List.scala:430)
[error] at scala.collection.immutable.Nil$.head(List.scala:427)
[error] at org.apache.daffodil.dpath.NamedStep.downwardStep$lzycompute(Expression.scala:1177)
[error] at org.apache.daffodil.dpath.NamedStep.downwardStep(Expression.scala:1176)
[error] at org.apache.daffodil.dpath.NamedStep.compiledDPath$lzycompute(Expression.scala:1167)
[error] at org.apache.daffodil.dpath.NamedStep.compiledDPath(Expression.scala:1166)
[error] at org.apache.daffodil.dpath.RelativePathExpression.$anonfun$compiledDPath$3(Expression.scala:828)
[error] at scala.collection.immutable.List.map(List.scala:286)
[error] at org.apache.daffodil.dpath.RelativePathExpression.compiledDPath$lzycompute(Expression.scala:827)
[error] at org.apache.daffodil.dpath.RelativePathExpression.compiledDPath(Expression.scala:826)
[error] at org.apache.daffodil.dpath.WholeExpression.compiledDPath$lzycompute(Expression.scala:650)
[error] at org.apache.daffodil.dpath.WholeExpression.compiledDPath(Expression.scala:650)
[error] at org.apache.daffodil.dpath.DFDLPathExpressionParser.compile(DFDLExpressionParser.scala:60)
[error] at org.apache.daffodil.dsom.ExpressionCompiler.compileRealExpression(CompiledExpression.scala:219)
[error] at org.apache.daffodil.dsom.ExpressionCompiler.compileExpression(CompiledExpression.scala:73)
[error] at org.apache.daffodil.dsom.ExpressionCompiler.compileProperty(CompiledExpression.scala:116)
[error] at org.apache.daffodil.dsom.DFDLDefineVariable.$anonfun$maybeDefaultValueExpr$1(DFDLDefineVariable.scala:73)
[error] at scala.Option.map(Option.scala:230)
[error] at org.apache.daffodil.dsom.DFDLDefineVariable.maybeDefaultValueExpr$lzycompute(DFDLDefineVariable.scala:72)
[error] at org.apache.daffodil.dsom.DFDLDefineVariable.maybeDefaultValueExpr(DFDLDefineVariable.scala:69)
[error] at org.apache.daffodil.dsom.DFDLDefineVariable.$anonfun$variableRuntimeData$1(DFDLDefineVariable.scala:86)
[error] at org.apache.daffodil.dsom.DFDLDefineVariable.$anonfun$variableRuntimeData$1$adapted(DFDLDefineVariable.scala:86)
[error] at org.apache.daffodil.processors.VariableRuntimeData.maybeDefaultValueExpr$lzycompute(RuntimeData.scala:966)
[error] at org.apache.daffodil.processors.VariableRuntimeData.maybeDefaultValueExpr(RuntimeData.scala:966)
[error] at org.apache.daffodil.processors.VariableRuntimeData.preSerialization(RuntimeData.scala:970)
[error] at org.apache.daffodil.dsom.DFDLDefineVariable.$anonfun$new$1(DFDLDefineVariable.scala:35)
[error] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[error] at org.apache.daffodil.oolag.OOLAG$OOLAGValueBase.liftedTree1$1(OOLAG.scala:669)
[error] at org.apache.daffodil.oolag.OOLAG$OOLAGValueBase.valueAsAny$lzycompute(OOLAG.scala:667)
[error] at org.apache.daffodil.oolag.OOLAG$OOLAGValueBase.valueAsAny(OOLAG.scala:664)
[error] at org.apache.daffodil.oolag.OOLAG$OOLAGHost.$anonfun$checkErrors$2(OOLAG.scala:414)
[error] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[error] at org.apache.daffodil.oolag.OOLAG$.keepGoing(OOLAG.scala:60)
[error] at org.apache.daffodil.oolag.OOLAG$OOLAGHost.checkErrors(OOLAG.scala:414)
[error] at org.apache.daffodil.oolag.OOLAG$OOLAGHost.checkErrors$(OOLAG.scala:400)
[error] at org.apache.daffodil.dsom.SchemaComponentImpl.checkErrors(SchemaComponent.scala:35)
[error] at org.apache.daffodil.oolag.OOLAG$OOLAGHost.isError(OOLAG.scala:471)
[error] at org.apache.daffodil.oolag.OOLAG$OOLAGHost.isError$(OOLAG.scala:470)
[error] at org.apache.daffodil.dsom.SchemaSet.super$isError(SchemaSet.scala:483)
[error] at org.apache.daffodil.dsom.SchemaSet.$anonfun$isError$2(SchemaSet.scala:483)
[error] at scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.java:23)
[error] at org.apache.daffodil.oolag.OOLAG$.keepGoing(OOLAG.scala:60)
[error] at org.apache.daffodil.dsom.SchemaSet.isError(SchemaSet.scala:474)
[error] at org.apache.daffodil.compiler.ProcessorFactory.isError(Compiler.scala:111)
[error] at org.apache.daffodil.compiler.Compiler.org$apache$daffodil$compiler$Compiler$$compileSourceInternal(Compiler.scala:329)
[error] at org.apache.daffodil.compiler.Compiler$.org$apache$daffodil$compiler$Compiler$$compileSourceSynchronizer(Compiler.scala:367)
[error] at org.apache.daffodil.compiler.Compiler.compileSource(Compiler.scala:314)
[error] at org.apache.daffodil.tdml.processor.TDMLDFDLProcessorFactory.compileProcessor(DaffodilTDMLDFDLProcessor.scala:148)
[error] at org.apache.daffodil.tdml.processor.TDMLDFDLProcessorFactory.$anonfun$getProcessor$1(DaffodilTDMLDFDLProcessor.scala:169)
[error] at org.apache.daffodil.tdml.SchemaCache.doCompile$lzycompute$1(SchemaCache.scala:95)
[error] at org.apache.daffodil.tdml.SchemaCache.doCompile$1(SchemaCache.scala:95)
[error] at org.apache.daffodil.tdml.SchemaCache.$anonfun$compileAndCache$1(SchemaCache.scala:108)
[error] at scala.collection.mutable.HashMap.getOrElseUpdate(HashMap.scala:86)
[error] at org.apache.daffodil.tdml.SchemaCache$Cache.getOrElseUpdate(SchemaCache.scala:51)
[error] at org.apache.daffodil.tdml.SchemaCache.compileAndCache(SchemaCache.scala:107)
[error] at org.apache.daffodil.tdml.processor.TDMLDFDLProcessorFactory.getProcessor(DaffodilTDMLDFDLProcessor.scala:169)
[error] at org.apache.daffodil.tdml.TestCase.run(TDMLRunner.scala:753)
[error] at org.apache.daffodil.tdml.DFDLTestSuite.runOneTest(TDMLRunner.scala:387)
[error] at org.apache.daffodil.tdml.Runner.runOneTest(RunnerFactory.scala:144)
[error] at org.apache.daffodil.tdml.Runner.runOneTest(RunnerFactory.scala:150)
[error] at org.apache.daffodil.section07.variables.TestVariables.test_defineVariable_ref_infoset_err(TestVariables.scala:71)
--
This message was sent by Atlassian Jira
(v8.3.4#803005)