<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:50: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-82883] Recovering TransactionCoordinator on stepup may block acquiring read/write tickets while participants are in the prepared state</title>
                <link>https://jira.mongodb.org/browse/SERVER-82883</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Consider a TransactionCoordinator that has sent the prepare command to the participants and then crashes. The new primary, on stepup, will resume the coordination. There are several points at which this can stall behind a read/write ticket acquisition. This is undesirable, both for performance and because it can cause deadlocks.&lt;/p&gt;

&lt;p&gt;Ticket acquisitions occur at:&lt;br/&gt;
(1) When TransactionCoordinatorService::onStepUp &lt;a href=&quot;https://github.com/mongodb/mongo/blob/321a983475fc488280caa292337fdac854fa9438/src/mongo/db/s/transaction_coordinator_service.cpp#L224&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;calls replClientInfo.setLastOpToSystemLastOpTime&lt;/a&gt;, which takes the GlobalLock in MODE_IX.&lt;br/&gt;
(2) When TransactionCoordinatorService::onStepUp &lt;a href=&quot;https://github.com/mongodb/mongo/blob/321a983475fc488280caa292337fdac854fa9438/src/mongo/db/s/transaction_coordinator_service.cpp#L241&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;reads config.transaction_coordinators&lt;/a&gt;.&lt;br/&gt;
(3) When &lt;a href=&quot;https://github.com/mongodb/mongo/blob/321a983475fc488280caa292337fdac854fa9438/src/mongo/db/s/transaction_coordinator.cpp#L218&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;waiting for durable VectorClock&lt;/a&gt;. This sometimes results in a write (the first time after stepup, or upon topology changes).&lt;br/&gt;
(4) When (re-)&lt;a href=&quot;https://github.com/mongodb/mongo/blob/321a983475fc488280caa292337fdac854fa9438/src/mongo/db/s/transaction_coordinator.cpp#L243-L244&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;persisting the participants list&lt;/a&gt;. Note that even though it had already been persisted, if the coordinator &lt;a href=&quot;https://github.com/mongodb/mongo/blob/321a983475fc488280caa292337fdac854fa9438/src/mongo/db/s/transaction_coordinator.cpp#L487&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;had not persisted the &lt;em&gt;decision&lt;/em&gt; yet&lt;/a&gt;, on recovery we will persist again the participant list. As a separate improvement. we should also consider not doing this write again.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-60682&quot; title=&quot;TransactionCoordinator may block acquiring WiredTiger write ticket to persist its decision, prolonging transactions being in the prepared state&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-60682&quot;&gt;&lt;del&gt;SERVER-60682&lt;/del&gt;&lt;/a&gt; made &lt;a href=&quot;https://github.com/mongodb/mongo/blob/321a983475fc488280caa292337fdac854fa9438/src/mongo/db/s/transaction_coordinator_util.cpp#L499-L500&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;persisting the decision skip ticket acquisition&lt;/a&gt;, but did not address these other situations that occur on recovery.&lt;/p&gt;

&lt;p&gt;In addition to not skipping ticket acquisition, (1) and (3) do not skip FlowControl either.&lt;/p&gt;</description>
                <environment></environment>
        <key id="2492901">SERVER-82883</key>
            <summary>Recovering TransactionCoordinator on stepup may block acquiring read/write tickets while participants are in the prepared state</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="wenqin.ye@mongodb.com">Wenqin Ye</assignee>
                                    <reporter username="jordi.serra-torrens@mongodb.com">Jordi Serra Torrens</reporter>
                        <labels>
                    </labels>
                <created>Tue, 7 Nov 2023 17:43:57 +0000</created>
                <updated>Mon, 1 Jan 2024 20:00:25 +0000</updated>
                            <resolved>Tue, 12 Dec 2023 18:57:37 +0000</resolved>
                                    <version>4.4.0</version>
                    <version>5.0.0</version>
                    <version>6.0.0</version>
                    <version>7.0.0</version>
                                    <fixVersion>7.3.0-rc0</fixVersion>
                    <fixVersion>7.0.5</fixVersion>
                    <fixVersion>6.0.13</fixVersion>
                    <fixVersion>5.0.24</fixVersion>
                    <fixVersion>4.4.28</fixVersion>
                                    <component>Sharding</component>
                                        <votes>0</votes>
                                    <watches>11</watches>
                                                                                                                <comments>
                            <comment id="5972847" author="xgen-internal-githook" created="Wed, 27 Dec 2023 22:12:00 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Wenqin Ye&apos;, &apos;email&apos;: &apos;wenqin908@gmail.com&apos;, &apos;username&apos;: &apos;wenqinYe&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-82883&quot; title=&quot;Recovering TransactionCoordinator on stepup may block acquiring read/write tickets while participants are in the prepared state&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-82883&quot;&gt;&lt;del&gt;SERVER-82883&lt;/del&gt;&lt;/a&gt; Recovering TransactionCoordinator on stepup should skip acquiring read/write tickets while participants are in the prepared state&lt;/p&gt;

&lt;p&gt;GitOrigin-RevId: 24a5efab312e5f8c8253e07e05910fd0ed93e1a2&lt;br/&gt;
Branch: v5.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/181bf2c5a5d3c6f6e918011c414eb636ce8f891e&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/181bf2c5a5d3c6f6e918011c414eb636ce8f891e&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5971024" author="xgen-internal-githook" created="Tue, 26 Dec 2023 20:44:48 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Wenqin Ye&apos;, &apos;email&apos;: &apos;wenqin908@gmail.com&apos;, &apos;username&apos;: &apos;wenqinYe&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-82883&quot; title=&quot;Recovering TransactionCoordinator on stepup may block acquiring read/write tickets while participants are in the prepared state&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-82883&quot;&gt;&lt;del&gt;SERVER-82883&lt;/del&gt;&lt;/a&gt;: Recovering TransactionCoordinator on stepup should skip acquiring read/write tickets while participants are in the prepared state&lt;/p&gt;

&lt;p&gt;GitOrigin-RevId: e75ba7014caabc5c0a2296fa5105387ecd6c51c6&lt;br/&gt;
Branch: v4.4&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/1b595afaed5fc4ede00a8146900d08801add5f4d&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/1b595afaed5fc4ede00a8146900d08801add5f4d&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5953956" author="xgen-internal-githook" created="Fri, 15 Dec 2023 16:54:39 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Wenqin Ye&apos;, &apos;email&apos;: &apos;wenqin908@gmail.com&apos;, &apos;username&apos;: &apos;wenqinYe&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-82883&quot; title=&quot;Recovering TransactionCoordinator on stepup may block acquiring read/write tickets while participants are in the prepared state&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-82883&quot;&gt;&lt;del&gt;SERVER-82883&lt;/del&gt;&lt;/a&gt;: Recovering TransactionCoordinator on stepup should skip acquiring read/write tickets while participants are in the prepared state&lt;/p&gt;

&lt;p&gt;GitOrigin-RevId: b17eab4d2a58b8486cdb357398c33c0108f404cc&lt;br/&gt;
Branch: v7.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/ab14f5dbbadbc26d1ba6ba036844757bafa1dcc4&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/ab14f5dbbadbc26d1ba6ba036844757bafa1dcc4&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5953930" author="xgen-internal-githook" created="Fri, 15 Dec 2023 16:46:37 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Wenqin Ye&apos;, &apos;email&apos;: &apos;wenqin908@gmail.com&apos;, &apos;username&apos;: &apos;wenqinYe&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-82883&quot; title=&quot;Recovering TransactionCoordinator on stepup may block acquiring read/write tickets while participants are in the prepared state&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-82883&quot;&gt;&lt;del&gt;SERVER-82883&lt;/del&gt;&lt;/a&gt;: Recovering TransactionCoordinator on stepup should skip acquiring read/write tickets while participants are in the prepared state&lt;/p&gt;

&lt;p&gt;GitOrigin-RevId: 125838b48ea42921da92e99a550faefc895a1755&lt;br/&gt;
Branch: v6.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/a062dc737b748e78f5d3cacca16bfd558ac2f1c3&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/a062dc737b748e78f5d3cacca16bfd558ac2f1c3&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5942424" author="xgen-internal-githook" created="Mon, 11 Dec 2023 22:55:57 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Wenqin Ye&apos;, &apos;email&apos;: &apos;wenqin908@gmail.com&apos;, &apos;username&apos;: &apos;wenqinYe&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-82883&quot; title=&quot;Recovering TransactionCoordinator on stepup may block acquiring read/write tickets while participants are in the prepared state&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-82883&quot;&gt;&lt;del&gt;SERVER-82883&lt;/del&gt;&lt;/a&gt;: Recovering TransactionCoordinator on stepup should skip acquiring read/write tickets while participants are in the prepared state&lt;/p&gt;

&lt;p&gt;GitOrigin-RevId: fe92af8bb9da945673722a7a4115401cfa95a6ff&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/f4b555a1e2746c97dc73537c470b62c5833005d2&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/f4b555a1e2746c97dc73537c470b62c5833005d2&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5863353" author="josef.ahmad" created="Wed, 8 Nov 2023 08:11:09 +0000"  >&lt;p&gt;I know little about the transaction coordinator, but assuming that the majority of the work it does is on the critical path for retiring prepared transactions, would it make sense to exempt the coordinator from acquiring tickets altogether? It could be a more sustainable approach than patching up individual storage accesses.&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="10520">
                    <name>Problem/Incident</name>
                                            <outwardlinks description="causes">
                                                        </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="1897937">SERVER-60682</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>6.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="26583"><![CDATA[Cluster Scalability]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12450" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Backport Requested</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25578"><![CDATA[v7.0]]></customfieldvalue>
    <customfieldvalue key="23470"><![CDATA[v6.0]]></customfieldvalue>
    <customfieldvalue key="21777"><![CDATA[v5.0]]></customfieldvalue>
    <customfieldvalue key="18953"><![CDATA[v4.4]]></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>Wed, 8 Nov 2023 08:11:09 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        6 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_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>sviatlana.zuiko@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            6 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>155.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>jordi.serra-torrens@mongodb.com</customfieldvalue>
            <customfieldvalue>josef.ahmad@mongodb.com</customfieldvalue>
            <customfieldvalue>wenqin.ye@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i2z8fr:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i2h2fw:</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="7770">Cluster Scalability 2023-11-27</customfieldvalue>
    <customfieldvalue id="7771">Cluster Scalability 2023-12-11</customfieldvalue>
    <customfieldvalue id="7772">Cluster Scalability 2023-12-25</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|i2yul3:</customfieldvalue>

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