<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:53:56 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>[CONTROLLER-812] Loading of YangFiles dependent on bundle order in features.xml</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-812</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description>&lt;p&gt;It appears that the order of bundles in the feature.xml matters in terms of how the yang files are loaded by the config subsystem.&lt;/p&gt;

&lt;p&gt;When I do a feature:install odl-restconf I see the below exception:&lt;/p&gt;

&lt;p&gt;**&lt;b&gt;(NOTE: &lt;a href=&quot;https://jira.opendaylight.org/browse/CONTROLLER-811&quot; title=&quot;Installing ODL-RESTCONF feature causes missing yang file exception&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CONTROLLER-811&quot;&gt;&lt;del&gt;CONTROLLER-811&lt;/del&gt;&lt;/a&gt; fixes this particular instance, but you can recreate the problem following the below instructions in reverse &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;/b&gt;***&lt;/p&gt;

&lt;p&gt;2014-09-11 12:34:29,218 | INFO  | Local user karaf | SharedSchemaContextFactory       | 96 - org.opendaylight.yangtools.yang-parser-impl - 0.6.2.SNAPSHOT | Failed to assemble sources&lt;br/&gt;
SchemaResolutionException{unsatisfiedImports={SourceIdentifier &lt;span class=&quot;error&quot;&gt;&amp;#91;name=sal-remote-augment@2014-7-8&amp;#93;&lt;/span&gt;=[ModuleImportImpl &lt;span class=&quot;error&quot;&gt;&amp;#91;name=sal-remote, revision=2014-01-14&amp;#93;&lt;/span&gt;]}}&lt;br/&gt;
	at org.opendaylight.yangtools.yang.parser.repo.SharedSchemaContextFactory$2.apply(SharedSchemaContextFactory.java:77)&lt;br/&gt;
	at &lt;/p&gt;

&lt;p&gt;== Full Exception @ end ===&lt;/p&gt;


&lt;p&gt;When I modify the odl-restconf feature and move the &lt;/p&gt;

&lt;p&gt;&amp;lt;bundle&amp;gt;mvn:org.opendaylight.controller/sal-remote/${mdsal.version}&amp;lt;/bundle&amp;gt;&lt;/p&gt;

&lt;p&gt;above &lt;/p&gt;

&lt;p&gt;&amp;lt;bundle&amp;gt;mvn:org.opendaylight.controller/sal-rest-connector/${mdsal.version}&amp;lt;/bundle&amp;gt;&lt;/p&gt;

&lt;p&gt;the exception goes away.&lt;/p&gt;

&lt;p&gt;Unknown what affects this have.&lt;/p&gt;

&lt;p&gt;==== Possible Resolution ====&lt;/p&gt;

&lt;p&gt;Move the bundle for now, and long term we should look at removing the order dependency.&lt;/p&gt;

&lt;p&gt;====  FULL EXCEPTION ====&lt;/p&gt;

&lt;p&gt;2014-09-11 12:34:29,218 | INFO  | Local user karaf | SharedSchemaContextFactory       | 96 - org.opendaylight.yangtools.yang-parser-impl - 0.6.2.SNAPSHOT | Failed to assemble sources&lt;br/&gt;
SchemaResolutionException{unsatisfiedImports={SourceIdentifier &lt;span class=&quot;error&quot;&gt;&amp;#91;name=sal-remote-augment@2014-7-8&amp;#93;&lt;/span&gt;=[ModuleImportImpl &lt;span class=&quot;error&quot;&gt;&amp;#91;name=sal-remote, revision=2014-01-14&amp;#93;&lt;/span&gt;]}}&lt;br/&gt;
	at org.opendaylight.yangtools.yang.parser.repo.SharedSchemaContextFactory$2.apply(SharedSchemaContextFactory.java:77)&lt;br/&gt;
	at org.opendaylight.yangtools.yang.parser.repo.SharedSchemaContextFactory$2.apply(SharedSchemaContextFactory.java:61)&lt;br/&gt;
	at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:859)&lt;br/&gt;
	at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:293)&lt;br/&gt;
	at com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair.execute(ExecutionList.java:150)&lt;br/&gt;
	at com.google.common.util.concurrent.ExecutionList.add(ExecutionList.java:106)&lt;br/&gt;
	at com.google.common.util.concurrent.AbstractFuture.addListener(AbstractFuture.java:170)&lt;br/&gt;
	at com.google.common.util.concurrent.Futures.transform(Futures.java:613)&lt;br/&gt;
	at com.google.common.util.concurrent.Futures.transform(Futures.java:565)&lt;br/&gt;
	at org.opendaylight.yangtools.yang.parser.repo.SharedSchemaContextFactory.createSchemaContext(SharedSchemaContextFactory.java:126)&lt;br/&gt;
	at org.opendaylight.yangtools.yang.parser.repo.URLSchemaContextResolver.getSchemaContext(URLSchemaContextResolver.java:165)&lt;br/&gt;
	at org.opendaylight.controller.sal.dom.broker.GlobalBundleScanningSchemaServiceImpl.tryToUpdateSchemaContext(GlobalBundleScanningSchemaServiceImpl.java:236)&lt;br/&gt;
	at org.opendaylight.controller.sal.dom.broker.GlobalBundleScanningSchemaServiceImpl$BundleScanner.addingBundle(GlobalBundleScanningSchemaServiceImpl.java:191)&lt;br/&gt;
	at org.opendaylight.controller.sal.dom.broker.GlobalBundleScanningSchemaServiceImpl$BundleScanner.addingBundle(GlobalBundleScanningSchemaServiceImpl.java:165)&lt;br/&gt;
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:467)&lt;span class=&quot;error&quot;&gt;&amp;#91;karaf-org.osgi.core.jar:&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:414)&lt;span class=&quot;error&quot;&gt;&amp;#91;karaf-org.osgi.core.jar:&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)&lt;span class=&quot;error&quot;&gt;&amp;#91;karaf-org.osgi.core.jar:&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)&lt;span class=&quot;error&quot;&gt;&amp;#91;karaf-org.osgi.core.jar:&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:443)&lt;span class=&quot;error&quot;&gt;&amp;#91;karaf-org.osgi.core.jar:&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:847)&lt;br/&gt;
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)&lt;br/&gt;
...&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: Mac OS&lt;br/&gt;
Platform: PC&lt;/p&gt;</environment>
        <key id="25366">CONTROLLER-812</key>
            <summary>Loading of YangFiles dependent on bundle order in features.xml</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                                <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="-1">Unassigned</assignee>
                                    <reporter username="devin.avery@brocade.com">Devin Avery</reporter>
                        <labels>
                    </labels>
                <created>Thu, 11 Sep 2014 17:58:23 +0000</created>
                <updated>Thu, 19 Oct 2017 22:13:17 +0000</updated>
                            <resolved>Mon, 1 Dec 2014 10:05:44 +0000</resolved>
                                    <version>Helium</version>
                                                    <component>config</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="49137" author="devin.avery@brocade.com" created="Thu, 11 Sep 2014 17:59:28 +0000"  >&lt;p&gt;Note: This is a lower priority bug and should be used to fix the config system so that order of the bundles in the feature.xml does NOT matter.&lt;/p&gt;</comment>
                            <comment id="49138" author="tony.tkacik@gmail.com" created="Tue, 16 Sep 2014 10:35:23 +0000"  >&lt;p&gt;Thrown exception is innocent, MD-SAL only detected incorrect start order report and will reattemt to parse models after another bundle started (another models are available).&lt;/p&gt;

&lt;p&gt;Model will be parsed once all its dependencies are satisfied.&lt;/p&gt;

&lt;p&gt;See &lt;a href=&quot;https://bugs.opendaylight.org/show_bug.cgi?id=1774&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://bugs.opendaylight.org/show_bug.cgi?id=1774&lt;/a&gt; for more details about this error report.&lt;/p&gt;</comment>
                            <comment id="49139" author="devin.avery@brocade.com" created="Tue, 16 Sep 2014 12:13:19 +0000"  >&lt;p&gt;Tony - I am setting this back to a Normal priority because the error message is really misleading and is confusing for people combing the logs. For example in my case I was trying to figure out why my controller&apos;s restconf was not starting and I saw a number of these exceptions, which indicated to me that there was a problem. As you state it turns out not to be the case, BUT we need to squelch that message somehow and only show it when there is truely a problem.&lt;/p&gt;

&lt;p&gt;I realize that in an OSGi environment that may be difficult to tell, so a few possibilities may be:&lt;/p&gt;

&lt;p&gt;1) track the bundles that are loading and if there are bundles still pending then hold onto the error message until all bundles currently defined are active, then print out an error for any files still running.&lt;/p&gt;

&lt;p&gt;2) Batch the messages - say hold all messages and only print out after 30 seconds or something.&lt;/p&gt;

&lt;p&gt;3) Don&apos;t print the entire exception stack since it is a &quot;known error&quot;. Instead print the detailed message &quot;Can&apos;t find this yang - It may be added later if another bundle starts&quot; etc. Then when that other bundle starts and resolves the dependency print a statement saying that we found it.&lt;/p&gt;

&lt;p&gt;4) This could be done in addition to all above - print a detailed report of what yangs you tried to compile and what yangs you have successfully compiled - that way each time a bundle starts people can see the current status of the yang files&lt;/p&gt;


&lt;p&gt;etc etc. The main idea is to not leave people guessing as much as they are now.&lt;/p&gt;</comment>
                            <comment id="49140" author="tony.tkacik@gmail.com" created="Tue, 11 Nov 2014 13:47:48 +0000"  >&lt;p&gt;Offending message was decreased to DEBUG.&lt;/p&gt;

&lt;p&gt;Problem with your approach is:&lt;/p&gt;

&lt;p&gt;&amp;gt; 1) track the bundles that are loading and if there are bundles still &lt;br/&gt;
&amp;gt; pending then hold onto the error message until all bundles currently defined are &amp;gt; active, then print out an error for any files still running.&lt;/p&gt;

&lt;p&gt;Fileinstall (used by Karaf) dynamicly loads bundles and install them in its own order - so if feature is &quot;incorrectly&quot; ordered, list of bundles will not contain missing bundle&lt;br/&gt;
we printout message and after that missing bundle was added to system.&lt;/p&gt;

&lt;p&gt;&amp;gt; 2) Batch the messages - say hold all messages and only print out after 30 &lt;br/&gt;
&amp;gt; seconds or something.&lt;/p&gt;

&lt;p&gt;This will complicate logic of component only because of logging. Personally I do not like any &quot;time-based&quot; constraints on code / reporting.&lt;/p&gt;

&lt;p&gt;&amp;gt; 3) Don&apos;t print the entire exception stack since it is a &quot;known error&quot;. &lt;/p&gt;

&lt;p&gt;This could be done by log appender configuration.&lt;/p&gt;

&lt;p&gt;&amp;gt;Instead print the detailed message &quot;Can&apos;t find this yang - It may be added later if another bundle starts&quot; etc. &lt;br/&gt;
&amp;gt;Then when that other bundle starts and resolves the dependency print a &lt;br/&gt;
&amp;gt; statement saying that we found it.&lt;/p&gt;

&lt;p&gt;This will again complicate logic of component since it requires additional state tracking (was not found &amp;amp; we reported it -&amp;gt; found).&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </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_10208" key="com.atlassian.jira.plugin.system.customfieldtypes:textfield">
                        <customfieldname>External issue ID</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1820</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=1820]]></customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10204" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>ODL SR Target Milestone</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10315"><![CDATA[Lithium]]></customfieldvalue>

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

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

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