<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:45:44 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-37349] Subsequent statements in a transaction should target shards using the global read timestamp</title>
                <link>https://jira.mongodb.org/browse/SERVER-37349</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Currently, the multi-versioned routing table is only used when selecting a global read timestamp, to verify that the set of shards used to compute the read timestamp matches the set that would be targeted at that timestamp. Now that mongos supports multi statement transactions, subsequent statements should route their requests using the multi-versioned routing table corresponding to the already selected read timestamp.&lt;/p&gt;</description>
                <environment></environment>
        <key id="610866">SERVER-37349</key>
            <summary>Subsequent statements in a transaction should target shards using the global read timestamp</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="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="jack.mulrow@mongodb.com">Jack Mulrow</assignee>
                                    <reporter username="jack.mulrow@mongodb.com">Jack Mulrow</reporter>
                        <labels>
                            <label>ShardedTxn:GlobalSnapshot</label>
                    </labels>
                <created>Thu, 27 Sep 2018 15:49:24 +0000</created>
                <updated>Sun, 29 Oct 2023 22:27:52 +0000</updated>
                            <resolved>Fri, 19 Oct 2018 21:58:58 +0000</resolved>
                                                    <fixVersion>4.1.5</fixVersion>
                                    <component>Sharding</component>
                                        <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="2036616" author="xgen-internal-githook" created="Fri, 19 Oct 2018 21:57:18 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Jack Mulrow&apos;, &apos;email&apos;: &apos;jack.mulrow@mongodb.com&apos;, &apos;username&apos;: &apos;jsmulrow&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-37349&quot; title=&quot;Subsequent statements in a transaction should target shards using the global read timestamp&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-37349&quot;&gt;&lt;del&gt;SERVER-37349&lt;/del&gt;&lt;/a&gt; Later statements in a transaction should target shards using the global read timestamp&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/9f363b489585124afa1e26412e19f6728763e1ad&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/9f363b489585124afa1e26412e19f6728763e1ad&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2032209" author="xgen-internal-githook" created="Sat, 13 Oct 2018 16:58:16 +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-37349&quot; title=&quot;Subsequent statements in a transaction should target shards using the global read timestamp&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-37349&quot;&gt;&lt;del&gt;SERVER-37349&lt;/del&gt;&lt;/a&gt; Ensure that commands with transactions do not use the VersionManager&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/aa89fef4ac12249077ff8701b465d0b9f733fd2c&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/aa89fef4ac12249077ff8701b465d0b9f733fd2c&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2023240" author="kaloian.manassiev" created="Thu, 4 Oct 2018 08:00:32 +0000"  >&lt;p&gt;Jack and I spoke and we decided that we will make mongos perform the writeConcern parsing and checking as well, similarly to what &lt;a href=&quot;https://github.com/mongodb/mongo/blob/5a5a7f2f09/src/mongo/db/service_entry_point_common.cpp#L491-L498&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;mongod does&lt;/a&gt;. This logic will be pulled into some common function.&lt;/p&gt;

&lt;p&gt;For the CatalogCache interaction with the timestamp selection, we decided that we will pull the routing logic into a separate function, which combines the state of the TransactionRouter and the calls to &lt;tt&gt;CatalogCache::getCollectionRoutingInfo&lt;/tt&gt; to pass the appropriate atClusterTime.&lt;/p&gt;</comment>
                            <comment id="2020417" author="kaloian.manassiev" created="Tue, 2 Oct 2018 13:23:28 +0000"  >&lt;p&gt;The &lt;tt&gt;CatalogCache&lt;/tt&gt; is supposed to be the lowest level of code which deals with routing information and I really don&apos;t want to make it aware of whether the caller is running in a transaction or not.&lt;/p&gt;

&lt;p&gt;Mutating the readConcernArgs decoration on mongos doesn&apos;t seem like that bad of an idea, however - do we even need to mutate it? It gets instantiated once per OperationContext and even as part of the same transaction, requests can come on different OperationContexts, so each request already must be instantiating a new ReadConcernArgs object anyways. We should be able to hook into that place and construct the proper ReadConcernArgs.&lt;/p&gt;

&lt;p&gt;In this case we will need to make the CatalogCache aware of the ReadConcernArgs, but that seems like a more acceptable dependency.&lt;/p&gt;</comment>
                            <comment id="2019944" author="jack.mulrow" created="Mon, 1 Oct 2018 22:52:54 +0000"  >&lt;p&gt;Proposed Implementation:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Get the TransactionRouter decoration from the opCtx in &lt;tt&gt;CatalogCache::_getCollectionRoutingInfo&lt;/tt&gt; and if it exists and has selected an atClusterTime, pass it to &lt;tt&gt;_getCollectionRoutingInfoAt&lt;/tt&gt;&#160;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/r4.1.3/src/mongo/s/catalog_cache.cpp#L186&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt;, otherwise continue to pass &lt;tt&gt;boost::none&lt;/tt&gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=kaloian.manassiev&quot; class=&quot;user-hover&quot; rel=&quot;kaloian.manassiev&quot;&gt;kaloian.manassiev&lt;/a&gt;, what do you think of this approach? It&apos;s similar to how we already implicitly pass the atClusterTime from the user&apos;s readConcernArgs decoration in &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r4.1.3/src/mongo/db/s/collection_sharding_state.cpp#L129&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;CollectionShardingState::getMetadata&lt;/tt&gt;&lt;/a&gt;. I thought about also using the readConcernArgs decoration on mongos, but that would require making the atClusterTime selection process mutate that decoration, which it doesn&apos;t currently do.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="601154">SERVER-37045</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="610868">SERVER-37350</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>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>Tue, 2 Oct 2018 13:23:28 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        5 years, 16 weeks, 5 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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-834</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>
                            5 years, 16 weeks, 5 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>jack.mulrow@mongodb.com</customfieldvalue>
            <customfieldvalue>kaloian.manassiev@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hu90sf:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|htzfcn:</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="2538">Sharding 2018-10-08</customfieldvalue>
    <customfieldvalue id="2539">Sharding 2018-10-22</customfieldvalue>
    <customfieldvalue id="2540">Sharding 2018-11-05</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|hu8n1r:</customfieldvalue>

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