<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:10:37 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>[SERVER-46147] Update repair to fix multikey errors without performing an index rebuild</title>
                <link>https://jira.mongodb.org/browse/SERVER-46147</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;When we have validation errors with multikey flags such as:&lt;/p&gt;

&lt;p&gt;&quot;... is not multi-key but has more than one key in document&quot;&lt;/p&gt;

&lt;p&gt;would be great when running repair if we could actually correct these without needing to rebuild the index.&lt;/p&gt;

&lt;p&gt;Proposed solution:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;If an index is not multikey and a multikey document is found, then the index will be set to multikey and the multikey paths will be updated for that index.&lt;/li&gt;
	&lt;li&gt;If a multikey index&apos;s multikey paths do not cover a multikey document, then the index&#8217;s multikey paths will be updated.&lt;/li&gt;
	&lt;li&gt;If a multikey index has multikey paths that are not associated with any multikey document, this is not an error. This will be reported as a warning, and there will be no attempt to correct the index. To clear the warning, the index can be rebuilt by the user.&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="1147787">SERVER-46147</key>
            <summary>Update repair to fix multikey errors without performing an index rebuild</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</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="fausto.leyva@mongodb.com">Fausto Leyva</assignee>
                                    <reporter username="brian.lane@mongodb.com">Brian Lane</reporter>
                        <labels>
                            <label>intern_validate_improvements</label>
                    </labels>
                <created>Fri, 14 Feb 2020 00:25:18 +0000</created>
                <updated>Sun, 29 Oct 2023 22:12:13 +0000</updated>
                            <resolved>Wed, 29 Jul 2020 14:09:58 +0000</resolved>
                                                    <fixVersion>4.7.0</fixVersion>
                    <fixVersion>4.4.10</fixVersion>
                                                        <votes>0</votes>
                                    <watches>8</watches>
                                                                                                                <comments>
                            <comment id="4069073" author="xgen-internal-githook" created="Fri, 17 Sep 2021 17:19:40 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Faustoleyva54&apos;, &apos;email&apos;: &apos;fausto.leyva@mongodb.com&apos;, &apos;username&apos;: &apos;Faustoleyva54&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-46147&quot; title=&quot;Update repair to fix multikey errors without performing an index rebuild&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-46147&quot;&gt;&lt;del&gt;SERVER-46147&lt;/del&gt;&lt;/a&gt; Update repair to fix multikey errors without performing an index rebuild&lt;/p&gt;

&lt;p&gt;(cherry picked from commit 6dd3014)&lt;br/&gt;
Branch: v4.4&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/4ce9f655e2c88117015e256168f6891432df0ebf&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/4ce9f655e2c88117015e256168f6891432df0ebf&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3310729" author="xgen-internal-githook" created="Tue, 28 Jul 2020 20:15:29 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Faustoleyva54&apos;, &apos;email&apos;: &apos;fausto.leyva@mongodb.com&apos;, &apos;username&apos;: &apos;Faustoleyva54&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-46147&quot; title=&quot;Update repair to fix multikey errors without performing an index rebuild&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-46147&quot;&gt;&lt;del&gt;SERVER-46147&lt;/del&gt;&lt;/a&gt;: Update repair to fix multikey errors without performing an index rebuild&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/6dd301449ec7a48e35a7114e93b888df9958217f&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/6dd301449ec7a48e35a7114e93b888df9958217f&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3307333" author="JIRAUSER1253362" created="Mon, 27 Jul 2020 14:20:31 +0000"  >&lt;p&gt;&lt;a href=&quot;https://mongodbcr.appspot.com/629360001/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://mongodbcr.appspot.com/629360001/&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3261443" author="louis.williams" created="Wed, 1 Jul 2020 14:17:34 +0000"  >&lt;p&gt;Could we make this validation repair behavior a standalone-only feature? That would be consistent with reIndex, which is also standalone-only.&lt;/p&gt;</comment>
                            <comment id="3069550" author="daniel.gottlieb@10gen.com" created="Tue, 5 May 2020 15:33:41 +0000"  >&lt;p&gt;An alternate implementation of ghost timestamping I mentioned to &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=vamsi.krishna&quot; class=&quot;user-hover&quot; rel=&quot;vamsi.krishna&quot;&gt;vamsi.krishna&lt;/a&gt; and &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=chenhao.qu&quot; class=&quot;user-hover&quot; rel=&quot;chenhao.qu&quot;&gt;chenhao.qu&lt;/a&gt; was asking WT to find an appropriate timestamp for an update. For our ghost timestamping cases, it would be &lt;tt&gt;min(&amp;lt;last update&apos;s durable_timestamp&amp;gt;, &amp;lt;stable_timestamp&amp;gt; + 1)&lt;/tt&gt;. We can also emulate this in MongoDB (with more stable_timestamp retrying for races) if WT exposed a document version&apos;s &lt;tt&gt;durable_timestamp&lt;/tt&gt; value.&lt;/p&gt;</comment>
                            <comment id="3069513" author="milkie" created="Tue, 5 May 2020 15:24:33 +0000"  >&lt;p&gt;I&apos;m kind of torn.  It would be really nice to have a way to correct these problems on a running system without needing to restart the process (twice!) to use --repair.  But only the --repair solution is straightforward.&lt;/p&gt;</comment>
                            <comment id="3069233" author="louis.williams" created="Tue, 5 May 2020 13:55:01 +0000"  >&lt;p&gt;Just clarifying that there are no problems with a solution that only implements this behavior in --repair mode. The options that Dan suggested are to expand this behavior to work with the validate command on a live server.&lt;/p&gt;</comment>
                            <comment id="3068451" author="daniel.gottlieb@10gen.com" created="Tue, 5 May 2020 01:59:07 +0000"  >&lt;p&gt;Had a conversation with &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=gregory.wlodarek&quot; class=&quot;user-hover&quot; rel=&quot;gregory.wlodarek&quot;&gt;gregory.wlodarek&lt;/a&gt; and &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=louis.williams&quot; class=&quot;user-hover&quot; rel=&quot;louis.williams&quot;&gt;louis.williams&lt;/a&gt;. The trouble with correcting multikey values is that there&apos;s no natural optime associated with this write. We wanted to raise our known options with a greater audience. What we have include:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Use a ghost timestamp.&lt;/li&gt;
	&lt;li&gt;Don&apos;t use a timestamp &amp;#8211; break rollback.&lt;/li&gt;
	&lt;li&gt;Write a no-op oplog entry &amp;#8211; secondaries need a different solution.&lt;/li&gt;
	&lt;li&gt;Wait for all previous catalog updates to become majority committed, don&apos;t use a timestamp. Requires commit point for liveness.&lt;/li&gt;
	&lt;li&gt;Piggy-back the update with incoming writes to the catalog entry. Requires writes to that specific entry for liveness.&lt;/li&gt;
	&lt;li&gt;Make the updates in &lt;tt&gt;&amp;#45;&amp;#45;repair&lt;/tt&gt;.&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="3028051" author="milkie" created="Mon, 6 Apr 2020 19:28:42 +0000"  >&lt;p&gt;Another option is to add a special flag to the validate command to permit it to make data changes rather than just observe them.&lt;/p&gt;</comment>
                            <comment id="2914213" author="milkie" created="Thu, 27 Feb 2020 14:51:05 +0000"  >&lt;p&gt;Repair doesn&apos;t run a validate-like scan ahead of time, so I&apos;m not sure how it would identify this situation prior to rebuilding indexes.  We would have to have the validate command save something durable for repair to look at, possibly?  Sounds tricky.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10420">
                    <name>Backports</name>
                                            <outwardlinks description="backported by">
                                                        </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                            <outwardlinks description="depends on">
                                        <issuelink>
            <issuekey id="1403075">SERVER-49340</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is depended on by">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="910669">SERVER-43074</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1422380">SERVER-49937</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1147789">SERVER-46148</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>10.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_12450" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Backport Requested</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="18953"><![CDATA[v4.4]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10038"><![CDATA[Fully Compatible]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 27 Feb 2020 14:51:05 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        2 years, 20 weeks, 5 days ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[<s><a href='https://jira.mongodb.org/browse/SERVER-49340'>SERVER-49340</a></s>]]></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_17050" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Downstream Team Attention</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="16941"><![CDATA[Not Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-1724</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>
                            2 years, 20 weeks, 5 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>brian.lane@mongodb.com</customfieldvalue>
            <customfieldvalue>daniel.gottlieb@mongodb.com</customfieldvalue>
            <customfieldvalue>milkie@mongodb.com</customfieldvalue>
            <customfieldvalue>fausto.leyva@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>louis.williams@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hwqhzb:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr54av:</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_23361" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Requested By</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="3635">Execution Team 2020-05-04</customfieldvalue>
    <customfieldvalue id="3940">Execution Team 2020-07-27</customfieldvalue>
    <customfieldvalue id="3941">Execution Team 2020-08-10</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_22870" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Triagers</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hwq48n:</customfieldvalue>

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