<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:18:31 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-1651] Audit multireader support changelogs</title>
                <link>https://jira.whamcloud.com/browse/LU-1651</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;We need to confirm that changelogs supports multiple readers like it is supposed. Changelog records need to be retained until all readers have seen them, and stale readers need to be evicted at some point so we can flush the logs. &lt;/p&gt;</description>
                <environment></environment>
        <key id="10083">LU-1651</key>
            <summary>Audit multireader support changelogs</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="6" iconUrl="https://jira.whamcloud.com/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="jhammond">John Hammond</assignee>
                                    <reporter username="rread">Robert Read</reporter>
                        <labels>
                    </labels>
                <created>Fri, 22 Oct 2010 16:58:33 +0000</created>
                <updated>Wed, 20 Apr 2016 13:54:13 +0000</updated>
                            <resolved>Wed, 20 Apr 2016 13:54:13 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                            <comments>
                            <comment id="10087" author="yong.fan" created="Wed, 27 Oct 2010 06:09:24 +0000"  >&lt;p&gt;Changelog supports a set of interfaces for recording lustre namespace changes, reading such records, purging specified record(s), and so on. Currently, all such records will not be purged automatically, even if someone has read such record(s) already (maybe for replicate the lustre system). Means such records can be read many times before they are purged explicitly.&lt;/p&gt;

&lt;p&gt;If you think some old records are not useful (since you have replicated current lustre system already) or you just want to free up some space, then you can purge some records as following:&lt;br/&gt;
&quot;lfs changelog_clear &amp;lt;mdtname&amp;gt; &amp;lt;id&amp;gt; &amp;lt;endrec&amp;gt;&quot;&lt;br/&gt;
Such command indicates that changelog records up to &amp;lt;endrec&amp;gt; are no longer of interest to consumer &amp;lt;id&amp;gt;, removing them. An &amp;lt;endrec&amp;gt; of &quot;0&quot; means removing all records.&lt;/p&gt;

&lt;p&gt;On the other hand, when all changelog users deregistered, then changelog will be off and all records will be purged automatically under such case, even though no one used them yet. (I am not sure it is reasonable, but it is the current implementation)&lt;/p&gt;</comment>
                            <comment id="10088" author="yong.fan" created="Wed, 27 Oct 2010 06:20:43 +0000"  >&lt;p&gt;Lustre implements a small rsync tools &amp;#8211; lustre_rsync, which uses changelog as the backend support. When lustre_rsync runs, it will purge (by calling ioctl with &quot;OBD_IOC_CHANGELOG_CLEAR&quot; explicitly) the old changelog of 100 records each time periodically.&lt;/p&gt;</comment>
                            <comment id="10094" author="rread" created="Wed, 27 Oct 2010 13:48:12 +0000"  >&lt;p&gt;So the feature to automatically flush log records once they&apos;ve been consumed by all readers has not been implemented, and lustre_rsync is a destructive reader of changelogs. This is very helpful, thanks.&lt;/p&gt;</comment>
                            <comment id="10112" author="yong.fan" created="Wed, 27 Oct 2010 19:37:57 +0000"  >&lt;p&gt;Changelog only supplies the interfaces for recording/reading lustre namespace changes. It is the HSM engine&apos;s duty to decide (according to the so called &apos;policy&apos;) which change(s) should be recorded and how long the record(s) should be retained, just like lustre_rsync does.&lt;/p&gt;</comment>
                            <comment id="10113" author="rread" created="Wed, 27 Oct 2010 23:45:39 +0000"  >&lt;p&gt;Right, the application decides when to mark the records as &quot;consumed,&quot; but if there is more than one reader then records should not be deleted until all of the readers have marked them as &quot;consumed.&quot;&lt;/p&gt;</comment>
                            <comment id="10114" author="yong.fan" created="Thu, 28 Oct 2010 00:22:27 +0000"  >&lt;p&gt;Unfortunately, the current implementation of changelog has no idea about &quot;consumed&quot;, it neither knows nor cares about how many reader want to access the record(s). But the application can keep the &quot;consumed&quot; conception by keeping the next record index to be read. Anyway, even if some reader had not accessed related changelog record(s) yet, he can not prevent others to purge such record(s) explicitly.&lt;/p&gt;</comment>
                            <comment id="10119" author="rread" created="Thu, 28 Oct 2010 23:06:07 +0000"  >&lt;p&gt;Can you estimate what needs to be done to add state to changelogs to allow keeping track of multiple registered readers and to only flush records that have been marked consumed by all the readers?  This will require maintaining persistent state for each client, and we&apos;ll need options for allow stale readers to be &quot;evicted&quot; if the logs reach a certain size or after a period of time of inactivity from that client. We&apos;ll also need the ability to stop updates on the filesystem of the log fills up to support, say, a high availability replication application. &lt;/p&gt;</comment>
                            <comment id="10141" author="yong.fan" created="Wed, 3 Nov 2010 04:08:21 +0000"  >&lt;p&gt;This is basic idea for changelog enhancement. We can implement it within one month. There are some uncertain issues mentioned in the document, need more discussion.&lt;/p&gt;</comment>
                            <comment id="149531" author="jhammond" created="Wed, 20 Apr 2016 13:53:20 +0000"  >&lt;p&gt;Each registered changelog reader has a persistent minimum record index (&lt;tt&gt;mcud_minrec&lt;/tt&gt;) which can be updated by calling &lt;tt&gt;lfs changelog_clear&lt;/tt&gt;. This also purges changelog records with index lower than the all of the minimum record indexes.&lt;/p&gt;

&lt;p&gt;So this is fixed and the ticket can be closed.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                            <attachment id="10032" name="Changelog_enhancement.pdf" size="128482" author="yong.fan" created="Wed, 3 Nov 2010 04:08:21 +0000"/>
                    </attachments>
                <subtasks>
                            <subtask id="10101">LU-1652</subtask>
                    </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|hzus3b:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2213</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>