<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:27:38 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-31613] Commands that don&apos;t currently take any LockManager locks must not accept afterClusterTime</title>
                <link>https://jira.mongodb.org/browse/SERVER-31613</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Commands such as &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.6.0-rc0/src/mongo/db/commands/run_aggregate.cpp#L378-L388&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;currentOp&lt;/tt&gt;&lt;/a&gt; and &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.6.0-rc0/src/mongo/db/commands/generic.cpp#L127-L128&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;ping&lt;/tt&gt;&lt;/a&gt; are explicitly intended not to take any &lt;tt&gt;LockManager&lt;/tt&gt; locks; however, they may end up acquiring &lt;tt&gt;LockManager&lt;/tt&gt; locks as part of &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.6.0-rc0/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp#L416-L420&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;acquiring a &lt;tt&gt;MODE_IS&lt;/tt&gt; lock on the oplog&lt;/a&gt; when &lt;tt&gt;afterClusterTime&lt;/tt&gt; is specified in the readConcern object. I think it would be worth considering have the server reject these commands when an &lt;tt&gt;afterClusterTime&lt;/tt&gt; is specified to preserve this intent.&lt;/p&gt;</description>
                <environment></environment>
        <key id="447139">SERVER-31613</key>
            <summary>Commands that don&apos;t currently take any LockManager locks must not accept afterClusterTime</summary>
                <type id="6" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14720&amp;avatarType=issuetype">Question</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="misha.tyulenev@mongodb.com">Misha Tyulenev</assignee>
                                    <reporter username="max.hirschhorn@mongodb.com">Max Hirschhorn</reporter>
                        <labels>
                    </labels>
                <created>Wed, 18 Oct 2017 00:56:11 +0000</created>
                <updated>Mon, 30 Oct 2023 23:12:42 +0000</updated>
                            <resolved>Fri, 27 Oct 2017 03:58:18 +0000</resolved>
                                                    <fixVersion>3.6.0-rc2</fixVersion>
                                    <component>Sharding</component>
                                        <votes>0</votes>
                                    <watches>9</watches>
                                                                                                                <comments>
                            <comment id="1710791" author="xgen-internal-githook" created="Fri, 27 Oct 2017 03:55:30 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;email&apos;: &apos;misha@mongodb.com&apos;, &apos;name&apos;: &apos;Misha Tyulenev&apos;, &apos;username&apos;: &apos;mikety&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-31613&quot; title=&quot;Commands that don&amp;#39;t currently take any LockManager locks must not accept afterClusterTime&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-31613&quot;&gt;&lt;del&gt;SERVER-31613&lt;/del&gt;&lt;/a&gt; disallow afterClusterTime on some commands&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/54f044558c0845adcc6b51c2351e8382a3e9bbd7&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/54f044558c0845adcc6b51c2351e8382a3e9bbd7&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1703482" author="schwerin" created="Thu, 19 Oct 2017 02:35:55 +0000"  >&lt;p&gt;Ok. Thanks for the explanation, &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=max.hirschhorn&quot; class=&quot;user-hover&quot; rel=&quot;max.hirschhorn&quot;&gt;max.hirschhorn&lt;/a&gt;. I&apos;m convinced.&lt;/p&gt;</comment>
                            <comment id="1702696" author="misha.tyulenev" created="Wed, 18 Oct 2017 15:45:41 +0000"  >&lt;p&gt;I think blacklisting the commands that can not have readConcern on the server is the right way to address the issue.&lt;/p&gt;</comment>
                            <comment id="1702609" author="max.hirschhorn@10gen.com" created="Wed, 18 Oct 2017 15:00:25 +0000"  >&lt;blockquote&gt;
&lt;p&gt;I&apos;m amenable to forbidding readConcern on a handful of operations, but why would you even send one? If the argument is &quot;drivers might just send one on every command&quot;, then rejecting readConcern is just going to push the problem to the drivers.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Misha&apos;s current definition of commands that should accept an &lt;tt&gt;afterClusterTime&lt;/tt&gt; field are all commands except for getMore, so I think the answer is &quot;yes, drivers will send one on (nearly) every command&quot;. In my changes for &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-31296&quot; title=&quot;Review mongo shell implementation of sessions, causal consistency, and retryable writes&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-31296&quot;&gt;&lt;del&gt;SERVER-31296&lt;/del&gt;&lt;/a&gt; where I have a patch to change the mongo shell to inject &lt;tt&gt;afterClusterTime&lt;/tt&gt; for all commands except for getMore, tests such as &lt;tt&gt;jstests/core/evald.js&lt;/tt&gt; hang because they expect to be able to run the &quot;currentOp&quot; command to find an &quot;eval&quot; command holding the global X lock in order to test killing it. While we could work around this issue specificially within those tests, the fact that the server allowed this to happened suggested to me that the current definition of commands that should accept an &lt;tt&gt;afterClusterTime&lt;/tt&gt; field is not fully thought out.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you ignore the readConcern silently on some commands, I&apos;m concerned that we&apos;ll screw up and start ignoring it on a command we shouldn&apos;t, and only find out when we&apos;ve returned wrong results to a savvy client application.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;No one is asking that the &lt;tt&gt;readConcern&lt;/tt&gt; object be ignored. If Driver&apos;s are going to need to maintain a whitelist or blacklist of commands, then the onus is already on them. I&apos;d rather the server reject the command so that (1) it is unambiguous the expectations of whether a command has a &lt;em&gt;happens after&lt;/em&gt; relationship or may be &lt;em&gt;concurrent&lt;/em&gt;, and (2) drivers will know if they messed up because they&apos;ll get back an error from the server.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If the drivers are smart enough not to send a readConcern on commands that don&apos;t need to be kept causally consistent with previous writes, then what&apos;s the issue?&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I&apos;m not smart enough to know which commands not to send a &lt;tt&gt;readConcern&lt;/tt&gt; and given the lack of details in &lt;a href=&quot;https://github.com/mongodb/specifications/blob/f4a27e777b001d35bcbed39cc57edb5383339998/source/read-write-concern/read-write-concern.rst#read-commands&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;the Driver&apos;s specification for read and write concern&lt;/a&gt;, I wouldn&apos;t expect any drivers to be smart enough either.&lt;/p&gt;</comment>
                            <comment id="1702586" author="schwerin" created="Wed, 18 Oct 2017 14:43:27 +0000"  >&lt;p&gt;I&apos;m amenable to forbidding readConcern on a handful of operations, but why would you even send one? If the argument is &quot;drivers might just send one on every command&quot;, then rejecting readConcern is just going to push the problem to the drivers. If you ignore the readConcern silently on some commands, I&apos;m concerned that we&apos;ll screw up and start ignoring it on a command we shouldn&apos;t, and only find out when we&apos;ve returned wrong results to a savvy client application. If the drivers are smart enough not to send a readConcern on commands that don&apos;t need to be kept causally consistent with previous writes, then what&apos;s the issue?&lt;/p&gt;</comment>
                            <comment id="1702398" author="kaloian.manassiev" created="Wed, 18 Oct 2017 12:04:53 +0000"  >&lt;p&gt;Yes, this would be a major support disruption. This would also make it really difficult to investigate deadlocks.&lt;/p&gt;

&lt;p&gt;We should also add &lt;tt&gt;serverStatus&lt;/tt&gt; to this list.&lt;/p&gt;

&lt;p&gt;cc &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=misha.tyulenev&quot; class=&quot;user-hover&quot; rel=&quot;misha.tyulenev&quot;&gt;misha.tyulenev&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1702151" author="milkie" created="Wed, 18 Oct 2017 01:02:21 +0000"  >&lt;p&gt;Wouldn&apos;t it be really disruptive for the currentOp command to acquire a MODE_IS lock?  If you had a server where a MODE_X Global lock was enqueued but not yet granted, which could happen during stepdown, you wouldn&apos;t be able to run currentOp, it would just hang.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="469063">CDRIVER-2418</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="451774">SERVER-31743</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>1.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, 18 Oct 2017 01:02:21 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        6 years, 15 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_14262" key="com.atlassian.jira.plugin.system.customfieldtypes:datepicker">
                        <customfieldname>End date</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Fri, 20 Oct 2017 00:00:00 +0000</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>
                            6 years, 15 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>schwerin@mongodb.com</customfieldvalue>
            <customfieldvalue>milkie@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>kaloian.manassiev@mongodb.com</customfieldvalue>
            <customfieldvalue>max.hirschhorn@mongodb.com</customfieldvalue>
            <customfieldvalue>misha.tyulenev@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hti3gf:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|ht9y3j:</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="1956">Sharding 2017-11-13</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_14261" key="com.atlassian.jira.plugin.system.customfieldtypes:datepicker">
                        <customfieldname>Start date</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 18 Oct 2017 00:00:00 +0000</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|hthpk7:</customfieldvalue>

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