<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:35:45 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-77496] [BF-28463] IndexScanStageBase::prepareImpl() tassert(4938500) should be uassert</title>
                <link>https://jira.mongodb.org/browse/SERVER-77496</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;In ix_scan.cpp, &lt;b&gt;IndexScanStageBase::prepareImpl()&lt;/b&gt; contains a uassert and some tasserts. tassert(4938500) should actually be a uassert because it is really a valid user-facing failure if the index the plan uses happened to get dropped just before the query tried to use it. The other tasserts are checking things that are programming errors.&lt;/p&gt;

&lt;p&gt;The tassert causes the BF-28463 failure in secondary_reads_with_catalog_changes.js when the timing of this concurrent test is such that the index used by a query plan gets dropped just before the query tries to find that index during execution. Per &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=mihai.andrei%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;mihai.andrei@mongodb.com&quot;&gt;mihai.andrei@mongodb.com&lt;/a&gt;, the Evergreen test harness considers every tassert to be a real test failure even if the test itself expects a failure with that error code (i.e. it&apos;s not okay to expect an error code from a programming bug, which is what a tassert denotes). This is not really a programming bug though - in this case the query should just fail gracefully.&lt;/p&gt;</description>
                <environment></environment>
        <key id="2350963">SERVER-77496</key>
            <summary>[BF-28463] IndexScanStageBase::prepareImpl() tassert(4938500) should be uassert</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</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="kevin.cherkauer@mongodb.com">Kevin Cherkauer</assignee>
                                    <reporter username="kevin.cherkauer@mongodb.com">Kevin Cherkauer</reporter>
                        <labels>
                    </labels>
                <created>Thu, 25 May 2023 20:52:19 +0000</created>
                <updated>Sun, 29 Oct 2023 21:20:54 +0000</updated>
                            <resolved>Fri, 26 May 2023 15:41:21 +0000</resolved>
                                    <version>7.1.0-rc0</version>
                    <version>7.0.0-rc2</version>
                                    <fixVersion>7.1.0-rc0</fixVersion>
                                                        <votes>0</votes>
                                    <watches>7</watches>
                                                                                                                <comments>
                            <comment id="5464148" author="david.storch" created="Wed, 31 May 2023 14:32:49 +0000"  >&lt;blockquote&gt;
&lt;p&gt;Is it decided to revert now and look for another fix afterward, or is the decision waiting for more inputs? (I.e. what is the decision process, and has it concluded yet?)&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I think yes, this has been decided, but &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=kyle.suarez%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;kyle.suarez@mongodb.com&quot;&gt;kyle.suarez@mongodb.com&lt;/a&gt; could you confirm?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is this considered a 7.0 release blocker? (It is possible for a customer to hit a tassert without any fix, however it would be rare as index drops are not that common and hitting the timing window seems hard to do from my experiments.)&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I&apos;d say it&apos;s probably not a release blocker, though it does sound like a bug we should aim to fix. Do we know which versions is affects? Was it a regression in 7.0 or does it go all the way back to 6.0?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Who should own the &quot;look for another fix afterward&quot; piece?&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;If you don&apos;t have bandwidth for it, this can go back into the triage queue to follow the normal process for work assignment.&lt;/p&gt;</comment>
                            <comment id="5462271" author="JIRAUSER1270811" created="Tue, 30 May 2023 21:08:33 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=david.storch%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;david.storch@mongodb.com&quot;&gt;david.storch@mongodb.com&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=kyle.suarez%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;kyle.suarez@mongodb.com&quot;&gt;kyle.suarez@mongodb.com&lt;/a&gt; There is some ambiguity here to resolve:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Is it decided to revert now and look for another fix afterward, or is the decision waiting for more inputs? (I.e. what is the decision process, and has it concluded yet?)&lt;/li&gt;
	&lt;li&gt;Is this considered a 7.0 release blocker? (It is possible for a customer to hit a tassert without any fix, however it would be rare as index drops are not that common and hitting the timing window seems hard to do from my experiments.)&lt;/li&gt;
	&lt;li&gt;Who should own the &quot;look for another fix afterward&quot; piece?&lt;/li&gt;
&lt;/ol&gt;
</comment>
                            <comment id="5461638" author="david.storch" created="Tue, 30 May 2023 19:27:15 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=kevin.cherkauer%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;kevin.cherkauer@mongodb.com&quot;&gt;kevin.cherkauer@mongodb.com&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=zixuan.zhuang%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;zixuan.zhuang@mongodb.com&quot;&gt;zixuan.zhuang@mongodb.com&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=projjal.chanda%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;projjal.chanda@mongodb.com&quot;&gt;projjal.chanda@mongodb.com&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=amr.elhelw%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;amr.elhelw@mongodb.com&quot;&gt;amr.elhelw@mongodb.com&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=kyle.suarez%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;kyle.suarez@mongodb.com&quot;&gt;kyle.suarez@mongodb.com&lt;/a&gt; I took a brief look at this since the backport came up during the North America QE triage meeting. At first blush, this does not look like the correct fix to me. The current design for SBE is that the caller is expected to ensure that the collections and indexes used by the plan exist prior to calling &lt;tt&gt;prepare()&lt;/tt&gt; on a plan and starting to execute it. With either lock-free or locked reads, the reader&apos;s view of the catalog remains stable except at yield points. That&apos;s why the various steps of the query optimization and plan compilation pipeline generally don&apos;t have to worry about indexes or collections disappearing at any time, but rather can obtain a view of the catalog at the beginning and assume that it is stable while choosing, constructing, and preparing a plan.&lt;/p&gt;

&lt;p&gt;However, at yield points we advance our view of the catalog and might see that indexes or collections which we previously relied upon have been dropped. For this reason, when recovering from yield an SBE plan will &lt;tt&gt;uassert()&lt;/tt&gt; if, for example, an index has been dropped: &lt;a href=&quot;https://github.com/mongodb/mongo/blob/59a148452a15629161437ee4b5dc37bf5dbb4e0d/src/mongo/db/exec/sbe/stages/ix_scan.cpp#L183-L186&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/blob/59a148452a15629161437ee4b5dc37bf5dbb4e0d/src/mongo/db/exec/sbe/stages/ix_scan.cpp#L183-L186&lt;/a&gt;. Similarly, when it is possible for a yield to occur in between the construction of an SBE plan and calling &lt;tt&gt;prepare()&lt;/tt&gt; on that plan, we need to add special checks that the indexes and collections required by the plan still exist. In some places, we use the &lt;a href=&quot;https://github.com/mongodb/mongo/blob/59a148452a15629161437ee4b5dc37bf5dbb4e0d/src/mongo/db/query/all_indices_required_checker.h&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;AllIndicesRequiredChecker&lt;/tt&gt;&lt;/a&gt; for this purpose. The current design is that it is the caller&apos;s responsibility to ensure that the &lt;tt&gt;sbe::PlanStage&lt;/tt&gt; tree remains valid before calling &lt;tt&gt;prepare()&lt;/tt&gt;. While theoretically we could change the design such that &lt;tt&gt;prepare()&lt;/tt&gt; tolerates arbitrary catalog changes at yield points happening in between construction of the plan and &lt;tt&gt;prepare()&lt;/tt&gt;, it seems easier to me to preserve the design as it currently exists. At the very least, perhaps we could dig deeper into the root cause of the build failure &amp;#8211; perhaps there is a code path related to one of the runtime planners which is missing a check related to index drops?&lt;/p&gt;

&lt;p&gt;I propose that we revert the changes from both this ticket and &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-76909&quot; title=&quot;Include expected sbe error code in secondary_reads_with_catalog_changes.js&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-76909&quot;&gt;&lt;del&gt;SERVER-76909&lt;/del&gt;&lt;/a&gt; while we study the issue further.&lt;/p&gt;</comment>
                            <comment id="5455323" author="JIRAUSER1270811" created="Fri, 26 May 2023 15:46:02 +0000"  >&lt;p&gt;This fix needs to be backported to 7.0 (BACKPORT-16100) to make BF-28463 stop occurring there. (7.0 BACKPORT-16012 is also needed.)&lt;/p&gt;</comment>
                            <comment id="5453905" author="xgen-internal-githook" created="Fri, 26 May 2023 00:23:13 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Kevin Cherkauer&apos;, &apos;email&apos;: &apos;kevin.cherkauer@mongodb.com&apos;, &apos;username&apos;: &apos;kevin-cherkauer&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-77496&quot; title=&quot;[BF-28463] IndexScanStageBase::prepareImpl() tassert(4938500) should be uassert&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-77496&quot;&gt;&lt;del&gt;SERVER-77496&lt;/del&gt;&lt;/a&gt; Change ix_scan.cpp tassert(4938500) to uassert&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/09d4923123730bbec3a3ade4d79744e7cbd01f82&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/09d4923123730bbec3a3ade4d79744e7cbd01f82&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10420">
                    <name>Backports</name>
                                            <outwardlinks description="backported by">
                                                        </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_12450" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Backport Requested</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25578"><![CDATA[v7.0]]></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, 25 May 2023 21:38:08 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        36 weeks 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_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_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>
                            36 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>14.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10032" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Operating System</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10026"><![CDATA[ALL]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>david.storch@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>kevin.cherkauer@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i2axfj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i1t6co:</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_22250" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Special Downgrade Instructions Required</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="23343"><![CDATA[Not Needed]]></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|i2ajkv:</customfieldvalue>

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