<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:55:03 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-1245] Clustering : Make blocking datastore startup on the basis of valid SchemaContext smarter</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-1245</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description>&lt;p&gt;If you try to add some data into InMemoryDataStore it must match the schema of that the InMemoryDataStore is aware of. If it does not then an exception may be thrown by IMDS. To ensure that we do not get into this situation on startup ShardManager waits to receive a schemaContext that is a superset of it&apos;s last known schemaContext and only when it receives such a schemaContext does it proceed with the creation of Shards.&lt;/p&gt;

&lt;p&gt;This poses a couple of problems,&lt;/p&gt;

&lt;p&gt;a. What if we never get a schema context which is a superset of the last known data. In this situation we will not load the Shards and we will have failures down the road.&lt;br/&gt;
b. If a yang module was removed and we tried to restart the controller then that module will be missing in the schemaContext and so ShardManager will never create the Shards.&lt;/p&gt;

&lt;p&gt;There are two potential fixes for this problem,&lt;/p&gt;

&lt;p&gt;a. IMDS allows us to store data without checking the schemaContext. If a method was provided on IMDS to turn of this checking that would do the trick.&lt;br/&gt;
b. Store the SchemaContext into the persistent journal everytime a SchemaContext update is received. On recovery set the IMDS schemaContext based on what we read from the journal.&lt;/p&gt;

&lt;p&gt;While (b) seems like the right thing to do there are a couple of problems with doing it,&lt;/p&gt;

&lt;p&gt;a. SchemaContext is not Serializable/Externalizable and it seems like it will take significant effort to make it so.&lt;br/&gt;
b. During a normal controller run schemaContext gets update numerous times and also when it is being shutdown. I am afraid that this will add significant overhead to the datastore.&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="25799">CONTROLLER-1245</key>
            <summary>Clustering : Make blocking datastore startup on the basis of valid SchemaContext smarter</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="moraja@cisco.com">Moiz Raja</assignee>
                                    <reporter username="moraja@cisco.com">Moiz Raja</reporter>
                        <labels>
                    </labels>
                <created>Thu, 9 Apr 2015 21:29:55 +0000</created>
                <updated>Sat, 13 Jun 2015 00:24:24 +0000</updated>
                            <resolved>Sat, 13 Jun 2015 00:24:24 +0000</resolved>
                                    <version>Post-Helium</version>
                                                    <component>mdsal</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="50398" author="moraja@cisco.com" created="Tue, 19 May 2015 01:08:17 +0000"  >&lt;p&gt;Making SchemaContext serializable is not a major issue. The Module(s) in a SchemaContext have the original source string. This source string could be serialized easily. On deserialization we could easily construct the schema context from the original source.&lt;/p&gt;

&lt;p&gt;Shard should do the serialization of SchemaContext to it&apos;s journal as stated in option (b) before. The serialization of the SchemaContext to the journal should only be done when the first transaction following a schema context change is received. This will reduce the total amount of schema context serialization that will need to be done.&lt;/p&gt;

&lt;p&gt;This will kind of ensure that on recovery we do not fail when data is applied to the datatree as the schema context will always match the data that will be subsequently written.&lt;/p&gt;

&lt;p&gt;The problem I see is with reading data. When data is added we ensure that it matches the current schema context. If later the schema context was to change the data needs to be cleaned up otherwise a read will fail because of data being returned for which there is no matching schema context.&lt;/p&gt;</comment>
                            <comment id="50399" author="tpantelis" created="Tue, 19 May 2015 02:37:02 +0000"  >&lt;p&gt;I don&apos;t think we need the complication and overhead of storing the SchemaContext in the journal. For data where the schema is gone on startup, we don&apos;t want it in the IMDS b/c no one can query it. I think we should be able to fairly easily prune data nodes whose schema is no longer available. In the future we&apos;ll want to handle migrating the data to a new schema.&lt;/p&gt;

&lt;p&gt;That seems easier to me than trying to deal with SchemaContext serialization and the many updates on startup. We also get many updates on shutdown as each schema is unloaded - we would actually lose most if not all the schemas in the last update before shutting down. We&apos;d also have to deal with snapshots as they delete the journal prior to the snapshot which would also delete the persisted SchemaContext. &lt;/p&gt;

&lt;p&gt;I think trying to persist SchemaContext would be complicated and problematic.&lt;/p&gt;</comment>
                            <comment id="50400" author="tpantelis" created="Thu, 21 May 2015 14:17:03 +0000"  >&lt;p&gt;Submitted &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/20895/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/20895/&lt;/a&gt; to fix the RESOLVED bundle tracking.&lt;/p&gt;</comment>
                            <comment id="50401" author="tpantelis" created="Thu, 21 May 2015 14:57:25 +0000"  >&lt;p&gt;Submitted &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/20901/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/20901/&lt;/a&gt; to remove persisting of schema context modules in the ShardManager.&lt;/p&gt;</comment>
                            <comment id="50402" author="moraja@cisco.com" created="Thu, 21 May 2015 16:00:12 +0000"  >&lt;p&gt;The second commit appears to be a draft&lt;/p&gt;</comment>
                            <comment id="50403" author="tpantelis" created="Thu, 21 May 2015 17:03:04 +0000"  >&lt;p&gt;It is - I was waiting for the first one to be merged first. I will publish soon...&lt;/p&gt;

&lt;p&gt;(In reply to Moiz Raja from comment #5)&lt;br/&gt;
&amp;gt; The second commit appears to be a draft&lt;/p&gt;</comment>
                            <comment id="50404" author="moraja@cisco.com" created="Wed, 27 May 2015 01:13:06 +0000"  >&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/21018/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/21018/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/20974/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/20974/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/21016/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/21016/&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="50405" author="tpantelis" created="Sun, 31 May 2015 18:46:35 +0000"  >&lt;p&gt;Also &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/20901/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/20901/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The final price is to utilize the exception added in yangtools.&lt;/p&gt;</comment>
                            <comment id="50406" author="moraja@cisco.com" created="Thu, 4 Jun 2015 05:08:28 +0000"  >&lt;p&gt;Also &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/21595/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/21595/&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="50407" author="moraja@cisco.com" created="Fri, 12 Jun 2015 01:36:45 +0000"  >&lt;p&gt;This bug is not fully fixed.&lt;/p&gt;</comment>
                            <comment id="50408" author="moraja@cisco.com" created="Fri, 12 Jun 2015 01:37:56 +0000"  >&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/22429/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/22429/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The above patch addresses to fix the problem with recovery but also uncovers a problem with the data tree.&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>2970</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=2970]]></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="10313"><![CDATA[Highest]]></customfieldvalue>

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

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