<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:54:02 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-694] Eliminate duplicate DescriptionEffectiveStatementImpl objects</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-694</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;Analysis of a memory snapshot with vendor models shows we end up with a SchemaContext which weighs about 240MB. Further analysis of duplicate objects shows we have ~4000 instances of DescriptionEffectiveStatementImpl wasting ~400kB, which refer to a single description statement defined in a grouping.&lt;/p&gt;

&lt;p&gt;This hints at us not having the understanding that a statement has been copied and unmodified from a grouping. Analyze the exact cause for this and fix it either by not performing a copy, or squashing resulting duplicates.&lt;/p&gt;

&lt;p&gt;This theory is reinforced by the fact that the same dump shows ~64K WhenEffectiveStatementImpl objects (23x groups of 2769 instances each) coming from a construct like:&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;
grouping foo {
  leaf bar {
    when &lt;span class=&quot;code-quote&quot;&gt;&quot;../x&quot;&lt;/span&gt;;
  }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;A similar situation happens with UnitsEffectiveStatementImpl &#8211; 15K instances wasting 450kB.&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="23114">YANGTOOLS-694</key>
            <summary>Eliminate duplicate DescriptionEffectiveStatementImpl objects</summary>
                <type id="10100" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10310&amp;avatarType=issuetype">Improvement</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="miro.kovac">Miroslav Kovac</assignee>
                                    <reporter username="rovarga">Robert Varga</reporter>
                        <labels>
                    </labels>
                <created>Tue, 18 Oct 2016 12:59:40 +0000</created>
                <updated>Sun, 10 Apr 2022 18:35:54 +0000</updated>
                            <resolved>Wed, 20 Jan 2021 18:36:39 +0000</resolved>
                                                    <fixVersion>7.0.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>7</watches>
                                                                                                                                                            <comments>
                            <comment id="44203" author="rovarga" created="Wed, 19 Oct 2016 22:51:53 +0000"  >&lt;p&gt;I think the root cause for this is in SubstatementContext.copy&lt;/p&gt;

{Declared,Effective}

&lt;p&gt;Statements and GroupingUtils.needToCopyByUses(). The check is a weird and undocumented one and does not take effect in situations like:&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;
grouping foo {
  leaf foo {
    description &lt;span class=&quot;code-quote&quot;&gt;&quot;foo&quot;&lt;/span&gt;;
  }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Note leaf is copied, but since description&apos;s getParentContext() points to a leaf, the second part check fails and the description ends up being copied.&lt;/p&gt;

&lt;p&gt;If this is true, the fix for this issue will also mean we will cut down temporary object use, too.&lt;/p&gt;</comment>
                            <comment id="44204" author="rovarga" created="Wed, 19 Oct 2016 23:21:22 +0000"  >&lt;p&gt;A simple unit test for this can be created. With the following models:&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;module foo {
  grouping foo {
    leaf foo {
      type string;
      units foo;
    }
  }

  grouping export {
    uses grouping foo;
  }
}

module bar {
  import foo;

  container bar-export {
    uses foo:export;
  }

  container bar-foo {
    uses foo:foo;
  }
}

module baz {
  import foo;

  container baz-export {
    uses foo:export;
  }

  container baz-foo {
    uses foo:foo;
  }
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;All units visible from effective model should point to the same UnitsEffectiveStatementImpls bject.&lt;/p&gt;</comment>
                            <comment id="44206" author="rovarga" created="Tue, 25 Oct 2016 14:54:47 +0000"  >&lt;p&gt;We have eliminated all obvious duplicates during assembly, with the exception of duplication of StatementContextBase, which is performed when statements are inlined via uses statement.&lt;/p&gt;

&lt;p&gt;This is caused by the fact we copy all declared/effective statements eagerly, no matter if they will be touched in future &#8211; just to update their parent, path and copy history.&lt;/p&gt;

&lt;p&gt;We need to create StatementContextBase equivalent proxy, which will perform the copy lazily as needed and add the changed CopyHistory and similar details to createEffective(), so it ends up reusing statement definitions if they are not touched by an augment, refine or similar.&lt;/p&gt;</comment>
                            <comment id="44207" author="rovarga" created="Mon, 5 Jun 2017 14:13:24 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.opendaylight.org/browse/YANGTOOLS-779&quot; title=&quot;OOM expection while parsing 27.1 MB of YANG with 2GO RAM&quot; class=&quot;issue-link&quot; data-issue-key=&quot;YANGTOOLS-779&quot;&gt;&lt;del&gt;YANGTOOLS-779&lt;/del&gt;&lt;/a&gt; shows that this particular issue can be hit out in the field. ~28MB of models, which are presumably grouping/uses-heavy can cause us to run out 4GB of heap.&lt;/p&gt;

&lt;p&gt;A memory snapshot taken due to an OOM during FULL_DECLARATION parsing phase shows 1.5GB memory usage, with 6.2M SubstatementContext instances retaining ~1.1GB.&lt;/p&gt;

&lt;p&gt;While this memory usage is temporary (BuildGlobalContext shows 800MB retained at this point), we obviously need to address this to keep our resource usage within reasonable bounds.&lt;/p&gt;</comment>
                            <comment id="44208" author="rovarga" created="Mon, 5 Jun 2017 23:35:39 +0000"  >&lt;p&gt;I am not sure we can deliver this by Carbon SR1.&lt;/p&gt;

&lt;p&gt;Solving this issue requires re-wiring &apos;uses&apos;, &apos;augment&apos;, &apos;refine&apos; and &apos;deviate&apos; mechanics, which deals with namespace management and child nodes. Namespace management there is tricky and we essentially want a copy-on-write StatementContextBase.&lt;/p&gt;</comment>
                            <comment id="44209" author="rovarga" created="Wed, 7 Jun 2017 08:17:47 +0000"  >&lt;p&gt;There are three sides to this problem:&lt;/p&gt;

&lt;p&gt;1) the side we are investigating, which is reuse and lazily-populated StatementContextBase objects (which will need to be refactored). This involves dealing with CopyHistory and instantiation namespaces. Since this is traversed in a tree-like manner, this is a relatively simple problem, as all it boils down to is using forwarding objects in UsesStatementImpl&apos;s resolution phase.&lt;/p&gt;

&lt;p&gt;2) the side of augment/refine/deviate making modifications to objects, which really expands forwarding objects with lazy instantiation to cope with modifications.&lt;/p&gt;

&lt;p&gt;3) the side of actually triggering augment/deviate/uses phase actions, which is driven by reactor and SchemaNodeIdentifierBuildNamespace, which is populated by StmtContext.Mutable object coming and going.&lt;/p&gt;

&lt;p&gt;It is the combination of 1) and 3) which makes this hard, as there are competing requirements. If &apos;uses&apos; stops instantiating StatementContextBases, it stops feeding the namespace, which means augment/deviate/uses triggers will no longer trigger when they should.&lt;/p&gt;</comment>
                            <comment id="44210" author="rovarga" created="Wed, 7 Jun 2017 20:03:57 +0000"  >&lt;p&gt;Turning this into a milestone, as this will require multiple steps, which we do not want to do in one go simply because of the complexities involved.&lt;/p&gt;</comment>
                            <comment id="61585" author="rovarga" created="Fri, 9 Mar 2018 00:52:27 +0000"  >&lt;p&gt;Part 3) would be solved with &lt;a href=&quot;https://jira.opendaylight.org/browse/YANGTOOLS-859&quot; title=&quot;Augmenting a container with if-feature&quot; class=&quot;issue-link&quot; data-issue-key=&quot;YANGTOOLS-859&quot;&gt;&lt;del&gt;YANGTOOLS-859&lt;/del&gt;&lt;/a&gt;, that issue needs to have a phase action trigger when an unsupported node is added &#8211; which can be also used to move a registration downwards until it hits the appropriate proxy, eventually either fully resolving the node, or knowing further resolution is impossible.&lt;/p&gt;</comment>
                            <comment id="64600" author="rovarga" created="Wed, 8 Aug 2018 19:43:35 +0000"  >&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/73972&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/73972&lt;/a&gt; solves the triggering problem. All triggers now follow ChildSchemaNodeNamespace, hence lazy StatementContextBase equivalent class can be plugged in: it can implement namespaces and it can also act as a statement &#8211; hence 3) will not be a problem.&lt;/p&gt;

&lt;p&gt;Part 2) is being solved in &lt;a href=&quot;https://jira.opendaylight.org/browse/YANGTOOLS-724&quot; title=&quot;Make AbstractEffectiveDataSchemaNode.augmenting private and final&quot; class=&quot;issue-link&quot; data-issue-key=&quot;YANGTOOLS-724&quot;&gt;&lt;del&gt;YANGTOOLS-724&lt;/del&gt;&lt;/a&gt;, and that is the next step we need to take.&lt;/p&gt;</comment>
                            <comment id="67121" author="amazuryan" created="Wed, 14 Aug 2019 09:47:13 +0000"  >&lt;p&gt;So, I&apos;ve run unit test with next models:&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;
module bar {
  namespace bar-ns;
  prefix bar;  
  
  &lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; foo { prefix foo;}  
  
  container bar-export {
    uses foo:export;
  }  
  container bar-foo {
    uses foo:foo;
  }
}

module baz {
  namespace baz-ns;
  prefix baz;  
  
  &lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; foo { prefix foo;}  
  
  container baz-export {
    uses foo:export;
  }  
  
  container baz-foo {
    uses foo:foo;
  }
}

module foo {
  namespace foo-ns;
  prefix foo;  
  
  grouping foo {
    leaf foo {
      type string;
      units foo;
    }
  }  
  grouping export {
    uses foo;
  }
} &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;And memory usage less than 50 Mb.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;a id=&quot;15404_thumb&quot; href=&quot;https://jira.opendaylight.org/secure/attachment/15404/15404_Screen+Shot+2019-08-14+at+12.46.25.png&quot; title=&quot;Screen Shot 2019-08-14 at 12.46.25.png&quot; file-preview-type=&quot;image&quot; file-preview-id=&quot;15404&quot; file-preview-title=&quot;Screen Shot 2019-08-14 at 12.46.25.png&quot;&gt;&lt;img src=&quot;https://jira.opendaylight.org/secure/thumbnail/15404/_thumb_15404.png&quot; style=&quot;border: 0px solid black&quot; role=&quot;presentation&quot;/&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.opendaylight.org/secure/ViewProfile.jspa?name=rovarga&quot; class=&quot;user-hover&quot; rel=&quot;rovarga&quot;&gt;rovarga&lt;/a&gt; any ideas how to reproduce it?&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="67123" author="rovarga" created="Wed, 14 Aug 2019 22:07:58 +0000"  >&lt;p&gt;Well, you need to analyze a heap dump to see if there are duplicate objects &#8211; using YourKit, for example.&lt;/p&gt;</comment>
                            <comment id="67126" author="amazuryan" created="Thu, 15 Aug 2019 07:13:04 +0000"  >&lt;p&gt;&lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;a id=&quot;15405_thumb&quot; href=&quot;https://jira.opendaylight.org/secure/attachment/15405/15405_Screen+Shot+2019-08-15+at+10.07.46.png&quot; title=&quot;Screen Shot 2019-08-15 at 10.07.46.png&quot; file-preview-type=&quot;image&quot; file-preview-id=&quot;15405&quot; file-preview-title=&quot;Screen Shot 2019-08-15 at 10.07.46.png&quot;&gt;&lt;img src=&quot;https://jira.opendaylight.org/secure/thumbnail/15405/_thumb_15405.png&quot; style=&quot;border: 0px solid black&quot; role=&quot;presentation&quot;/&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Profile looks normal. There aren&apos;t thousands of duplicates.&lt;/p&gt;</comment>
                            <comment id="67127" author="amazuryan" created="Thu, 15 Aug 2019 14:52:22 +0000"  >&lt;p&gt;&lt;span class=&quot;nobr&quot;&gt;&lt;a href=&quot;https://jira.opendaylight.org/secure/attachment/15406/15406_heap.bin&quot; title=&quot;heap.bin attached to YANGTOOLS-694&quot;&gt;heap.bin&lt;sup&gt;&lt;img class=&quot;rendericon&quot; src=&quot;https://jira.opendaylight.org/images/icons/link_attachment_7.gif&quot; height=&quot;7&quot; width=&quot;7&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&#160;here is heap memory dump&lt;/p&gt;</comment>
                            <comment id="67128" author="rovarga" created="Thu, 15 Aug 2019 15:12:24 +0000"  >&lt;p&gt;&lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;img src=&quot;https://jira.opendaylight.org/secure/attachment/15407/15407_yt694-dups.png&quot; style=&quot;border: 0px solid black&quot; /&gt;&lt;/span&gt;&lt;/p&gt;</comment>
                            <comment id="67129" author="rovarga" created="Thu, 15 Aug 2019 15:18:35 +0000"  >&lt;p&gt;As you can see there are 6 identical objects, expanded from a single grouping. This may not look like much, but it certainly adds up when you work with something like &lt;a href=&quot;https://github.com/Juniper/yang/tree/master/19.2/19.2R1/junos/conf&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/Juniper/yang/tree/master/19.2/19.2R1/junos/conf&lt;/a&gt; .&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="67130" author="rovarga" created="Thu, 15 Aug 2019 15:31:16 +0000"  >&lt;p&gt;To add some colour to the picture: a SchemaContext can easily weigh 375MiB, as noted (as a matter of course) in &lt;a href=&quot;https://jira.opendaylight.org/browse/YANGTOOLS-1004&quot; title=&quot;four new netconf mounts using same schema not sharing same compiled schema&quot; class=&quot;issue-link&quot; data-issue-key=&quot;YANGTOOLS-1004&quot;&gt;&lt;del&gt;YANGTOOLS-1004&lt;/del&gt;&lt;/a&gt; &#8211; and these things are per device-type, so they directly affect scalability to no small extent.&lt;/p&gt;</comment>
                            <comment id="68639" author="rovarga" created="Tue, 22 Sep 2020 09:20:19 +0000"  >&lt;p&gt;There are three remaining steps in this task:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;clarify StatementSupport.applyCopyPolicy() behavior&lt;/li&gt;
	&lt;li&gt;audit all StatementSupport classes to check whether they are using correct CopyPolicy&lt;/li&gt;
	&lt;li&gt;address the FIXME in CONTEXT_INDEPENDENT case of StatementContextBase.copyAsChildOf(), so that completely independent statements are not copied. Note the second FIXME should be taken care of by &lt;a href=&quot;https://jira.opendaylight.org/browse/YANGTOOLS-784&quot; title=&quot;Defer statement initialization in InferredStatementContext&quot; class=&quot;issue-link&quot; data-issue-key=&quot;YANGTOOLS-784&quot;&gt;&lt;del&gt;YANGTOOLS-784&lt;/del&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
</comment>
                            <comment id="68783" author="rovarga" created="Thu, 3 Dec 2020 17:56:45 +0000"  >&lt;p&gt;So where are here:&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;img src=&quot;https://jira.opendaylight.org/secure/attachment/15909/15909_image-2020-12-03-18-31-00-574.png&quot; height=&quot;741&quot; width=&quot;1332&quot; style=&quot;border: 0px solid black&quot; /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;the highlighted statements should really be squashed, as at a number of them are duplicates, as confirmed by examining declared instance references:&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;img src=&quot;https://jira.opendaylight.org/secure/attachment/15910/15910_image-2020-12-03-18-56-27-486.png&quot; height=&quot;624&quot; width=&quot;1122&quot; style=&quot;border: 0px solid black&quot; /&gt;&lt;/span&gt;&lt;/p&gt;</comment>
                            <comment id="68784" author="rovarga" created="Thu, 3 Dec 2020 17:57:11 +0000"  >&lt;p&gt;This issue should take care of at least these.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="32327">YANGTOOLS-1067</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is blocked by">
                                        <issuelink>
            <issuekey id="23204">YANGTOOLS-784</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="29361">YANGTOOLS-859</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10002">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="23199">YANGTOOLS-779</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="32325">YANGTOOLS-1065</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="32326">YANGTOOLS-1066</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="15404" name="Screen Shot 2019-08-14 at 12.46.25.png" size="55794" author="amazuryan" created="Wed, 14 Aug 2019 09:46:41 +0000"/>
                            <attachment id="15405" name="Screen Shot 2019-08-15 at 10.07.46.png" size="190762" author="amazuryan" created="Thu, 15 Aug 2019 07:10:07 +0000"/>
                            <attachment id="15406" name="heap.bin" size="9308699" author="amazuryan" created="Thu, 15 Aug 2019 14:52:01 +0000"/>
                            <attachment id="15909" name="image-2020-12-03-18-31-00-574.png" size="469345" author="rovarga" created="Thu, 3 Dec 2020 17:31:03 +0000"/>
                            <attachment id="15910" name="image-2020-12-03-18-56-27-486.png" size="597391" author="rovarga" created="Thu, 3 Dec 2020 17:56:30 +0000"/>
                            <attachment id="15407" name="yt694-dups.png" size="140671" author="rovarga" created="Thu, 15 Aug 2019 15:12:19 +0000"/>
                    </attachments>
                <subtasks>
                            <subtask id="23144">YANGTOOLS-724</subtask>
                            <subtask id="23163">YANGTOOLS-743</subtask>
                            <subtask id="33006">YANGTOOLS-1121</subtask>
                            <subtask id="33491">YANGTOOLS-1163</subtask>
                            <subtask id="33492">YANGTOOLS-1164</subtask>
                            <subtask id="33614">YANGTOOLS-1195</subtask>
                    </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_10002" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>YANGTOOLS-652</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10208" key="com.atlassian.jira.plugin.system.customfieldtypes:textfield">
                        <customfieldname>External issue ID</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>6972</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10201" key="com.atlassian.jira.plugin.system.customfieldtypes:url">
                        <customfieldname>External issue URL</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[https://bugs.opendaylight.org/show_bug.cgi?id=6972]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10206" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Issue Type</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10305"><![CDATA[Improvement]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10202" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Priority</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10313"><![CDATA[Highest]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i028t3:</customfieldvalue>

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