<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:13:41 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-69523] Allow METADATA and MUTEX locks to be acquired while holding an oplog hole</title>
                <link>https://jira.mongodb.org/browse/SERVER-69523</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Locks of type &lt;tt&gt;RESOURCE_MUTEX&lt;/tt&gt; are intended to serve as actual mutexes and no blocking work should be performed while they are held. Sharding already uses them in order to protect its in-memory structures.&lt;/p&gt;

&lt;p&gt;This ticket is to change &lt;a href=&quot;https://github.com/mongodb/mongo/blob/993d08489112ac4527764528f378bbad89af12f7/src/mongo/db/concurrency/lock_state.cpp#L855&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;this&lt;/a&gt; and &lt;a href=&quot;https://github.com/mongodb/mongo/blob/993d08489112ac4527764528f378bbad89af12f7/src/mongo/db/concurrency/lock_state.cpp#L943&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;this&lt;/a&gt; invariant to exclude &lt;tt&gt;RESOURCE_MUTEX&lt;/tt&gt;.&lt;/p&gt;</description>
                <environment></environment>
        <key id="2132031">SERVER-69523</key>
            <summary>Allow METADATA and MUTEX locks to be acquired while holding an oplog hole</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="kaloian.manassiev@mongodb.com">Kaloian Manassiev</assignee>
                                    <reporter username="kaloian.manassiev@mongodb.com">Kaloian Manassiev</reporter>
                        <labels>
                            <label>PM-2144-Milestone-0</label>
                    </labels>
                <created>Thu, 8 Sep 2022 14:30:00 +0000</created>
                <updated>Sun, 29 Oct 2023 21:33:29 +0000</updated>
                            <resolved>Thu, 15 Sep 2022 08:14:28 +0000</resolved>
                                                    <fixVersion>6.2.0-rc0</fixVersion>
                                                        <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="4829474" author="xgen-internal-githook" created="Thu, 15 Sep 2022 08:12:21 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Kaloian Manassiev&apos;, &apos;email&apos;: &apos;kaloian.manassiev@mongodb.com&apos;, &apos;username&apos;: &apos;kaloianm&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-69523&quot; title=&quot;Allow METADATA and MUTEX locks to be acquired while holding an oplog hole&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-69523&quot;&gt;&lt;del&gt;SERVER-69523&lt;/del&gt;&lt;/a&gt; Only allow METADATA and MUTEX lock acqisitions with OpContext&lt;/p&gt;

&lt;p&gt;This makes mutex acquisitions both interruptible and allows the lock&lt;br/&gt;
manager to be able to inspect the lock acqusitions so far.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/fa920335ed6a41efa417e5c41940cd28a4a36829&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/fa920335ed6a41efa417e5c41940cd28a4a36829&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4821424" author="xgen-internal-githook" created="Tue, 13 Sep 2022 07:56:16 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Kaloian Manassiev&apos;, &apos;email&apos;: &apos;kaloian.manassiev@mongodb.com&apos;, &apos;username&apos;: &apos;kaloianm&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-69523&quot; title=&quot;Allow METADATA and MUTEX locks to be acquired while holding an oplog hole&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-69523&quot;&gt;&lt;del&gt;SERVER-69523&lt;/del&gt;&lt;/a&gt; Allow METADATA and MUTEX locks during oplog hole&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/5a6d6a46b809a2a35099b18e1ee693e70a67f28d&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/5a6d6a46b809a2a35099b18e1ee693e70a67f28d&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4813656" author="kaloian.manassiev" created="Fri, 9 Sep 2022 05:47:50 +0000"  >&lt;p&gt;RESOURCE_MUTEXes are effectively a fancy std::mutex with some benefits such as ability to lock something by name, lock stats tracking and presentation in the locking graphs. Because of this, no blocking work should actually be done under them, and ideally no further locks should be acquired after a RESOURCE_MUTEX is taken (even though, we don&apos;t currently obey this, since we are also currently &lt;a href=&quot;https://github.com/mongodb/mongo/blob/a7ba740894c9d935e441371bdfaca341eed761dd/src/mongo/db/s/config/sharding_catalog_manager.h#L758&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;using them&lt;/a&gt; as a way to ensure only single kind of DDL operation runs at a time.&lt;/p&gt;

&lt;p&gt;One of the std::mutex-like usages is the protection of the DSS/CSS state and that runs in the OpObservers, so there is actually an OpLog hole held, but because &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-69461&quot; title=&quot;The behaviour of lock acquisitions differs depending on whether OpContext or Locker is used&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-69461&quot;&gt;&lt;del&gt;SERVER-69461&lt;/del&gt;&lt;/a&gt; we are not actually invarianting.&lt;/p&gt;

&lt;p&gt;So yes, there is some hypothetical concern, but it is no different than running a query while holding an std::mutex for example.&lt;/p&gt;

&lt;p&gt;In addition, I want to point out that the same happens with the RESOURCE_METADATA locks that we use.&lt;/p&gt;</comment>
                            <comment id="4812922" author="max.hirschhorn@10gen.com" created="Thu, 8 Sep 2022 20:27:11 +0000"  >&lt;p&gt;This sounds prone to stalling replication if RESOURCE&amp;#95;MUTEX is used differently by a component in the server codebase. Is adding an exemption at the level of the RESOURCE&amp;#95;MUTEX resource category the appropriate place?&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="2129546">SERVER-69461</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>4.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.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, 8 Sep 2022 20:27:11 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        1 year, 20 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_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, 20 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>kaloian.manassiev@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|i19ft3:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i0s66g:</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="6397">Sharding EMEA 2022-09-19</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|i191yf:</customfieldvalue>

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