<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:59:33 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-64121] Add an enum flag to AutoGet* paths that disables multi-database locking unless specifically enabled</title>
                <link>https://jira.mongodb.org/browse/SERVER-64121</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;&lt;b&gt;TL;DR&lt;/b&gt;: AutoGet* for multi-collection locking cannot correctly ascertain whether collections are unsharded without first having checked the sharding dbVersion. Since AutoGet* relies on secondary namespaces being unsharded, it&apos;s only safe to rely on the UNSHARDED response for secondary namespaces that match the primary namespace&apos;s database. Because the sharding protocol only supports single collection/db version checking.&lt;/p&gt;

&lt;p&gt;------------------------&lt;/p&gt;

&lt;p&gt;Kal explained that the UNSHARDED collection version is not reliable without the dbVersion check. The scenario is thus:&lt;/p&gt;

&lt;p&gt;Shard A is the Primary Shard for database &lt;tt&gt;dbfoo&lt;/tt&gt;. This means all unsharded collections in the database are located on Shard A.&lt;/p&gt;

&lt;p&gt;An operation on Shard B runs on collection &lt;tt&gt;dbbar.bar&lt;/tt&gt;&#160;(primary namespace) and &apos;dbfoo.foo&apos; (secondary namespace).&lt;/p&gt;

&lt;p&gt;On Shard B, AutoGet will run a sharding dbVersion check on &lt;tt&gt;dbbar&lt;/tt&gt;, but not on &lt;tt&gt;dbfoo&lt;/tt&gt;; later AutoGet will run a sharding collection shardVersion check on &lt;tt&gt;dbfoo.foo&lt;/tt&gt;&#160;that returns UNSHARDED, which is supposed to be safe (note, only unsharded secondary namespaces are supported). Meanwhile, however,&#160;&lt;tt&gt;dbfoo.foo&lt;/tt&gt;&#160;on Shard A may have become sharded, unbeknownst to Shard B.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;em&gt;Basically, UNSHARDED for a collection, without the dbVersion check, can just mean that the Shard that checked the collection isn&apos;t participating in holding data for that collection, not that the collection is unsharded.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;------------------------&lt;/p&gt;

&lt;p&gt;Note: the SBE $lookup multi-collection use-case is on a single database, so that can continue. We did recently use multi-collection locking in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-62006&quot; title=&quot;Support majority read for _mdb_catalog&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-62006&quot;&gt;&lt;del&gt;SERVER-62006&lt;/del&gt;&lt;/a&gt;, too, so we should double check whether it&apos;s a safe use-case: if shardVersion checks aren&apos;t relevant, then it should be fine &#8211; this is why we should flag guard multi-database locking, to allow it if explicitly declared OK.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1993248">SERVER-64121</key>
            <summary>Add an enum flag to AutoGet* paths that disables multi-database locking unless specifically enabled</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="12300">Won&apos;t Do</resolution>
                                        <assignee username="dianna.hohensee@mongodb.com">Dianna Hohensee</assignee>
                                    <reporter username="dianna.hohensee@mongodb.com">Dianna Hohensee</reporter>
                        <labels>
                    </labels>
                <created>Wed, 2 Mar 2022 18:56:52 +0000</created>
                <updated>Tue, 31 May 2022 18:15:06 +0000</updated>
                            <resolved>Tue, 31 May 2022 18:14:42 +0000</resolved>
                                                                                        <votes>0</votes>
                                    <watches>7</watches>
                                                                                                                <comments>
                            <comment id="4389273" author="dianna.hohensee" created="Thu, 3 Mar 2022 15:10:17 +0000"  >&lt;p&gt;My thoughts are that there may be situations for internal operations wherein we don&apos;t care about sharding checks, and just want multi-collection access because it&apos;s easier. At the storage execution layer rather than higher levels. Get the read concern and collection minVisible checks, but disregard sharding. Not certain of the scenario, but there are plenty of places in the code that just take DBLock or CollectionLock, I think, with or without some form of iteratively locking collections.&lt;/p&gt;</comment>
                            <comment id="4389236" author="kaloian.manassiev" created="Thu, 3 Mar 2022 14:55:43 +0000"  >&lt;p&gt;Instead of adding a flag, shouldn&apos;t we just remove the ability in &lt;tt&gt;AutoGetDb&lt;/tt&gt; to pass in more than one database?&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="2058409">SERVER-66869</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>2.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 3 Mar 2022 14:55:43 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        1 year, 48 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_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>dianna.hohensee@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            1 year, 48 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>dianna.hohensee@mongodb.com</customfieldvalue>
            <customfieldvalue>kaloian.manassiev@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i0lurb:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i088ta:</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="5979">Execution Team 2022-05-02</customfieldvalue>
    <customfieldvalue id="5980">Execution Team 2022-05-16</customfieldvalue>
    <customfieldvalue id="5981">Execution Team 2022-05-30</customfieldvalue>
    <customfieldvalue id="6029">Execution Team 2022-06-13</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|i0lgwn:</customfieldvalue>

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