<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:55:30 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-62576] Do not relinquish cursors across commands for snapshot reads and multi-statement transactions</title>
                <link>https://jira.mongodb.org/browse/SERVER-62576</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;When implementing &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-60741&quot; title=&quot;Retain valid and positioned cursors across getMores for the find command&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-60741&quot;&gt;&lt;del&gt;SERVER-60741&lt;/del&gt;&lt;/a&gt;, I excluded snapshot reads from using the behavior which preserves cursors across commands. This decision was based on a mistaken assumption, and we should change snapshot reads to stash their RecoveryUnit across getMores. We should also change query plans opened in multi statements transactions to not give up their storage cursors across commands. The bit about stashing the RecoveryUnit is already taken care of in this case.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1962959">SERVER-62576</key>
            <summary>Do not relinquish cursors across commands for snapshot reads and multi-statement transactions</summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="1" iconUrl="https://jira.mongodb.org/images/icons/statuses/open.png" description="">Open</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="backlog-server-execution">Backlog - Storage Execution Team</assignee>
                                    <reporter username="ian.boros@mongodb.com">Ian Boros</reporter>
                        <labels>
                    </labels>
                <created>Wed, 12 Jan 2022 22:42:11 +0000</created>
                <updated>Tue, 6 Dec 2022 00:40:26 +0000</updated>
                                                                                                <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="4839699" author="dianna.hohensee" created="Mon, 19 Sep 2022 20:13:02 +0000"  >&lt;p&gt;Additional Relevant Info Note:&lt;/p&gt;

&lt;p&gt;Multi-document transactions originally cleaned up associated getMore state (ClientCursors) when aborted: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-33690&quot; title=&quot;Transaction abort and commit should kill any associated client cursors&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-33690&quot;&gt;&lt;del&gt;SERVER-33690&lt;/del&gt;&lt;/a&gt;. However, a solution to a deadlock scenario was to skip cleanup of getMore state when a multi-document transaction gets aborted and instead to rely upon drivers or server cursor timeouts to close the cursors: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-35217&quot; title=&quot;killSessions command attempts to kill a transaction while holding SessionCatalog::_mutex, which leads to deadlock&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-35217&quot;&gt;&lt;del&gt;SERVER-35217&lt;/del&gt;&lt;/a&gt;. The deadlock may no longer be a concern, as fewer locks are taken by the relevant code. My initial investigation in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-69143&quot; title=&quot;CursorManager no longer needs to handle ClientCursor::dispose() outside of mutexes&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-69143&quot;&gt;SERVER-69143&lt;/a&gt; was encouraging.&lt;/p&gt;</comment>
                            <comment id="4839698" author="dianna.hohensee" created="Mon, 19 Sep 2022 20:12:45 +0000"  >&lt;p&gt;See the PR for details on where the work for this ticket was left off, if reviving. I think the solution to this problem will more likely involve a different direction, wherein we choose to merge ClientCursor with TransactionParticipant. Or at least we need to do something about abortTransaction destructing the RecoveryUnit without clearing open getMore state / ClientCursors that hold open storage cursors &amp;#8211; RU destructor reasonably invariants that no storage cursors are open.&lt;/p&gt;</comment>
                            <comment id="4777972" author="dianna.hohensee" created="Thu, 25 Aug 2022 21:07:47 +0000"  >&lt;p&gt;Looks like the command layer/infrastructure is where we stash transaction resources: see &lt;a href=&quot;https://github.com/mongodb/mongo/blob/42aef32217428c8d349ceb80ef62d077eafb835e/src/mongo/db/service_entry_point_common.cpp#L926&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;https://github.com/mongodb/mongo/blob/42aef32217428c8d349ceb80ef62d077eafb835e/src/mongo/db/service_entry_point_common.cpp#L1138-L1162&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt;. I think the most straightforward / easiest way to handle multi-doc transactions is to have read commands not stash the RU but otherwise perform all the other new logic we&apos;re adding for cross cmd positioned cursors. Change the enablement &lt;a href=&quot;https://github.com/mongodb/mongo/blob/42aef32217428c8d349ceb80ef62d077eafb835e/src/mongo/db/commands/find_cmd.cpp#L569-L573&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;flag&lt;/a&gt; to an enum that&apos;s either kEnabledStashRecoveryUnit or kEnabledDeferStashingRecoveryUnit &amp;#8211; or some such names.&lt;/p&gt;</comment>
                            <comment id="4777681" author="dianna.hohensee" created="Thu, 25 Aug 2022 19:41:50 +0000"  >&lt;p&gt;Splitting off snapshot reads enablement to &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-69159&quot; title=&quot;Enable positioned cursors across find cmd for snapshot read concern&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-69159&quot;&gt;&lt;del&gt;SERVER-69159&lt;/del&gt;&lt;/a&gt;. Snapshot can be enabled easily, multi-doc will take more work to reconcile RecoveryUnit stashing.&lt;/p&gt;</comment>
                            <comment id="4777579" author="dianna.hohensee" created="Thu, 25 Aug 2022 19:20:43 +0000"  >&lt;p&gt;&lt;a href=&quot;https://spruce.mongodb.com/version/62e068e9d1fe075191e0612f/tasks?sorts=STATUS%3AASC%3BBASE_STATUS%3ADESC&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Testing&lt;/a&gt;.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                            <outwardlinks description="depends on">
                                        <issuelink>
            <issuekey id="2122457">SERVER-69159</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="1923102">SERVER-61407</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="1899374">SERVER-60741</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>5.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25136"><![CDATA[Storage Execution]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 25 Aug 2022 19:20:43 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        1 year, 20 weeks, 2 days ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[<s><a href='https://jira.mongodb.org/browse/SERVER-69159'>SERVER-69159</a></s>]]></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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-2451</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>alexander.golin@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            1 year, 20 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>backlog-server-execution</customfieldvalue>
            <customfieldvalue>dianna.hohensee@mongodb.com</customfieldvalue>
            <customfieldvalue>ian.boros@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i0gp2f:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i0rkbl:ii</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="6173">Execution Team 2022-08-08</customfieldvalue>
    <customfieldvalue id="6328">Execution Team 2022-08-22</customfieldvalue>
    <customfieldvalue id="6329">Execution Team 2022-09-05</customfieldvalue>
    <customfieldvalue id="6330">Execution Team 2022-09-19</customfieldvalue>

                        </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|i0gb7r:</customfieldvalue>

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