<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:17:16 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>Whamcloud Community JIRA</title>
    <link>https://jira.whamcloud.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.4.14</version>
        <build-number>940014</build-number>
        <build-date>05-12-2023</build-date>
    </build-info>


<item>
            <title>[LU-8407] Recovery timer hangs at zero on DNE MDTs</title>
                <link>https://jira.whamcloud.com/browse/LU-8407</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;The recovery timer is poorly behaved, and pretty confusing to Lustre admins.&lt;/p&gt;

&lt;p&gt;We have long had the odd behavior that the recovery timer counts down to zero and then starts all over again.  I think that behavior was in support of older clients that didn&apos;t support new recovery semantics.  Can we kill that off finally?  Or maybe allow users to configure a mode where older clients aren&apos;t permitted, allowing a single reasonable countdown?&lt;/p&gt;

&lt;p&gt;With DNE MDTs, recovery is even more screwy.  The timer counts to zero twice (at least twice...), and then it sits there forever if any single other MDT is not up.  While somewhere in the console logs it says something wishy-washy about maybe this is DNE related, we really need Lustre to do better.&lt;/p&gt;

&lt;p&gt;Lustre should clearly state somewhere that things are hung waiting on another MDT to start up.&lt;/p&gt;

&lt;p&gt;Other newer developers have already been confused about recovery on our testbed.  If they have been confused, then it is pretty certain that this is going to cause trouble for our admins on production systems.&lt;/p&gt;</description>
                <environment></environment>
        <key id="38208">LU-8407</key>
            <summary>Recovery timer hangs at zero on DNE MDTs</summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="3" iconUrl="https://jira.whamcloud.com/images/icons/priorities/major.svg">Major</priority>
                        <status id="5" iconUrl="https://jira.whamcloud.com/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="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="yong.fan">nasf</assignee>
                                    <reporter username="morrone">Christopher Morrone</reporter>
                        <labels>
                            <label>llnl</label>
                    </labels>
                <created>Fri, 15 Jul 2016 18:10:31 +0000</created>
                <updated>Fri, 3 Mar 2017 16:55:56 +0000</updated>
                            <resolved>Thu, 8 Sep 2016 04:21:24 +0000</resolved>
                                    <version>Lustre 2.8.0</version>
                                    <fixVersion>Lustre 2.9.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>10</watches>
                                                                            <comments>
                            <comment id="159109" author="green" created="Mon, 18 Jul 2016 17:31:47 +0000"  >&lt;p&gt;So we have two problems on our hand, I guess.&lt;/p&gt;

&lt;p&gt;The &quot;recovery timer restarts&quot; is totally unexpected - the &quot;old clients&quot; (IR incapable?) would just be accounted for and so the system would start with a bigger timeout from the get go. Can you please file a separate ticket about this with some samples of what goes on?&lt;/p&gt;

&lt;p&gt;As for DNE in particular - currently we cannot guarantee FS consistency when one of the MDTs is down, so we will wait for them indefinitely. similarly MDTs are never evicted no matter what for the same reason.&lt;br/&gt;
If you feel like it, you can force MDT eviction/aborted recovery manually and bear the consequences.&lt;/p&gt;

&lt;p&gt;So I guesss once the other ticket is filed, we can concentrate here about more clearly indicating that recovery is waiting until all MDTs are rejoined?&lt;/p&gt;</comment>
                            <comment id="159119" author="morrone" created="Mon, 18 Jul 2016 18:10:59 +0000"  >&lt;p&gt;Yes, when the test cluster is available, I&apos;ll get more information on the restarts and open a new ticket for the timer restarts.  We can focus on the DNE MDTs in this ticket.&lt;/p&gt;</comment>
                            <comment id="159133" author="pjones" created="Mon, 18 Jul 2016 19:50:32 +0000"  >&lt;p&gt;Fan Yong&lt;/p&gt;

&lt;p&gt;Could you please advise?&lt;/p&gt;

&lt;p&gt;Thanks&lt;/p&gt;

&lt;p&gt;Peter&lt;/p&gt;</comment>
                            <comment id="160737" author="di.wang" created="Wed, 3 Aug 2016 22:56:15 +0000"  >&lt;p&gt;Particularly, in DNE recovery, before one MDT starts recovering, it first tries to get recovery update logs from all other MDTs.  &lt;br/&gt;
If one MDT is not up at the moment, it waits forever until the admin step in to abort the recovery.  So the inconsistency is aware. &lt;br/&gt;
The better way might be instead of waiting, it should mark the system to be readonly, and trigger LFSCK automatically to check and FIX the consistency, but we are not there yet.  Yes, it should provide clearer information to indicate which MDT is not up. &lt;/p&gt;</comment>
                            <comment id="160760" author="yong.fan" created="Thu, 4 Aug 2016 07:51:59 +0000"  >&lt;p&gt;Currently, the DNE recovery depends on the update logs on the MDTs. If some MDT does not start, then the recovery logic cannot get update logs from such MDT as to cannot go ahead. Different from client-side recovery failure, the cross-MDT recovery failure may cause the namespace inconsistency. Because we does not want to export the inconsistent namespace to client, then we make the recovery to wait there until related update logs available.&lt;/p&gt;

&lt;p&gt;As for the suggestion of using LFSCK to handle the recovery trouble, that will be the last choice under the worst case. Currently, the namespace LFSCK does not understand the update logs, it just scans the namespace and fix the inconsistency based on its non-global knowledge. For example, for cross-MDT rename, the normal operation can be described as &quot;delete name entry &apos;a&apos; from &apos;dir_B&apos;, and insert it into the &apos;dir_C&apos; with name &apos;d&apos;&quot;. From the namespace LFSCK view, it only guarantees that both the &apos;dir_B&apos; and the &apos;dir_C&apos; do not contain dangling name entries, and the target object either referenced by the old name entry  &apos;a&apos;, or the new name entry &apos;d&apos;, and matches related linkEA. Means it may be different from expected cross-MDT rename result. But the namespace is consistent.&lt;/p&gt;

&lt;p&gt;So unless related MDT hit hardware trouble and cannot get the update logs, it is better to try to make the normal DNE recovery done; otherwise, the users have to face the case of either possible inconsistent namespace or partly lost some former cross-DNE operations.&lt;/p&gt;

&lt;p&gt;Anyway, I will make patch to make the console message more accurate and clear to avoid confusing.&lt;/p&gt;</comment>
                            <comment id="160827" author="morrone" created="Thu, 4 Aug 2016 17:43:39 +0000"  >&lt;p&gt;It is more than the console that needs work, though.  In proc, the recovery status counts down to zero and then hangs there forever.  If recovery can&apos;t complete until all MDTs are in contact, then the countdown probably should not start until all MDTs have established contact.&lt;/p&gt;</comment>
                            <comment id="160836" author="di.wang" created="Thu, 4 Aug 2016 18:27:49 +0000"  >&lt;p&gt;Right now, the recovery timer is started since the fail MDT start (or when it receive the 1st connect req) until it is fully functional, i.e. ready to receive the new req. But after DNE, the recovery phase is actually divided 2 phase, &lt;/p&gt;

&lt;p&gt;1. collecting the update logs.&lt;br/&gt;
2. replay the request either from replay request or update log.&lt;/p&gt;

&lt;p&gt;So yes, it makes sense to differentiate the phase here.  so how about we add collecting_update_logs_time under /proc to indicate how long it has been taken for this phase (maybe a few more items to indicate how many or which MDTs are left), and time_remaining could start count after it gets the update log.&lt;/p&gt;


</comment>
                            <comment id="160922" author="gerrit" created="Fri, 5 Aug 2016 15:19:41 +0000"  >&lt;p&gt;Fan Yong (fan.yong@intel.com) uploaded a new patch: &lt;a href=&quot;http://review.whamcloud.com/21759&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/21759&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8407&quot; title=&quot;Recovery timer hangs at zero on DNE MDTs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8407&quot;&gt;&lt;del&gt;LU-8407&lt;/del&gt;&lt;/a&gt; recovery: more clear message about recovery failure&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 7cd6fa75df0c05b2fadbad8cddf391a8897332a0&lt;/p&gt;</comment>
                            <comment id="165230" author="gerrit" created="Thu, 8 Sep 2016 02:06:05 +0000"  >&lt;p&gt;Oleg Drokin (oleg.drokin@intel.com) merged in patch &lt;a href=&quot;http://review.whamcloud.com/21759/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/21759/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8407&quot; title=&quot;Recovery timer hangs at zero on DNE MDTs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8407&quot;&gt;&lt;del&gt;LU-8407&lt;/del&gt;&lt;/a&gt; recovery: more clear message about recovery failure&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: 6dd0be19a97945db5da61ecdf845087b936805fa&lt;/p&gt;</comment>
                            <comment id="165256" author="pjones" created="Thu, 8 Sep 2016 04:21:24 +0000"  >&lt;p&gt;Landed for 2.9&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10120">
                    <name>Blocker</name>
                                                                <inwardlinks description="is blocked by">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                                        </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="31450">LU-6994</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                            <customfield id="customfield_10890" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10390" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hzyhlj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10060" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Severity</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10022"><![CDATA[3]]></customfieldvalue>

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