<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:47:45 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-38028] Participant with prepared transaction on session should block request for higher txn number on session rather than failing the new request</title>
                <link>https://jira.mongodb.org/browse/SERVER-38028</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Currently, if a shard receives a request with a higher transaction number on a session for which it currently has a transaction in prepare, the shard fails the request.&lt;/p&gt;

&lt;p&gt;This means currently, the transaction &lt;b&gt;coordinator&lt;/b&gt; must wait for a transaction decision to be &lt;b&gt;fully ack&apos;d&lt;/b&gt; before returning the decision to the client - otherwise our tests that do back-to-back transactions are racy, because the next transaction statement might arrive at a shard before the shard hears the decision from the coordinator.&lt;/p&gt;

&lt;p&gt;It would improve the back-to-back latency of transactions, particularly when there is one &quot;slow&quot; participant, if the coordinator could return the decision to the client as soon as the decision is &lt;b&gt;durable&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;This ticket is to enable the coordinator to return the decision as when the decision is durable by making requests with higher transaction numbers &lt;b&gt;block rather than fail&lt;/b&gt;.&lt;/p&gt;</description>
                <environment></environment>
        <key id="631366">SERVER-38028</key>
            <summary>Participant with prepared transaction on session should block request for higher txn number on session rather than failing the new request</summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</type>
                                            <priority id="4" iconUrl="https://jira.mongodb.org/images/icons/priorities/minor.svg">Minor - P4</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.saltz@mongodb.com">Matthew Saltz</assignee>
                                    <reporter username="esha.maharishi@mongodb.com">Esha Maharishi</reporter>
                        <labels>
                            <label>ShardedTxn:FutureOptimizations</label>
                    </labels>
                <created>Thu, 8 Nov 2018 16:51:17 +0000</created>
                <updated>Sun, 29 Oct 2023 22:26:43 +0000</updated>
                            <resolved>Fri, 6 Sep 2019 17:32:33 +0000</resolved>
                                                    <fixVersion>4.3.1</fixVersion>
                    <fixVersion>4.2.4</fixVersion>
                                    <component>Replication</component>
                                        <votes>0</votes>
                                    <watches>5</watches>
                                                                                                                <comments>
                            <comment id="2914825" author="xgen-internal-githook" created="Thu, 27 Feb 2020 18:44:54 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Matthew Saltz&apos;, &apos;username&apos;: &apos;saltzm&apos;, &apos;email&apos;: &apos;matthew.saltz@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-38028&quot; title=&quot;Participant with prepared transaction on session should block request for higher txn number on session rather than failing the new request&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-38028&quot;&gt;&lt;del&gt;SERVER-38028&lt;/del&gt;&lt;/a&gt; Block new transactions on sessions behind prepared transactions&lt;/p&gt;

&lt;p&gt;This is a combination backport of two commits:&lt;br/&gt;
(cherry picked from commit 59079867e7bba25e1201f50d6e470d7157825f84)&lt;br/&gt;
(cherry picked from commit 41b3d7da7c763e304bc8f4056d0d31d200742e0b)&lt;br/&gt;
Branch: v4.2&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/9cfde707ff1eab889301a450ba4e1b3d74abe000&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/9cfde707ff1eab889301a450ba4e1b3d74abe000&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2409013" author="xgen-internal-githook" created="Thu, 5 Sep 2019 15:19:44 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Matthew Saltz&apos;, &apos;username&apos;: &apos;saltzm&apos;, &apos;email&apos;: &apos;matthew.saltz@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-38028&quot; title=&quot;Participant with prepared transaction on session should block request for higher txn number on session rather than failing the new request&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-38028&quot;&gt;&lt;del&gt;SERVER-38028&lt;/del&gt;&lt;/a&gt; Block new transactions on sessions behind prepared transactions&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/59079867e7bba25e1201f50d6e470d7157825f84&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/59079867e7bba25e1201f50d6e470d7157825f84&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2366623" author="esha.maharishi@10gen.com" created="Mon, 12 Aug 2019 13:41:45 +0000"  >&lt;p&gt;As &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=matthew.saltz&quot; class=&quot;user-hover&quot; rel=&quot;matthew.saltz&quot;&gt;matthew.saltz&lt;/a&gt; found on BF-14027, even though the&#160;&lt;b&gt;coordinator shard&lt;/b&gt; currently waits for all acks before returning an answer to the client, a client can hit this issue if the client&#160;&lt;b&gt;recovers&lt;/b&gt; a decision using the recovery token, because a &lt;b&gt;recovery shard&lt;/b&gt; does not wait for acks before returning an answer.&lt;/p&gt;

&lt;p&gt;In fact, the recovery shard &lt;em&gt;cannot&lt;/em&gt; be made to wait for acks, since the recovery shard (the &lt;b&gt;first write&lt;/b&gt; participant) is not always the same as the coordinator shard (the &lt;b&gt;first&lt;/b&gt; participant). (The recovery shard must be a write participant because of the read-only optimizations.)&lt;/p&gt;</comment>
                            <comment id="2254882" author="judah.schvimer" created="Tue, 21 May 2019 19:34:38 +0000"  >&lt;p&gt;That could make sense. I&apos;ll leave it up to Aly if we want to mention that we&apos;re currently not giving w:1 behavior.&lt;/p&gt;</comment>
                            <comment id="2254873" author="esha.maharishi@10gen.com" created="Tue, 21 May 2019 19:30:50 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=judah.schvimer&quot; class=&quot;user-hover&quot; rel=&quot;judah.schvimer&quot;&gt;judah.schvimer&lt;/a&gt;, do you think so? I commented this on HELP-9592:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;My understanding is that we don&apos;t want to document it because we are currently providing a stronger guarantee for w:1 than what is required, and we may weaken the guarantee to what w:1 ordinarily means in the near future.&lt;/p&gt;&lt;/blockquote&gt;</comment>
                            <comment id="2254858" author="judah.schvimer" created="Tue, 21 May 2019 19:23:14 +0000"  >&lt;p&gt;We should make sure to document this. CC &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=alyson.cabral&quot; class=&quot;user-hover&quot; rel=&quot;alyson.cabral&quot;&gt;alyson.cabral&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2254435" author="esha.maharishi@10gen.com" created="Tue, 21 May 2019 17:00:40 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=judah.schvimer&quot; class=&quot;user-hover&quot; rel=&quot;judah.schvimer&quot;&gt;judah.schvimer&lt;/a&gt; they will always be getting writeConcern majority (that is, the transaction&apos;s decision, once returned to the client, will never be rolled back).&lt;/p&gt;</comment>
                            <comment id="2254254" author="judah.schvimer" created="Tue, 21 May 2019 15:55:57 +0000"  >&lt;p&gt;Is this only an optimization? Or are we not respecting the user&apos;s writeConcern if we do not do this for 4.2.0?&lt;/p&gt;</comment>
                            <comment id="2223908" author="esha.maharishi@10gen.com" created="Wed, 24 Apr 2019 19:53:03 +0000"  >&lt;p&gt;Marked as related to &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-40808&quot; title=&quot;Recovering a transaction&amp;#39;s outcome should block if the participant is in prepare&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-40808&quot;&gt;&lt;del&gt;SERVER-40808&lt;/del&gt;&lt;/a&gt;, since both require machinery to make TransactionParticipant notify waiters when it has finished committing or aborting a transaction.&lt;/p&gt;</comment>
                            <comment id="2114124" author="judah.schvimer" created="Mon, 14 Jan 2019 15:50:03 +0000"  >&lt;p&gt;We&apos;re postponing this until prepare is fully correct and tested.&lt;/p&gt;</comment>
                            <comment id="2055864" author="tess.avitabile" created="Thu, 8 Nov 2018 16:59:38 +0000"  >&lt;p&gt;This would also allow us to respect the user writeConcern and return to the client as soon as the decision is written with the user writeConcern.&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">
                                        <issuelink>
            <issuekey id="611093">SERVER-37364</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="979530">SERVER-44260</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="744629">SERVER-40808</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>11.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_12450" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Backport Requested</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="16775"><![CDATA[v4.2]]></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 Nov 2018 16:59:38 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        3 years, 49 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_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>
                            3 years, 49 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>49.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>esha.maharishi@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>judah.schvimer@mongodb.com</customfieldvalue>
            <customfieldvalue>matthew.saltz@mongodb.com</customfieldvalue>
            <customfieldvalue>tess.avitabile@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hucgkn:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr6yef:</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="3197">Sharding 2019-08-26</customfieldvalue>
    <customfieldvalue id="3198">Sharding 2019-09-09</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|huc2tz:</customfieldvalue>

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