<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:02:42 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>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[DOCS-11381] Docs for SERVER-33359: Have RTT storage engines manage rolling back incomplete index builds.</title>
                <link>https://jira.mongodb.org/browse/DOCS-11381</link>
                <project id="10380" key="DOCS">Documentation</project>
                    <description>&lt;h3&gt;&lt;a name=&quot;Description&quot;&gt;&lt;/a&gt;Description&lt;/h3&gt;

&lt;p&gt;This ticket disallows running --noIndexBuildRetry alongside --replSet&lt;/p&gt;


&lt;h3&gt;&lt;a name=&quot;Scopeofchanges%28filesthatneedworkandhowmuch%29&quot;&gt;&lt;/a&gt;Scope of changes (files that need work and how much)&lt;/h3&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;mongod  --noIndexBuildRetry and --replSet options&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;config file options for  storage.indexBuildRetry  and replication.replSetName.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;&lt;a name=&quot;Impacttootherdocsoutsideofthisproduct&quot;&gt;&lt;/a&gt;Impact to other docs outside of this product&lt;/h3&gt;

&lt;h3&gt;&lt;a name=&quot;MVP%28workanddate%3F%29&quot;&gt;&lt;/a&gt;MVP (work and date?)&lt;/h3&gt;

&lt;h3&gt;&lt;a name=&quot;Resources%28e.g.ScopeDocs%2CInvision%29&quot;&gt;&lt;/a&gt;Resources (e.g. Scope Docs, Invision)&lt;/h3&gt;
&lt;h1&gt;&lt;a name=&quot;EngineeringTicketDescription&quot;&gt;&lt;/a&gt;Engineering Ticket Description&lt;/h1&gt;

&lt;p&gt;In an RTT world, nodes must retain enough history to undo writes back to the replica set commit point. However, replication does not always communicate enough information to reliably know what the state should be at the commit point.&lt;/p&gt;

&lt;p&gt;Specifically, the view of a database when an index build is occurring is not sufficient to know whether the index creation had committed, or it was rolled back. The lifetime of an index build on a primary:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Start an index build at time S. This writes an entry to the local catalog with a &lt;tt&gt;`ready: false`&lt;/tt&gt; flag. S is not known to any other node.&lt;/li&gt;
	&lt;li&gt;Build the index&lt;/li&gt;
	&lt;li&gt;Complete the index build at time F. This atomically commits the index, setting &lt;tt&gt;`ready: true`&lt;/tt&gt; and writing an oplog entry with time `F`.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;An index build on a secondary:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Observe an oplog entry to create an index with time `F`. Add the &lt;tt&gt;`ready: false`&lt;/tt&gt; entry to the catalog.&lt;/li&gt;
	&lt;li&gt;Build the index&lt;/li&gt;
	&lt;li&gt;Complete index build, set the index to &lt;tt&gt;`ready: true`&lt;/tt&gt;. A foreground index will finish at time `F`. A background index finishes at time `BF`.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Storage only knows about the existence of the catalog entry and the value of its &lt;tt&gt;`ready`&lt;/tt&gt; flag. to make a decision on whether the index build should be completed. In both cases, if the entry does not exist, the index should be removed. If the entry does exist with &lt;tt&gt;`ready: true`&lt;/tt&gt;, it should remain.&lt;/p&gt;

&lt;p&gt;However, the primary case should roll back the case where the index entry exists, but is &lt;tt&gt;`ready: false`&lt;/tt&gt; as this represents a time before it wrote out the oplog entry. A secondary must keep the index given the same inputs as the oplog entry was written before the index build started. Losing the index would be a bug.&lt;/p&gt;

&lt;p&gt;This ticket is for index builds to communicate enough information to the storage engine to disambiguate the decision. The storage engine may choose persist this information as it sees fit. It&apos;s only expected to be of value for RTT storage engines.&lt;/p&gt;

&lt;p&gt;Specifically what will be communicated is whether the index to be built is a &lt;b&gt;background index build being started on a secondary&lt;/b&gt;. Foreground index builds on a secondary will not show as &quot;in progress&quot; following a call to RTT, either the index is not in the catalog, or the entry exists and the index is usable.&lt;/p&gt;</description>
                <environment></environment>
        <key id="504808">DOCS-11381</key>
            <summary>Docs for SERVER-33359: Have RTT storage engines manage rolling back incomplete index builds.</summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/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="13201">Fixed</resolution>
                                        <assignee username="kay.kim@mongodb.com">Kay Kim</assignee>
                                    <reporter username="kay.kim@mongodb.com">Kay Kim</reporter>
                        <labels>
                            <label>rollback-functional</label>
                    </labels>
                <created>Fri, 2 Mar 2018 17:56:04 +0000</created>
                <updated>Sun, 29 Oct 2023 13:58:17 +0000</updated>
                            <resolved>Fri, 20 Apr 2018 01:54:40 +0000</resolved>
                                                    <fixVersion>3.7.3</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="1869680" author="xgen-internal-githook" created="Fri, 20 Apr 2018 01:54:23 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;email&apos;: &apos;kay.kim@10gen.com&apos;, &apos;username&apos;: &apos;kay-kim&apos;, &apos;name&apos;: &apos;kay&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/DOCS-11381&quot; title=&quot;Docs for SERVER-33359: Have RTT storage engines manage rolling back incomplete index builds.&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DOCS-11381&quot;&gt;&lt;del&gt;DOCS-11381&lt;/del&gt;&lt;/a&gt;: --noIndexBuildRetry and --replSet incompatibility&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/docs/commit/d2abc4092f44e2293f3c0f7915dfdb72bc695ea6&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/docs/commit/d2abc4092f44e2293f3c0f7915dfdb72bc695ea6&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10320">
                    <name>Documented</name>
                                            <outwardlinks description="documents">
                                        <issuelink>
            <issuekey id="498787">SERVER-33359</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Fri, 20 Apr 2018 01:54:23 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        5 years, 42 weeks, 6 days ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>DOCS-11003</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>luke.bonanomi@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            5 years, 42 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>kay.kim@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|htrjz3:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|htiy2v:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="1324">KANBAN BUCKET</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|htr65j:</customfieldvalue>

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