<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:06:56 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-66972] Database critical section does not serialize with ongoing refreshes</title>
                <link>https://jira.mongodb.org/browse/SERVER-66972</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Consider the following scenario:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;A StaleDatabaseVersion error is thrown due to db version mismatch (no critical section in place)&lt;/li&gt;
	&lt;li&gt;The exception is bubbled up and spawn &lt;a href=&quot;https://github.com/mongodb/mongo/blob/2b011507f069c89981f084ac7b8e0eaf06bb6ea3/src/mongo/db/s/shard_filtering_metadata_refresh.cpp#L89&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;a database refresh&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;The database critical section is acquired&lt;/li&gt;
	&lt;li&gt;The database refresh completes and &lt;a href=&quot;https://github.com/mongodb/mongo/blob/2b011507f069c89981f084ac7b8e0eaf06bb6ea3/src/mongo/db/s/shard_filtering_metadata_refresh.cpp#L525&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;installs the new db version in the DSS&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;The critical section is released&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;To guarantee correctness of the critical section we must ensure that all the refreshes started before the critical section acquisition (3.) will be invalidated and no new refreshes could start before (5.)&lt;/p&gt;</description>
                <environment></environment>
        <key id="2060786">SERVER-66972</key>
            <summary>Database critical section does not serialize with ongoing refreshes</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="antonio.fuschetto@mongodb.com">Antonio Fuschetto</assignee>
                                    <reporter username="tommaso.tocci@mongodb.com">Tommaso Tocci</reporter>
                        <labels>
                            <label>PM-2144-Milestone-0</label>
                    </labels>
                <created>Thu, 2 Jun 2022 17:33:57 +0000</created>
                <updated>Sun, 29 Oct 2023 21:37:23 +0000</updated>
                            <resolved>Mon, 29 Aug 2022 12:26:17 +0000</resolved>
                                    <version>5.0.9</version>
                    <version>6.0.0-rc8</version>
                                    <fixVersion>6.1.1</fixVersion>
                    <fixVersion>5.0.14</fixVersion>
                    <fixVersion>6.0.3</fixVersion>
                    <fixVersion>6.2.0-rc0</fixVersion>
                                                        <votes>0</votes>
                                    <watches>8</watches>
                                                                                                                <comments>
                            <comment id="4879087" author="xgen-internal-githook" created="Wed, 5 Oct 2022 10:42:48 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Antonio Fuschetto&apos;, &apos;email&apos;: &apos;antonio.fuschetto@mongodb.com&apos;, &apos;username&apos;: &apos;afuschetto&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-66972&quot; title=&quot;Database critical section does not serialize with ongoing refreshes&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-66972&quot;&gt;&lt;del&gt;SERVER-66972&lt;/del&gt;&lt;/a&gt; Database critical section does not serialize with ongoing refreshes&lt;br/&gt;
Branch: v6.1&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/59053967edeea2ace11b0eb9fbe4542dc56a0cab&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/59053967edeea2ace11b0eb9fbe4542dc56a0cab&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4871869" author="xgen-internal-githook" created="Mon, 3 Oct 2022 08:08:59 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Antonio Fuschetto&apos;, &apos;email&apos;: &apos;antonio.fuschetto@mongodb.com&apos;, &apos;username&apos;: &apos;afuschetto&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-66972&quot; title=&quot;Database critical section does not serialize with ongoing refreshes&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-66972&quot;&gt;&lt;del&gt;SERVER-66972&lt;/del&gt;&lt;/a&gt; Database critical section does not serialize with ongoing refreshes&lt;br/&gt;
Branch: v5.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/6e1b7b9990646d89113e613667e6ce5303a2c706&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/6e1b7b9990646d89113e613667e6ce5303a2c706&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4871863" author="xgen-internal-githook" created="Mon, 3 Oct 2022 08:04:22 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Antonio Fuschetto&apos;, &apos;email&apos;: &apos;antonio.fuschetto@mongodb.com&apos;, &apos;username&apos;: &apos;afuschetto&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-66972&quot; title=&quot;Database critical section does not serialize with ongoing refreshes&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-66972&quot;&gt;&lt;del&gt;SERVER-66972&lt;/del&gt;&lt;/a&gt; Database critical section does not serialize with ongoing refreshes&lt;br/&gt;
Branch: v6.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/546af4aa74cd24d59272b41878f8af14519ad433&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/546af4aa74cd24d59272b41878f8af14519ad433&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4783425" author="xgen-internal-githook" created="Mon, 29 Aug 2022 12:23:37 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Antonio Fuschetto&apos;, &apos;email&apos;: &apos;antonio.fuschetto@mongodb.com&apos;, &apos;username&apos;: &apos;afuschetto&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-66972&quot; title=&quot;Database critical section does not serialize with ongoing refreshes&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-66972&quot;&gt;&lt;del&gt;SERVER-66972&lt;/del&gt;&lt;/a&gt; Database critical section does not serialize with ongoing refreshes&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/0ff2527bab030462910a03fdb9a9435d29db1fe8&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/0ff2527bab030462910a03fdb9a9435d29db1fe8&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4701746" author="JIRAUSER1259062" created="Mon, 25 Jul 2022 13:39:54 +0000"  >&lt;p&gt;The solution that I am implementing is designed to be backported, since this race condition affects old branches as well. With the &lt;em&gt;Sharding-first Catalog&lt;/em&gt; project the logic of how the database version is managed at shard level will change, which probably allows us to get rid of the current logic to refresh the DB version in case of mismatch with the one provided by the router. This will included, presumably, in version 7.0.&lt;/p&gt;

&lt;p&gt;The fix will provide the following properties to the current &lt;tt&gt;onDbVersionMismatch&lt;/tt&gt; implementation:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;No threads are in the critical section, can enter it, or can X-lock the database when the current version is read&lt;/li&gt;
	&lt;li&gt;No other threads are refreshing the database version (only one update at a time)&lt;/li&gt;
	&lt;li&gt;When the version is cleared (dropped database or moved primary shard), any pending refreshes on that database can be aborted&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="4613623" author="JIRAUSER1259062" created="Tue, 14 Jun 2022 08:29:01 +0000"  >&lt;p&gt;Whatever will be the strategy to resolve this problem, the procedure that checks and possibly recovers the database version must satisfy the following conditions:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;No critical section is taken (wait for it leaves)&lt;/li&gt;
	&lt;li&gt;No refresh is in progress (wait for it completes)&lt;/li&gt;
	&lt;li&gt;If the database information is cleared, abort any pending recovery requests&lt;/li&gt;
&lt;/ul&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="2120881">SERVER-69108</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="2129322">SERVER-69444</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10520">
                    <name>Problem/Incident</name>
                                            <outwardlinks description="causes">
                                        <issuelink>
            <issuekey id="2143919">SERVER-69930</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="2109349">SERVER-68661</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="2165131">SERVER-70793</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>6.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</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="24444"><![CDATA[v6.1]]></customfieldvalue>
    <customfieldvalue key="23470"><![CDATA[v6.0]]></customfieldvalue>
    <customfieldvalue key="21777"><![CDATA[v5.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>Tue, 14 Jun 2022 08:29:01 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        1 year, 18 weeks 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-69108'>SERVER-69108</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-2144</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>
                            1 year, 18 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>20.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>antonio.fuschetto@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>tommaso.tocci@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i0x9bz:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i0g4yw:</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_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="6285">Sharding EMEA 2022-07-11</customfieldvalue>
    <customfieldvalue id="6286">Sharding EMEA 2022-07-25</customfieldvalue>
    <customfieldvalue id="6287">Sharding EMEA 2022-08-08</customfieldvalue>
    <customfieldvalue id="6395">Sharding EMEA 2022-08-22</customfieldvalue>
    <customfieldvalue id="6396">Sharding EMEA 2022-09-05</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|i0wvhb:</customfieldvalue>

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