<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:55:47 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>OpenDaylight JIRA</title>
    <link>https://jira.opendaylight.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.20.10</version>
        <build-number>820010</build-number>
        <build-date>22-06-2022</build-date>
    </build-info>


<item>
            <title>[YANGTOOLS-1308] Reactor failure with OpenROADM models</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-1308</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;The reference counting machinery introduced in yang-parser-reactor seems to have a hole triggered by OpenROADM models.&lt;/p&gt;

&lt;p&gt;This is evident in &lt;a href=&quot;https://git.opendaylight.org/gerrit/c/transportpce/+/96939&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/c/transportpce/+/96939&lt;/a&gt; , where we end up with the following splat:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;[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.&amp;lt;init&amp;gt; (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)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;i.e. we are trying to increment reference count on a statement which has had its processing completed:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
        verify(current &amp;gt;= REFCOUNT_NONE, &lt;span class=&quot;code-quote&quot;&gt;&quot;Attempted to access reference count of %s&quot;&lt;/span&gt;, &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The error reproduces most of the time, but the reported model may differ. With some luck the assembly may even finish without an issue.&lt;/p&gt;</description>
                <environment></environment>
        <key id="34221">YANGTOOLS-1308</key>
            <summary>Reactor failure with OpenROADM models</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="1" iconUrl="https://jira.opendaylight.org/images/icons/priorities/blocker.svg">Highest</priority>
                        <status id="5" iconUrl="https://jira.opendaylight.org/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Done</resolution>
                                        <assignee username="rovarga">Robert Varga</assignee>
                                    <reporter username="rovarga">Robert Varga</reporter>
                        <labels>
                            <label>regression</label>
                    </labels>
                <created>Wed, 21 Jul 2021 17:35:52 +0000</created>
                <updated>Sat, 24 Jul 2021 17:46:40 +0000</updated>
                            <resolved>Sat, 24 Jul 2021 17:46:40 +0000</resolved>
                                    <version>7.0.0</version>
                    <version>7.0.3</version>
                                    <fixVersion>7.0.4</fixVersion>
                                    <component>parser</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="69425" author="rovarga" created="Wed, 21 Jul 2021 18:03:52 +0000"  >&lt;p&gt;The pass through InferredStatementContext means we are going through an augment/uses edge towards a definition source and that source has already been processed by its parent while we were not holding a reference. It would seem we either are failing to take a reference in some edge case, or we are dropping a reference too early.&lt;/p&gt;

&lt;p&gt;This will require a run with full tracing, I am afraid.&lt;/p&gt;</comment>
                            <comment id="69427" author="rovarga" created="Thu, 22 Jul 2021 14:50:12 +0000"  >&lt;p&gt;So the reproducer is in transportpce.git/ordmodels/device, mostly. I have run 11 runs, out of which:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;3 succeeded &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.opendaylight.org/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/li&gt;
	&lt;li&gt;6 failed on org.openroadm-de-operations, with 1:2:3 split between revisions 2016-10-14, 2018-10-19, 2020-05-29&lt;/li&gt;
	&lt;li&gt;2 failed on org-openroadm-resources, in one in each of 2016-10-14 and 2018-10-19&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;All of the failures are touching a statement which has already been cleaned up. Augmented logging, not present in current code base, reveals that just before the failure we are sweeping a &apos;uses&apos; statement referencing a grouping from org-openroadm-resource-types.&lt;/p&gt;

&lt;p&gt;The failures are of two kinds, not related to which module is being blamed. Twice we do this:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;[INFO] Sweeping on decrement SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)uses}, rawArgument=org-openroadm-resource-types:device-id, refCount=0}
// ...
com.google.common.base.VerifyException: Attempted to access reference count of SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)description}, rawArgument=Node Id is a globally unique identifier for a device.
Same as leafref value in model, if applicable., refCount=SWEPT}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;and 6 times we do this:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;[INFO] Sweeping on decrement ReplicaStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)description}, rawArgument=Node Id is a globally unique identifier for a device.
Same as leafref value in model, if applicable., refCount=0}
[INFO] Sweeping on decrement InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, rawArgument=node-id, refCount=0}
[INFO] Sweeping on decrement SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)uses}, rawArgument=org-openroadm-resource-types:circuit-pack-name, refCount=0}
[INFO] Sweeping on decrement ReplicaStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)type}, rawArgument=string, refCount=0}
[INFO] Sweeping on decrement ReplicaStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)mandatory}, rawArgument=true, refCount=0}
[INFO] Sweeping on decrement ReplicaStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)description}, rawArgument=Circuit-Pack identifier. Unique within the context of a device.
Same as leafref value in model, if applicable., refCount=0}
[INFO] Last released on SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, rawArgument=circuit-pack-name, refCount=0}
[INFO] Sweeping on decrement SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, rawArgument=circuit-pack-name, refCount=0}
[INFO] Sweeping on decrement InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, rawArgument=circuit-pack-name, refCount=0}
[INFO] Sweeping on decrement SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)case}, rawArgument=circuit-pack, refCount=0}
[INFO] Sweeping on decrement SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)uses}, rawArgument=org-openroadm-resource-types:port-name, refCount=0}
// ...
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, refCount=SWEPT}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="69428" author="rovarga" created="Thu, 22 Jul 2021 14:55:36 +0000"  >&lt;p&gt;The second failure mode is probably more interesting, as it shows a consistent sweep cascade.&lt;br/&gt;
It seems both failures modes are rooted in the following block in org-openroadm-device:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt; &#160;grouping external-link {
 &#160;&#160;&#160;leaf external-link-name {
 &#160;&#160;&#160;&#160;&#160;type string;
 &#160;&#160;&#160;}
 &#160;&#160;&#160;container source {
 &#160;&#160;&#160;&#160;&#160;uses org-openroadm-resource-types:device-id {
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;refine &quot;node-id&quot; {
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;mandatory true;
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;}
 &#160;&#160;&#160;&#160;&#160;}
 &#160;&#160;&#160;&#160;&#160;uses org-openroadm-resource-types:port-name {
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;refine &quot;circuit-pack-name&quot; {
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;mandatory true;
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;}
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;refine &quot;port-name&quot; {
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;mandatory true;
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;}
 &#160;&#160;&#160;&#160;&#160;}
 &#160;&#160;&#160;}
 &#160;&#160;&#160;container destination {
 &#160;&#160;&#160;&#160;&#160;uses org-openroadm-resource-types:device-id {
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;refine &quot;node-id&quot; {
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;mandatory true;
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;}
 &#160;&#160;&#160;&#160;&#160;}
 &#160;&#160;&#160;&#160;&#160;uses org-openroadm-resource-types:port-name {
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;refine &quot;circuit-pack-name&quot; {
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;mandatory true;
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;}
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;refine &quot;port-name&quot; {
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;mandatory true;
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;}
 &#160;&#160;&#160;&#160;&#160;}
 &#160;&#160;&#160;}
 &#160;}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;There does not seem to be anything special about these, except one thing: they are the only &apos;uses&apos; from an external module which is coupled with a &apos;refine&apos; statement.&lt;/p&gt;</comment>
                            <comment id="69429" author="rovarga" created="Thu, 22 Jul 2021 15:23:26 +0000"  >&lt;p&gt;It suspect the problem is that we need to still retain a refcount to &quot;port-name/circuit-pack-name&quot; or &quot;device-id/node-id&quot;, in the source tree until after the refine statement itself is completely built.&lt;/p&gt;

&lt;p&gt;It needs some more investigation, but perhaps this is enough to build a minimal reproducer model.&lt;/p&gt;</comment>
                            <comment id="69430" author="rovarga" created="Fri, 23 Jul 2021 13:36:58 +0000"  >&lt;p&gt;The statement has been swept from this context:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.sweepDone(ReactorStmtCtx.java:913)
org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.sweepState(ReactorStmtCtx.java:923)
org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.sweepOnDecrement(ReactorStmtCtx.java:815)
org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.lastDecRef(ReactorStmtCtx.java:743)
org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.decRef(ReactorStmtCtx.java:725)
org.opendaylight.yangtools.yang.parser.stmt.reactor.ReplicaStatementContext.sweepSubstatements(ReplicaStatementContext.java:142)
org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.sweepState(ReactorStmtCtx.java:921)
org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.sweep(ReactorStmtCtx.java:784)
org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.sweep(ReactorStmtCtx.java:773)
org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.sweepSubstatements(InferredStatementContext.java:505)
org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.sweepState(ReactorStmtCtx.java:921)
org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.sweepOnDecrement(ReactorStmtCtx.java:815)
org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.lastDecRef(ReactorStmtCtx.java:743)
org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.decRef(ReactorStmtCtx.java:725)
org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.tryToReuseSubstatements(InferredStatementContext.java:288)
org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.tryToReusePrototype(InferredStatementContext.java:228)
org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.createEffective(InferredStatementContext.java:217)
org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.createEffective(StatementContextBase.java:412)
org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.loadEffective(ReactorStmtCtx.java:385)
org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective(ReactorStmtCtx.java:375)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="69431" author="rovarga" created="Fri, 23 Jul 2021 19:15:39 +0000"  >&lt;p&gt;log.txt contains a run with some additional logging, which might help with finding out the cause behind this.&lt;/p&gt;</comment>
                            <comment id="69432" author="rovarga" created="Sat, 24 Jul 2021 16:29:38 +0000"  >&lt;p&gt;After a bit of analysis, it seems the problem is with the UsesStatementSupport.performRefine().&#160; We are performing materialization of substatements, which is fine, but as part of that operation we end up calculating (and memoizing) parent reference counts. Since we are still working within inference, not all of refcount has been materialized, yet &#8211; and we therefore memoize that &apos;type string&apos;s parent &apos;leaf type&apos; has no references. It later grows a reference, but by that time the damage has already been done &#8211; since &apos;type string&apos; saw no parent references and it built its effective statement, it sweeps itself.&lt;/p&gt;

&lt;p&gt;We later follow the reference we are holding and end up colliding with the invariant.&lt;/p&gt;

&lt;p&gt;An indication of this is that the not all statements in the hierarchy (most notably module) have not reached ModelProcessingPhase.EFFECTIVE_MODEL. This means that any asks for parent refcount should not result in &apos;absent&apos;, as we just do not know.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="33598">YANGTOOLS-1184</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="16401" name="log.txt.xz" size="635852" author="rovarga" created="Fri, 23 Jul 2021 19:13:42 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_11400" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i03yxj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>