<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:44:07 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-36799] Move transaction related functionality from Session into TransactionParticipant</title>
                <link>https://jira.mongodb.org/browse/SERVER-36799</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-35900&quot; title=&quot;Refactor transaction machinery out from Session class&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-35900&quot;&gt;&lt;del&gt;SERVER-35900&lt;/del&gt;&lt;/a&gt; made TransactionParticipant as a decoration of Session, but this causes a lot of cross-component references between Session and TransactionParticipant. Instead, we should move everything that&apos;s related to Transactions out of Session and into TransactionParticipant.&lt;/p&gt;</description>
                <environment></environment>
        <key id="592013">SERVER-36799</key>
            <summary>Move transaction related functionality from Session into TransactionParticipant</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="kaloian.manassiev@mongodb.com">Kaloian Manassiev</assignee>
                                    <reporter username="siyuan.zhou@mongodb.com">Siyuan Zhou</reporter>
                        <labels>
                            <label>ShardedTxn:SessionRefactor</label>
                    </labels>
                <created>Tue, 21 Aug 2018 21:36:03 +0000</created>
                <updated>Mon, 8 Jan 2024 15:23:17 +0000</updated>
                            <resolved>Mon, 8 Oct 2018 06:47:53 +0000</resolved>
                                                    <fixVersion>4.1.4</fixVersion>
                                    <component>Replication</component>
                    <component>Sharding</component>
                                        <votes>0</votes>
                                    <watches>8</watches>
                                                                                                                <comments>
                            <comment id="2026194" author="xgen-internal-githook" created="Mon, 8 Oct 2018 06:44:46 +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-36799&quot; title=&quot;Move transaction related functionality from Session into TransactionParticipant&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-36799&quot;&gt;&lt;del&gt;SERVER-36799&lt;/del&gt;&lt;/a&gt; Move all transactions and retryable writes functionality from Session into TransactionParticipant&lt;/p&gt;

&lt;p&gt;This change leaves the Session class to be a plain decorable structure&lt;br/&gt;
only used for serialization of operations on the same logical session.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/b272bf351c39677d1e87d5c7fcd8b15b61465012&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/b272bf351c39677d1e87d5c7fcd8b15b61465012&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2000923" author="xgen-internal-githook" created="Wed, 12 Sep 2018 17:59:58 +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-36799&quot; title=&quot;Move transaction related functionality from Session into TransactionParticipant&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-36799&quot;&gt;&lt;del&gt;SERVER-36799&lt;/del&gt;&lt;/a&gt; Get rid of the separate TransactionParticipant 2PC state machine&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/d6336b278148540584eb39a658057dc8ae442788&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/d6336b278148540584eb39a658057dc8ae442788&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1985425" author="schwerin" created="Fri, 24 Aug 2018 20:10:07 +0000"  >&lt;p&gt;Just don&apos;t name it &lt;tt&gt;TransactionManager&lt;/tt&gt;. I&apos;m already trying to prevent the sharding team from naming a class &lt;tt&gt;TransactionCoordinatorManager&lt;/tt&gt;. &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.mongodb.org/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                            <comment id="1985416" author="siyuan.zhou@10gen.com" created="Fri, 24 Aug 2018 20:02:48 +0000"  >&lt;p&gt;As we decided to make Session thin, we can add another indirected layer &lt;tt&gt;TransactionManager&lt;/tt&gt;, which is a decoration on Session and owns &lt;tt&gt;TransactionParticipant&lt;/tt&gt;. TxnNumber is then a member of &lt;tt&gt;TransactionManager&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;There is a one-to-one mapping between the txnNumber to one of the transaction roles: retryable write (no transaction), participant and coordinator. At a given time, the transaction on a session can only be one of the three. A coordinator may owns another participant, but it&apos;s different from the one owned by TransactionManager. Bumping txnNumber on &lt;tt&gt;TransactionManager&lt;/tt&gt; will try to abort the current role, which throws an exception if it can&apos;t. The benifits are &lt;br/&gt;
1) to capture the exclusiveness of the transaction roles;&lt;br/&gt;
2) to unify bumping txnNumber for all transaction roles, Kal&apos;s work on &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-36544&quot; title=&quot;Refactor config.transactions table manipulation out of Sessions class&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-36544&quot;&gt;&lt;del&gt;SERVER-36544&lt;/del&gt;&lt;/a&gt; simplified this issue, but bumping the txnNumber is not protected by session checkout, when a prepared &lt;tt&gt;TransactionParticipant&lt;/tt&gt; is stashed or when the coordinator is waiting for acks for a commit decision.&lt;br/&gt;
3) the instance lifetime of transaction roles is the same as it&apos;s logical lifetime.&lt;/p&gt;</comment>
                            <comment id="1984374" author="esha.maharishi@10gen.com" created="Thu, 23 Aug 2018 21:16:56 +0000"  >&lt;p&gt;Also, if we want to put Session on mongos, Session cannot know about TransactionParticipant.&lt;/p&gt;</comment>
                            <comment id="1982321" author="schwerin" created="Wed, 22 Aug 2018 12:59:12 +0000"  >&lt;p&gt;There may be another solution by introducing constructor/destructor actions to sessions. I&apos;d really like to avoid direct ownership of TP by Session.&lt;/p&gt;</comment>
                            <comment id="1981879" author="siyuan.zhou@10gen.com" created="Tue, 21 Aug 2018 21:38:25 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=renctan&quot; class=&quot;user-hover&quot; rel=&quot;renctan&quot;&gt;renctan&lt;/a&gt;, this ticket is from our conversation with &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=mira.carey%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;mira.carey@mongodb.com&quot;&gt;mira.carey@mongodb.com&lt;/a&gt;, I filed it to make sure we don&apos;t forget the problem.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="594055">SERVER-36848</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="607944">SERVER-37244</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="607945">SERVER-37245</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>7.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_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, 22 Aug 2018 12:59:12 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        5 years, 18 weeks, 2 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_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>
                            5 years, 18 weeks, 2 days ago
                        </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>schwerin@mongodb.com</customfieldvalue>
            <customfieldvalue>esha.maharishi@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>kaloian.manassiev@mongodb.com</customfieldvalue>
            <customfieldvalue>siyuan.zhou@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hu63jj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr84pz:</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="2482">Sharding 2018-09-24</customfieldvalue>
    <customfieldvalue id="2538">Sharding 2018-10-08</customfieldvalue>
    <customfieldvalue id="2539">Sharding 2018-10-22</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_11861" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>User Summary</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="11856"><![CDATA[Not Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hu5psv:</customfieldvalue>

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