<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:40:27 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-35634] view_catalog_cycle_lookup.js should not always assert that finds on views will succeed</title>
                <link>https://jira.mongodb.org/browse/SERVER-35634</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;&lt;tt&gt;view_catalog_cycle_lookup.js&lt;/tt&gt; continually remaps views to views, views to collection, and then reads from views. In the &lt;tt&gt;readFromView&lt;/tt&gt; state, it asserts that a find on a view will always succeed. However, the aggregation command &lt;a href=&quot;https://github.com/mongodb/mongo/blob/644e0813ee7c68faa23ccfcf4633a9ff4819466d/src/mongo/db/commands/run_aggregate.cpp#L512-L516&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;releases the collection lock before creating and iterating the cursor&lt;/a&gt;. In this short window of time, it&apos;s possible that a collection was dropped and replaced with a view. Then, &lt;tt&gt;DocumentSourceCursor::loadBatch()&lt;/tt&gt; will throw upon acquiring locks because the underlying namespace is a view, not a collection.&lt;/p&gt;

&lt;p&gt;This ticket is a request to change the test to be more resilient to these types of failures.&lt;/p&gt;</description>
                <environment></environment>
        <key id="560282">SERVER-35634</key>
            <summary>view_catalog_cycle_lookup.js should not always assert that finds on views will succeed</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="kyle.suarez@mongodb.com">Kyle Suarez</assignee>
                                    <reporter username="kyle.suarez@mongodb.com">Kyle Suarez</reporter>
                        <labels>
                            <label>read-only-views</label>
                    </labels>
                <created>Fri, 15 Jun 2018 21:40:13 +0000</created>
                <updated>Sun, 29 Oct 2023 22:30:42 +0000</updated>
                            <resolved>Fri, 29 Jun 2018 20:19:49 +0000</resolved>
                                                    <fixVersion>4.0.1</fixVersion>
                    <fixVersion>4.1.1</fixVersion>
                                    <component>Aggregation Framework</component>
                                        <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="1935449" author="xgen-internal-githook" created="Fri, 29 Jun 2018 21:54:09 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;username&apos;: &apos;ksuarz&apos;, &apos;name&apos;: &apos;Kyle Suarez&apos;, &apos;email&apos;: &apos;kyle.suarez@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-35634&quot; title=&quot;view_catalog_cycle_lookup.js should not always assert that finds on views will succeed&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-35634&quot;&gt;&lt;del&gt;SERVER-35634&lt;/del&gt;&lt;/a&gt; view cycle test should not always assert that finds will succeed&lt;/p&gt;

&lt;p&gt;The aggregate command resolves all views to their backing collections,&lt;br/&gt;
then re-runs the command so that no views are present. However, it&lt;br/&gt;
releases the collection lock before creating and iterating the cursor.&lt;br/&gt;
In this window of time, one of the involved collections may be dropped&lt;br/&gt;
and replaced with a view.&lt;/p&gt;

&lt;p&gt;This fix robustifies view_cycle_catalog_lookup.js so that it tolerates&lt;br/&gt;
this situation, as it is expected for the command to fail.&lt;/p&gt;

&lt;p&gt;(cherry picked from commit 3406454039941a8ec1ff700fb6c3377ec6e5c5bc)&lt;br/&gt;
Branch: v4.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/bb7533cf0d5886e3eafe8b419dafb82135145a3a&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/bb7533cf0d5886e3eafe8b419dafb82135145a3a&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1935337" author="xgen-internal-githook" created="Fri, 29 Jun 2018 20:16:33 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;username&apos;: &apos;ksuarz&apos;, &apos;name&apos;: &apos;Kyle Suarez&apos;, &apos;email&apos;: &apos;kyle.suarez@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-35634&quot; title=&quot;view_catalog_cycle_lookup.js should not always assert that finds on views will succeed&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-35634&quot;&gt;&lt;del&gt;SERVER-35634&lt;/del&gt;&lt;/a&gt; view cycle test should not always assert that finds will succeed&lt;/p&gt;

&lt;p&gt;The aggregate command resolves all views to their backing collections,&lt;br/&gt;
then re-runs the command so that no views are present. However, it&lt;br/&gt;
releases the collection lock before creating and iterating the cursor.&lt;br/&gt;
In this window of time, one of the involved collections may be dropped&lt;br/&gt;
and replaced with a view.&lt;/p&gt;

&lt;p&gt;This fix robustifies view_cycle_catalog_lookup.js so that it tolerates&lt;br/&gt;
this situation, as it is expected for the command to fail.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/3406454039941a8ec1ff700fb6c3377ec6e5c5bc&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/3406454039941a8ec1ff700fb6c3377ec6e5c5bc&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1923329" author="kyle.suarez" created="Mon, 18 Jun 2018 14:07:59 +0000"  >&lt;p&gt;I think can be done. We could still &lt;tt&gt;assert.always()&lt;/tt&gt;, but if it fails, check that the error code is &lt;tt&gt;ErrorCodes::CommandNotSupportedOnView&lt;/tt&gt; (or, if we do &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-35635&quot; title=&quot;Use AutoGetCollection::ViewMode::kViewsPermitted when acquiring locks in DocumentSourceCursor::loadBatch()&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-35635&quot;&gt;SERVER-35635&lt;/a&gt;, I think the error would be &lt;tt&gt;ErrorCodes::OperationFailed&lt;/tt&gt;) and ignore it. We use &lt;tt&gt;ErrorCodes::GraphContainsCycle&lt;/tt&gt; when an illegal cycle is created, which is a clear signal that something went awfully wrong.&lt;/p&gt;</comment>
                            <comment id="1923308" author="max.hirschhorn@10gen.com" created="Mon, 18 Jun 2018 13:57:56 +0000"  >&lt;p&gt;The &lt;tt&gt;view_catalog_cycle_lookup.js&lt;/tt&gt; FSM workload is the only test that detected the issue described in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-35130&quot; title=&quot;view_catalog_cycle_lookup.js failed in the newly created concurrency_replication_causal_consistency suite&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-35130&quot;&gt;&lt;del&gt;SERVER-35130&lt;/del&gt;&lt;/a&gt; with the interaction between reloading the view catalog and secondary reads leading to an inconsistent in-memory view catalog. I&apos;d want to ensure it is still possible to detect that issue if we are going to weaken the assertions in the &lt;tt&gt;view_catalog_cycle_lookup.js&lt;/tt&gt; FSM workload.&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>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="560283">SERVER-35635</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_12450" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Backport Requested</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="15640"><![CDATA[v4.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>Mon, 18 Jun 2018 13:57:56 +0000</customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>kyle.suarez@mongodb.com</customfieldvalue>
            <customfieldvalue>max.hirschhorn@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hu0ro7:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|htrm4n:</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="2382">Query 2018-07-02</customfieldvalue>
    <customfieldvalue id="2404">Query 2018-07-16</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|hu0dxj:</customfieldvalue>

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