<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:59:37 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-42114] Allow single RS transactions to run on the config database excluding config.transactions</title>
                <link>https://jira.mongodb.org/browse/SERVER-42114</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Currently all transactions are &lt;a href=&quot;https://github.com/mongodb/mongo/blob/master/src/mongo/db/commands.cpp#L446&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;disallowed on the config database&lt;/a&gt;. To allow refineCollectionShardKey to use a single replica set transaction on the config server primary that updates entries in config.collections, config.chunks, and config.tags, this restriction will need to be relaxed to only disallow transactions on config.transactions.&lt;/p&gt;

&lt;p&gt;This restriction will not be relaxed on mongos because currently transaction numbers are not propagated by mongos for writes on the config database because of its custom CSRS write retry logic (which will be removed by &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-28756&quot; title=&quot;Remove TODO SERVER-28756 comment and continue disallowing transactions on the config database through mongos&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-28756&quot;&gt;&lt;del&gt;SERVER-28756&lt;/del&gt;&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Proposed implementation:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Thread a command&apos;s full namespace through &lt;a href=&quot;https://github.com/mongodb/mongo/blob/c6468f7d3ac783b4bcdeb6744fc976c8ecee2969/src/mongo/db/transaction_validation.cpp#L75&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;validateSessionOptions()&lt;/a&gt; to &lt;a href=&quot;https://github.com/mongodb/mongo/blob/c6468f7d3ac783b4bcdeb6744fc976c8ecee2969/src/mongo/db/commands.cpp#L446&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;CommandHelpers::canUseTransactions()&lt;/a&gt; instead of the dbname, replace the check that the database is &quot;config&quot; with a check that the namespace is &quot;config.transactions&quot; if the node&apos;s serverGlobalParams.clusterRole is not none.&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="839199">SERVER-42114</key>
            <summary>Allow single RS transactions to run on the config database excluding config.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="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="blake.oler@mongodb.com">Blake Oler</assignee>
                                    <reporter username="jack.mulrow@mongodb.com">Jack Mulrow</reporter>
                        <labels>
                    </labels>
                <created>Mon, 8 Jul 2019 22:21:15 +0000</created>
                <updated>Sun, 29 Oct 2023 22:19:15 +0000</updated>
                            <resolved>Thu, 1 Aug 2019 20:34:56 +0000</resolved>
                                                    <fixVersion>4.3.1</fixVersion>
                                                        <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="2355047" author="xgen-internal-githook" created="Thu, 1 Aug 2019 20:33:57 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Blake Oler&apos;, &apos;username&apos;: &apos;BlakeIsBlake&apos;, &apos;email&apos;: &apos;blake.oler@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-42114&quot; title=&quot;Allow single RS transactions to run on the config database excluding config.transactions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-42114&quot;&gt;&lt;del&gt;SERVER-42114&lt;/del&gt;&lt;/a&gt; Allow single RS transactions to run on the config database in sharded clusters&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/927883be3ec0af1f1a8ac65176f39696a31b4962&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/927883be3ec0af1f1a8ac65176f39696a31b4962&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2321271" author="siyuan.zhou@10gen.com" created="Thu, 11 Jul 2019 15:58:24 +0000"  >&lt;p&gt;LTGM. Thanks for posting the list!&lt;/p&gt;</comment>
                            <comment id="2321101" author="jack.mulrow" created="Thu, 11 Jul 2019 14:45:10 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=siyuan.zhou&quot; class=&quot;user-hover&quot; rel=&quot;siyuan.zhou&quot;&gt;siyuan.zhou&lt;/a&gt;, like we talked about offline, I ran listCollections on the config database on shards, the config server, and a standalone RS to get a sense for the risk of allowing users to run transactions on config and here are the collections I found (note this may have missed some transient collections):&lt;/p&gt;

&lt;p&gt;On the config server replica set:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;&quot;config.actionlog&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.changelog&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.chunks&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.collections&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.databases&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.lockpings&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.locks&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.migrations&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.mongos&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.settings&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.shards&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.tags&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.transactions&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.version&quot;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;On a replica set shard:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;&quot;config.cache.chunks.config.system.sessions&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.cache.chunks.db.coll&quot;
	&lt;ul&gt;
		&lt;li&gt;Note for every sharded collection a shard owns chunks for there will be a &quot;config.cache.chunks.&amp;lt;namespace&amp;gt;&quot; collection&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;&quot;config.cache.collections&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.cache.databases&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.system.sessions,&lt;/li&gt;
	&lt;li&gt;&quot;config.transactions&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.transaction_coordinators&quot;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;On a standalone replica set:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;&quot;config.system.sessions&quot;&lt;/li&gt;
	&lt;li&gt;&quot;config.transactions&quot;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;As far as I can tell, these are all collections that can already be written to normally outside of a transaction except &lt;tt&gt;config.transactions&lt;/tt&gt; (which can only be written to without a session and on a standalone node), so I don&apos;t think there&apos;s too much risk allowing them to be written to in a transaction.&lt;/p&gt;</comment>
                            <comment id="2319743" author="kaloian.manassiev" created="Wed, 10 Jul 2019 16:28:07 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=jack.mulrow&quot; class=&quot;user-hover&quot; rel=&quot;jack.mulrow&quot;&gt;jack.mulrow&lt;/a&gt;, I have no objections with continuing to disallow transactions and retryable writes against the &lt;tt&gt;config&lt;/tt&gt; database through mongos.&lt;/p&gt;</comment>
                            <comment id="2319731" author="jack.mulrow" created="Wed, 10 Jul 2019 16:19:58 +0000"  >&lt;p&gt;I was planning on allowing all users to run transactions on config collections (other than &lt;em&gt;config.transactions&lt;/em&gt;) since I couldn&apos;t think of a specific reason why not to and it seems like a useful feature. We only need this capacity for internal operations though, so I&apos;m fine restricting it to internal users if you prefer that.&lt;/p&gt;</comment>
                            <comment id="2317983" author="siyuan.zhou@10gen.com" created="Tue, 9 Jul 2019 21:50:28 +0000"  >&lt;p&gt;I cannot think of other collections in &quot;config&quot; database off the top of my head. Replication uses &quot;local&quot; database in most cases.&lt;/p&gt;

&lt;p&gt;Are you going to achieve this with access control? If we only give internal code this permission, I&apos;d feel more confident with the implementation.&lt;/p&gt;</comment>
                            <comment id="2316081" author="jack.mulrow" created="Mon, 8 Jul 2019 22:28:10 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=siyuan.zhou&quot; class=&quot;user-hover&quot; rel=&quot;siyuan.zhou&quot;&gt;siyuan.zhou&lt;/a&gt;, do you know if there are any collections in &lt;tt&gt;config&lt;/tt&gt; that we should disallow transactions on other than &lt;tt&gt;config.transactions&lt;/tt&gt;?&lt;/p&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;, are you OK with my proposal to keep disallowing transaction commands on &lt;tt&gt;config&lt;/tt&gt;&#160;on mongos? We can also fix the mongos write path to not drop transaction numbers so we can lift the restriction there too, which might be worth doing for feature parity between sharded and non-sharded transactions, but that isn&apos;t required for the refine the shard key project.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10020">
                    <name>Gantt Dependency</name>
                                            <outwardlinks description="has to be done before">
                                        <issuelink>
            <issuekey id="850325">SERVER-42143</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="373544">SERVER-28756</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>7.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_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, 9 Jul 2019 21:50:28 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        4 years, 27 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_17052" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Downstream Changes Summary</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>You are now allowed to run transactions against the config database except config.transactions, but only in this set of conditions:&lt;br/&gt;
&lt;br/&gt;
1. You are running a sharded cluster, and&lt;br/&gt;
2. You are initiating a single replica set transaction, and&lt;br/&gt;
3. (until complete of &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-28756&quot; title=&quot;Remove TODO SERVER-28756 comment and continue disallowing transactions on the config database through mongos&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-28756&quot;&gt;&lt;strike&gt;SERVER-28756&lt;/strike&gt;&lt;/a&gt;) You initiate the transaction from a shard or config server, _not_ mongos.</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_17050" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Downstream Team Attention</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="16942"><![CDATA[Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-1327</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>
                            4 years, 27 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>blake.oler@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>jack.mulrow@mongodb.com</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|hvbbsv:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hv0fov:</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="3062">Sharding 2019-07-29</customfieldvalue>
    <customfieldvalue id="3164">Sharding 2019-08-12</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_17051" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Teams Impacted</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="16943"><![CDATA[Cloud]]></customfieldvalue>
    <customfieldvalue key="16945"><![CDATA[Drivers]]></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|hvay27:</customfieldvalue>

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