<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:55:10 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-1297] Clustering: Journal recovery error on restart</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-1297</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description>&lt;p&gt;The following error was seen after a controller restart (Helium SR2):&lt;/p&gt;

&lt;p&gt;java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Metadata not available for modification [NodeModification [identifier=(com:brocade:neutron:odl?revision=2014-10-02)subnet, modificationType=SUBTREE_MODIFIED, childModification={(com:brocade:neutron:odl?revision=2014-10-02)subnet[&lt;/p&gt;
{(com:brocade:neutron:odl?revision=2014-10-02)id=ace19864-b874-47a9-9cef-b02afd52f37b}
&lt;p&gt;]=NodeModification [identifier=(com:brocade:neutron:odl?revision=2014-10-02)subnet[&lt;/p&gt;
{(com:brocade:neutron:odl?revision=2014-10-02)id=ace19864-b874-47a9-9cef-b02afd52f37b}
&lt;p&gt;], modificationType=DELETE, childModification={}]}]]&lt;br/&gt;
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)&lt;span class=&quot;error&quot;&gt;&amp;#91;:1.7.0_76&amp;#93;&lt;/span&gt;&lt;br/&gt;
        at java.util.concurrent.FutureTask.get(FutureTask.java:188)&lt;span class=&quot;error&quot;&gt;&amp;#91;:1.7.0_76&amp;#93;&lt;/span&gt;&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.Shard.syncCommitTransaction(Shard.java:586)&lt;span class=&quot;error&quot;&gt;&amp;#91;301:org.opendaylight.controller.sal-distributed-datastore:1.1.2.Helium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.Shard.onRecoveryComplete(Shard.java:729)&lt;span class=&quot;error&quot;&gt;&amp;#91;301:org.opendaylight.controller.sal-distributed-datastore:1.1.2.Helium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
        at org.opendaylight.controller.cluster.raft.RaftActor.onRecoveryCompletedMessage(RaftActor.java:257)&lt;span class=&quot;error&quot;&gt;&amp;#91;294:org.opendaylight.controller.sal-akka-raft:1.1.2.Helium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
        at org.opendaylight.controller.cluster.raft.RaftActor.handleRecover(RaftActor.java:160)&lt;span class=&quot;error&quot;&gt;&amp;#91;294:org.opendaylight.controller.sal-akka-raft:1.1.2.Helium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
        at org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActor.onReceiveRecover(AbstractUntypedPersistentActor.java:52)&lt;span class=&quot;error&quot;&gt;&amp;#91;293:org.opendaylight.controller.sal-clustering-commons:1.1.2.Helium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.Shard.onReceiveRecover(Shard.java:237)&lt;span class=&quot;error&quot;&gt;&amp;#91;301:org.opendaylight.controller.sal-distributed-datastore:1.1.2.Helium-SR2&amp;#93;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;The modification is for a node delete and it seems &quot;Metadata not available ...&quot; indicates the node doesn&apos;t exist. If that&apos;s true, how did this modification entry get into the persisted journal? Transaction modifications should only get into the journal if the transaction succeeds.&lt;/p&gt;

&lt;p&gt;The ramification of this failure is that the rest of the data failed to recover as well. This is b/c we batch journal entries 5000 at a time into a single transaction. This is more performant but the side effect is that one failed modification fails everything.&lt;/p&gt;

&lt;p&gt;In addition, the failed entry remains in the RaftActor&apos;s in-memory journal so, in a 3 node cluster, if it becomes the leader then it wipes out the other nodes too. We need to protect against a corrupted journal (or a recovery failure) on one node from corrupting the whole cluster.&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="25851">CONTROLLER-1297</key>
            <summary>Clustering: Journal recovery error on restart</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="tpantelis">Tom Pantelis</assignee>
                                    <reporter username="tpantelis">Tom Pantelis</reporter>
                        <labels>
                    </labels>
                <created>Thu, 7 May 2015 23:19:43 +0000</created>
                <updated>Tue, 25 Aug 2015 15:42:32 +0000</updated>
                            <resolved>Tue, 25 Aug 2015 15:42:32 +0000</resolved>
                                    <version>Helium</version>
                                                    <component>clustering</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="50568" author="tpantelis" created="Fri, 8 May 2015 02:34:20 +0000"  >&lt;p&gt;Interestingly, changing it to apply the journal modification entries one at a time, as was done when they were originally committed, alleviates the issue - no errors and all the data was recovered.&lt;/p&gt;

&lt;p&gt;So it seems there&apos;s an issue when certain modification sequences are applied all at once rather than one by one. Theoretically, both ways should yield the same result.&lt;br/&gt;
I suspect this issue doesn&apos;t exist in Li as the tree modification code was refactored and there were bug fixes. Will verify to make sure.&lt;/p&gt;</comment>
                            <comment id="50569" author="moraja@cisco.com" created="Mon, 11 May 2015 17:13:08 +0000"  >&lt;p&gt;Some of my colleagues have reported a problem where in a single transaction they have seen this problem. I&apos;ll try to find the exact sequence and let you know. I think this problem could be happening due that reason.&lt;/p&gt;

&lt;p&gt;To summarize,&lt;/p&gt;

&lt;p&gt;This works,&lt;/p&gt;

&lt;p&gt;tx1.put(id, node);&lt;br/&gt;
tx1.submit() &lt;/p&gt;

&lt;p&gt;tx2.merge(id, node);&lt;br/&gt;
tx2.submit();&lt;/p&gt;

&lt;p&gt;This does not&lt;/p&gt;

&lt;p&gt;tx3.put(id, node);&lt;br/&gt;
tx3.merge(id, node);&lt;br/&gt;
tx3.submit();&lt;/p&gt;</comment>
                            <comment id="50570" author="tpantelis" created="Fri, 22 May 2015 00:54:38 +0000"  >&lt;p&gt;Submitted &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/20736/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/20736/&lt;/a&gt; to stable/helium to defauklt the journal recovery batch size to 1.&lt;/p&gt;</comment>
                            <comment id="50571" author="moraja@cisco.com" created="Tue, 25 Aug 2015 15:42:32 +0000"  >&lt;p&gt;May be fixed. Appears to work in Lithium.&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>3154</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=3154]]></customfieldvalue>

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

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

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

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