<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:53:20 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-61792] Extending lock in batcher hurts performance</title>
                <link>https://jira.mongodb.org/browse/SERVER-61792</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;The solution to avoiding an uninterruptible lock in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-61334&quot; title=&quot;Replication batcher uninterruptible lock deadlocks with storage change&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-61334&quot;&gt;&lt;del&gt;SERVER-61334&lt;/del&gt;&lt;/a&gt; causes performance degradation in the insert_vector test.  Experimentation shows that the issue is not the double-locking but rather the extension of the lock duration.   This is because taking the global lock also takes the PBWM, which results in synchronizing the OplogBatcher to the OplogApplier.  &lt;/p&gt;

&lt;p&gt;We should not take the PBWM nor any WT tickets for this particular lock acquisition, and audit other GlobalLock uses added as part of FileCopyBasedInitialSync to see if they should also not take the PBWM or WT tickets.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1935651">SERVER-61792</key>
            <summary>Extending lock in batcher hurts performance</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="matthew.russotto@mongodb.com">Matthew Russotto</assignee>
                                    <reporter username="matthew.russotto@mongodb.com">Matthew Russotto</reporter>
                        <labels>
                    </labels>
                <created>Tue, 30 Nov 2021 00:38:33 +0000</created>
                <updated>Sun, 29 Oct 2023 21:45:32 +0000</updated>
                            <resolved>Wed, 1 Dec 2021 17:25:05 +0000</resolved>
                                                    <fixVersion>5.2.0</fixVersion>
                                                        <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="4224645" author="xgen-internal-githook" created="Wed, 1 Dec 2021 16:44:00 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Matthew Russotto&apos;, &apos;email&apos;: &apos;matthew.russotto@mongodb.com&apos;, &apos;username&apos;: &apos;mtrussotto&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-61792&quot; title=&quot;Extending lock in batcher hurts performance&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-61792&quot;&gt;&lt;del&gt;SERVER-61792&lt;/del&gt;&lt;/a&gt; Extending lock in batcher hurts performance&lt;/p&gt;

&lt;p&gt;Before &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-61334&quot; title=&quot;Replication batcher uninterruptible lock deadlocks with storage change&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-61334&quot;&gt;&lt;del&gt;SERVER-61334&lt;/del&gt;&lt;/a&gt;, we took RSTL IX, PBWM IS, Global IS, once, and released those almost&lt;br/&gt;
immediately.  &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-61334&quot; title=&quot;Replication batcher uninterruptible lock deadlocks with storage change&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-61334&quot;&gt;&lt;del&gt;SERVER-61334&lt;/del&gt;&lt;/a&gt; took RSTL IX, PBWM IS, and Global IS, then took the same locks&lt;br/&gt;
recursively, and held them a little longer (not much!  It&apos;s just getting BSON objects off an&lt;br/&gt;
in-memory queue). Global IS is nearly always uncontended (except shutdown and storage change), as is&lt;br/&gt;
RSTL IX, and getting a lock we already have is very cheap.  But holding PBWM IS a little longer was&lt;br/&gt;
enough to essentially serialize oplog application and batching a lot of the time.&lt;/p&gt;

&lt;p&gt;This fix takes RSTL IX and Global IS, then takes those locks recursively, and holds them a bit&lt;br/&gt;
longer than the original, but there&apos;s no contention.  The purpose of &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-61334&quot; title=&quot;Replication batcher uninterruptible lock deadlocks with storage change&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-61334&quot;&gt;&lt;del&gt;SERVER-61334&lt;/del&gt;&lt;/a&gt; was to ensure we&lt;br/&gt;
did not enqueue an uninterruptible global lock while a storage change held Global X, as that results&lt;br/&gt;
in deadlock; this purpose is preserved by this change.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/526f24e10905eb80f58dcd1ddd5db37853c91a60&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/526f24e10905eb80f58dcd1ddd5db37853c91a60&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4220894" author="matthew.russotto" created="Tue, 30 Nov 2021 15:05:28 +0000"  >&lt;p&gt;Looks like all the other cases added for FCBIS are primary, startup, or already have ShouldNotBlockSecondaryApplication, so it&apos;s just this one.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <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>2.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>Tue, 30 Nov 2021 15:13:09 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        2 years, 10 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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-1897</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>
                            2 years, 10 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>135.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>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>matthew.russotto@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i0c1cn:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hzvdqn:</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="5530">Replication 2021-12-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|i0bnhz:</customfieldvalue>

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