<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:57:07 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-2067] Install Snapshot process gets stuck indefinitely</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-2067</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description>&lt;p&gt;If the Follower starts SnapshotCapture roughly at the same time as the Leader starts SnapshotInstall for said Follower, these two processes can collide in a nasty way.&lt;/p&gt;

&lt;p&gt;The SnapshotCapture switches the Follower&apos;s SnapshotManager to state PERSISTING. If the Leader manages to send all Snapshot chunks during this state, the Follower reconstructs the Snapshot and tries to apply it. This call to ApplySnapshot however doesn&apos;t end in the SnapshotManager.Idle implementation:&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;
@Override
&lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; void apply(&lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; ApplySnapshot toApply) {
    SnapshotManager.&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;.applySnapshot = toApply;
    lastSequenceNumber = context.getPersistenceProvider().getLastSequenceNumber();
    log.info(&lt;span class=&quot;code-quote&quot;&gt;&quot;lastSequenceNumber prior to persisting applied snapshot: {}&quot;&lt;/span&gt;, lastSequenceNumber);
    context.getPersistenceProvider().saveSnapshot(toApply.getSnapshot());
    SnapshotManager.&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;.currentState = PERSISTING;
} &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Since the Follower&apos;s SnapshotManager is still persisting the Snapshot from the CaptureSnapshot process, the call to ApplySnapshot from the Leader ends in PERSISTING state:&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;
@Override
&lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; void apply(&lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; ApplySnapshot snapshot) {
    log.debug(&lt;span class=&quot;code-quote&quot;&gt;&quot;apply should not be called in state {}&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;Here the InstallSnapshot get&apos;s stuck. Since the Snapshot wasn&apos;t applied, no &lt;b&gt;InstallSnapshotFinished&lt;/b&gt;&#160;message is sent back to the Leader. Thus the Leader doesn&apos;t close the LeaderInstallSnapshotState and thinks the Installation is still ongoing. He doesn&apos;t send nor re-send any chunks, since all of them were already received by the Follower. He can&apos;t replicate any AppendEntries since the LeaderInstallSnapshotState is still there. The Shard remains in this stalemate forever.&lt;/p&gt;</description>
                <environment></environment>
        <key id="36509">CONTROLLER-2067</key>
            <summary>Install Snapshot process gets stuck indefinitely</summary>
                <type id="10102" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10316&amp;avatarType=issuetype">Sub-task</type>
                            <parent id="31918">CONTROLLER-1907</parent>
                                    <priority id="3" iconUrl="https://jira.opendaylight.org/images/icons/priorities/major.svg">Medium</priority>
                        <status id="1" iconUrl="https://jira.opendaylight.org/images/icons/statuses/open.png" description="The issue is open and ready for the assignee to start work on it.">Open</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="tibor.kral">Tibor Kr&#225;l</assignee>
                                    <reporter username="tibor.kral">Tibor Kr&#225;l</reporter>
                        <labels>
                    </labels>
                <created>Mon, 2 Jan 2023 11:02:52 +0000</created>
                <updated>Tue, 3 Jan 2023 17:21:50 +0000</updated>
                                                                            <component>clustering</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                        <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_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i043vb:</customfieldvalue>

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