Uploaded image for project: 'yangtools'
  1. yangtools
  2. YANGTOOLS-1308

Reactor failure with OpenROADM models

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved
    • Highest
    • Resolution: Done
    • 7.0.0, 7.0.3
    • 7.0.4
    • parser

    Description

      The reference counting machinery introduced in yang-parser-reactor seems to have a hole triggered by OpenROADM models.

      This is evident in https://git.opendaylight.org/gerrit/c/transportpce/+/96939 , where we end up with the following splat:

      [WARNING] Unexpected error processing source RevisionSourceIdentifier [name=org-openroadm-de-operations@2020-05-29]. Please file an issue with this model attached.
      com.google.common.base.VerifyException: Attempted to access reference count of SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)type}, rawArgument=string}
          at com.google.common.base.Verify.verify (Verify.java:181)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.incRef (ReactorStmtCtx.java:686)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.ReplicaStatementContext.<init> (ReplicaStatementContext.java:42)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.replicaAsChildOf (StatementContextBase.java:825)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.lambda$reusePrototypeReplicas$5 (InferredStatementContext.java:312)
          at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:195)
          at java.util.stream.ReferencePipeline$2$1.accept (ReferencePipeline.java:177)
          at java.util.Iterator.forEachRemaining (Iterator.java:133)
          at java.util.Spliterators$IteratorSpliterator.forEachRemaining (Spliterators.java:1801)
          at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:484)
          at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:474)
          at java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining (StreamSpliterators.java:312)
          at com.google.common.collect.CollectSpliterators$FlatMapSpliterator.lambda$forEachRemaining$1 (CollectSpliterators.java:361)
          at java.util.Spliterators$ArraySpliterator.forEachRemaining (Spliterators.java:948)
          at com.google.common.collect.CollectSpliterators$FlatMapSpliterator.forEachRemaining (CollectSpliterators.java:357)
          at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:484)
          at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:474)
          at java.util.stream.ReduceOps$ReduceOp.evaluateSequential (ReduceOps.java:913)
          at java.util.stream.AbstractPipeline.evaluate (AbstractPipeline.java:234)
          at java.util.stream.ReferencePipeline.collect (ReferencePipeline.java:578)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.reusePrototypeReplicas (InferredStatementContext.java:316)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.reusePrototypeReplicas (InferredStatementContext.java:306)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.tryToReuseSubstatements (InferredStatementContext.java:287)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.tryToReusePrototype (InferredStatementContext.java:228)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.createEffective (InferredStatementContext.java:217)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.createEffective (StatementContextBase.java:412)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.loadEffective (ReactorStmtCtx.java:382)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective (ReactorStmtCtx.java:372)
          at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:195)
          at java.util.ArrayList$ArrayListSpliterator.forEachRemaining (ArrayList.java:1655)
          at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:484)
          at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:474)
          at java.util.stream.ReduceOps$ReduceOp.evaluateSequential (ReduceOps.java:913)
          at java.util.stream.AbstractPipeline.evaluate (AbstractPipeline.java:234)
          at java.util.stream.ReferencePipeline.collect (ReferencePipeline.java:578)
          at org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.buildEffectiveSubstatements (AbstractStatementSupport.java:141)
          at org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.createEffective (AbstractStatementSupport.java:85)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.createEffective (StatementContextBase.java:426)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.createEffective (StatementContextBase.java:420)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.createEffective (StatementContextBase.java:412)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.loadEffective (ReactorStmtCtx.java:382)
          at org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective (ReactorStmtCtx.java:372)
      

      i.e. we are trying to increment reference count on a statement which has had its processing completed:

              verify(current >= REFCOUNT_NONE, "Attempted to access reference count of %s", this);
      

      The error reproduces most of the time, but the reported model may differ. With some luck the assembly may even finish without an issue.

      Attachments

        Issue Links

          # Subject Branch Project Status CR V

          Activity

            People

              rovarga Robert Varga
              rovarga Robert Varga
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: