<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:51:09 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-39139] Remove testing support for secondary transactions</title>
                <link>https://jira.mongodb.org/browse/SERVER-39139</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;We currently support secondary transactions when test commands are enabled for background &quot;dbhash&quot;. This is not going to work due to &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-39096&quot; title=&quot;Prepared transactions and DDL operations can deadlock on a secondary, if a reader blocks on a prepared document&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-39096&quot;&gt;&lt;del&gt;SERVER-39096&lt;/del&gt;&lt;/a&gt; and is a constant tax to try to keep working in the face of prepare without a wholistic design.&lt;/p&gt;</description>
                <environment></environment>
        <key id="676205">SERVER-39139</key>
            <summary>Remove testing support for secondary 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="vesselina.ratcheva@mongodb.com">Vesselina Ratcheva</assignee>
                                    <reporter username="judah.schvimer@mongodb.com">Judah Schvimer</reporter>
                        <labels>
                            <label>prepare_durability</label>
                    </labels>
                <created>Tue, 22 Jan 2019 21:57:26 +0000</created>
                <updated>Sun, 29 Oct 2023 22:24:53 +0000</updated>
                            <resolved>Wed, 6 Mar 2019 23:28:20 +0000</resolved>
                                                    <fixVersion>4.1.9</fixVersion>
                                    <component>Replication</component>
                    <component>Testing Infrastructure</component>
                                        <votes>0</votes>
                                    <watches>6</watches>
                                                                                                                <comments>
                            <comment id="2173580" author="xgen-internal-githook" created="Wed, 6 Mar 2019 23:25:58 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Vesselina Ratcheva&apos;, &apos;username&apos;: &apos;vessy-mongodb&apos;, &apos;email&apos;: &apos;vesselina.ratcheva@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-39139&quot; title=&quot;Remove testing support for secondary transactions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-39139&quot;&gt;&lt;del&gt;SERVER-39139&lt;/del&gt;&lt;/a&gt; Disallow starting transactions on secondaries&lt;/p&gt;

&lt;p&gt;This reverts commit a74b2f39025fee2c59aa5437deea6e06f05e18ca.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/d989f45b6f9a802e3d4fe5c4cb34b5ddc28ed4eb&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/d989f45b6f9a802e3d4fe5c4cb34b5ddc28ed4eb&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2172894" author="xgen-internal-githook" created="Wed, 6 Mar 2019 17:20:02 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Vesselina Ratcheva&apos;, &apos;email&apos;: &apos;vesselina.ratcheva@10gen.com&apos;, &apos;username&apos;: &apos;vessy-mongodb&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-39139&quot; title=&quot;Remove testing support for secondary transactions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-39139&quot;&gt;&lt;del&gt;SERVER-39139&lt;/del&gt;&lt;/a&gt; Make TransactionParticipant acquire RSTL interruptibly&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/e50a4cb38a22e95c33bc1e803bb05be11e8643cb&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/e50a4cb38a22e95c33bc1e803bb05be11e8643cb&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2172893" author="xgen-internal-githook" created="Wed, 6 Mar 2019 17:19:58 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Vesselina Ratcheva&apos;, &apos;email&apos;: &apos;vesselina.ratcheva@10gen.com&apos;, &apos;username&apos;: &apos;vessy-mongodb&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-39139&quot; title=&quot;Remove testing support for secondary transactions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-39139&quot;&gt;&lt;del&gt;SERVER-39139&lt;/del&gt;&lt;/a&gt; Make lock mode for ReplicationStateTransitionLockGuard configurable&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/1fe923eec6c301f554ec5a5cfb9a40ebf4318e13&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/1fe923eec6c301f554ec5a5cfb9a40ebf4318e13&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2165574" author="xgen-internal-githook" created="Thu, 28 Feb 2019 00:53:53 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Vesselina Ratcheva&apos;, &apos;username&apos;: &apos;vessy-mongodb&apos;, &apos;email&apos;: &apos;vesselina.ratcheva@10gen.com&apos;}
&lt;p&gt;Message: Revert &quot;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-39139&quot; title=&quot;Remove testing support for secondary transactions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-39139&quot;&gt;&lt;del&gt;SERVER-39139&lt;/del&gt;&lt;/a&gt; Disallow starting transactions on secondaries&quot;&lt;/p&gt;

&lt;p&gt;This reverts commit 58fad7d7efa275beb4a6a83f90d3dd222bbb534b.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/a74b2f39025fee2c59aa5437deea6e06f05e18ca&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/a74b2f39025fee2c59aa5437deea6e06f05e18ca&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2163473" author="xgen-internal-githook" created="Tue, 26 Feb 2019 20:12:38 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Vesselina Ratcheva&apos;, &apos;username&apos;: &apos;vessy-mongodb&apos;, &apos;email&apos;: &apos;vesselina.ratcheva@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-39139&quot; title=&quot;Remove testing support for secondary transactions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-39139&quot;&gt;&lt;del&gt;SERVER-39139&lt;/del&gt;&lt;/a&gt; Disallow starting transactions on secondaries&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/58fad7d7efa275beb4a6a83f90d3dd222bbb534b&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/58fad7d7efa275beb4a6a83f90d3dd222bbb534b&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2145148" author="xgen-internal-githook" created="Mon, 11 Feb 2019 21:27:25 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Vesselina Ratcheva&apos;, &apos;email&apos;: &apos;vesselina.ratcheva@10gen.com&apos;, &apos;username&apos;: &apos;vessy-mongodb&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-39139&quot; title=&quot;Remove testing support for secondary transactions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-39139&quot;&gt;&lt;del&gt;SERVER-39139&lt;/del&gt;&lt;/a&gt; Make canAcceptWritesFor, canAcceptWritesForDatabase and canServeReadsFor check RSTL&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/302a4f91a54a77221f7408b95fcbb988a9366d03&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/302a4f91a54a77221f7408b95fcbb988a9366d03&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2140238" author="xgen-internal-githook" created="Wed, 6 Feb 2019 19:48:17 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Vesselina Ratcheva&apos;, &apos;email&apos;: &apos;vesselina.ratcheva@10gen.com&apos;, &apos;username&apos;: &apos;vessy-mongodb&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-39139&quot; title=&quot;Remove testing support for secondary transactions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-39139&quot;&gt;&lt;del&gt;SERVER-39139&lt;/del&gt;&lt;/a&gt; Disallow commitTransaction and abortTransaction commands on secondaries&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/133fa7293bc729ff95cacd9384ad49c928e8e0a8&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/133fa7293bc729ff95cacd9384ad49c928e8e0a8&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2137279" author="xgen-internal-githook" created="Mon, 4 Feb 2019 20:43:57 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Vesselina Ratcheva&apos;, &apos;email&apos;: &apos;vesselina.ratcheva@10gen.com&apos;, &apos;username&apos;: &apos;vessy-mongodb&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-39139&quot; title=&quot;Remove testing support for secondary transactions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-39139&quot;&gt;&lt;del&gt;SERVER-39139&lt;/del&gt;&lt;/a&gt; Remove usages of the CheckReplDBHashInBackground hook&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/939ecfe7a93365145bb876bcab6584501e407fdb&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/939ecfe7a93365145bb876bcab6584501e407fdb&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2134184" author="esha.maharishi@10gen.com" created="Thu, 31 Jan 2019 22:55:18 +0000"  >&lt;p&gt;Just to be clear, I would like to re-state that implementing the ban this way is just to future-proof the code:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;I believe this wouldn&apos;t happen today, because secondary oplog application &lt;a href=&quot;https://github.com/mongodb/mongo/blob/c2fb213da54e20a87a96816449e070623bdafe61/src/mongo/db/repl/apply_ops.cpp#L299-L319&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;checks out the session and puts the transaction into prepare&lt;/a&gt; before checking the session back in. So, by the time the user request is able to call beginOrContinue on the transaction, the transaction should no longer be abortable.&lt;/p&gt;&lt;/blockquote&gt;</comment>
                            <comment id="2134172" author="esha.maharishi@10gen.com" created="Thu, 31 Jan 2019 22:48:44 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=judah.schvimer&quot; class=&quot;user-hover&quot; rel=&quot;judah.schvimer&quot;&gt;judah.schvimer&lt;/a&gt;, ah, I did not know about that check for &lt;tt&gt;canAcceptWritesForDatabase&lt;/tt&gt; in &lt;tt&gt;abortActiveTransaction&lt;/tt&gt;. As far as I can tell, that should prevent the race for a direct abortTransaction command.&lt;/p&gt;

&lt;p&gt;Perhaps Vessy can implement the ban under this ticket by doing a similar check in &lt;tt&gt;beginOrContinue&lt;/tt&gt;, and I can write tests for both the higher transaction number and direct abortTransaction command under &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-38876&quot; title=&quot;Ensure secondary user operations cannot abort transactions being applied from the oplog&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-38876&quot;&gt;&lt;del&gt;SERVER-38876&lt;/del&gt;&lt;/a&gt;?&lt;/p&gt;</comment>
                            <comment id="2134165" author="judah.schvimer" created="Thu, 31 Jan 2019 22:44:55 +0000"  >&lt;p&gt;I think &lt;tt&gt;beginOrContinue&lt;/tt&gt; acquiring the RSTL in mode IX before aborting the transaction makes sense. The lock acquisition will be an interrupt point already. With the RSTL held we need to check &lt;tt&gt;canAcceptWritesForDatabase(opCtx, &quot;admin&quot;)&lt;/tt&gt; to see if we&apos;re still a primary.&lt;/p&gt;

&lt;p&gt;For &lt;tt&gt;abortTransaction&lt;/tt&gt;, we already check if we&apos;re primary &lt;a href=&quot;https://github.com/mongodb/mongo/blob/57b22a11d206272a78124ee03c5a6cf26b3e1105/src/mongo/db/transaction_participant.cpp#L1221-L1230&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt;. &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=esha.maharishi&quot; class=&quot;user-hover&quot; rel=&quot;esha.maharishi&quot;&gt;esha.maharishi&lt;/a&gt;, does that not account for the race you&apos;re concerned about for the &lt;tt&gt;abortTransaction&lt;/tt&gt; command?&lt;/p&gt;</comment>
                            <comment id="2133983" author="siyuan.zhou@10gen.com" created="Thu, 31 Jan 2019 20:51:57 +0000"  >&lt;p&gt;Talked with &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=esha.maharishi&quot; class=&quot;user-hover&quot; rel=&quot;esha.maharishi&quot;&gt;esha.maharishi&lt;/a&gt; offline. We agree that an abortTransaction on prepared transaction on secondary is also possible. Aborting an unprepared or prepared transaction by either a higher txnNumber or abortTransaction command are faced with the same race mentioned by Esha. One possible solution is to have &lt;tt&gt;beginOrContinue&lt;/tt&gt; hold in RSTL IX lock and check for interrupt.&lt;/p&gt;

&lt;p&gt;Esha also mentioned that it&apos;s possible for a participant &lt;b&gt;primary&lt;/b&gt; to get an abortTransaction from the user even though the coordinator is about to commit the transaction. This will corrupt the data, but that&apos;s intentional since we want to give users a way to fix the transactions when the coordinator is down.&lt;/p&gt;</comment>
                            <comment id="2132887" author="siyuan.zhou@10gen.com" created="Thu, 31 Jan 2019 01:18:08 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=esha.maharishi&quot; class=&quot;user-hover&quot; rel=&quot;esha.maharishi&quot;&gt;esha.maharishi&lt;/a&gt;, does your argument apply to prepared transactions on secondary? As you said, the window where a transaction is in-progress is very short and protected by the session checkout, but aborting a prepared transaction by a user request on secondary also seems possible.&lt;/p&gt;</comment>
                            <comment id="2132814" author="esha.maharishi@10gen.com" created="Thu, 31 Jan 2019 00:00:43 +0000"  >&lt;p&gt;One thing to consider for #1 is that commandCanRunHere&#160;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/c2fb213da54e20a87a96816449e070623bdafe61/src/mongo/db/service_entry_point_common.cpp#L640&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;is checked here&lt;/a&gt; in ServiceEntryPointCommon::execCommandDatabase, but the node may transition to secondary in between that and &lt;a href=&quot;https://github.com/mongodb/mongo/blob/c2fb213da54e20a87a96816449e070623bdafe61/src/mongo/db/service_entry_point_common.cpp#L364&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;calling beginOrContinue on the TransactionParticipant&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;From my understanding of &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-38876&quot; title=&quot;Ensure secondary user operations cannot abort transactions being applied from the oplog&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-38876&quot;&gt;&lt;del&gt;SERVER-38876&lt;/del&gt;&lt;/a&gt;, this would still leave open the possibility for a user request with a&#160;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/c2fb213da54e20a87a96816449e070623bdafe61/src/mongo/db/transaction_participant.cpp#L432-L474&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;higher transaction number to abort a transaction that is in progress&lt;/a&gt; in secondary oplog application (because &lt;a href=&quot;https://github.com/mongodb/mongo/blob/c2fb213da54e20a87a96816449e070623bdafe61/src/mongo/db/transaction_participant.cpp#L349&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;_beginOrContinueRetryableWrite&lt;/a&gt; and&#160;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/c2fb213da54e20a87a96816449e070623bdafe61/src/mongo/db/transaction_participant.cpp#L389&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;_beginMultiDocumentTransaction&lt;/a&gt; call _setNewTxnNumber). This is based on the assumption that &lt;a href=&quot;https://github.com/mongodb/mongo/blob/c2fb213da54e20a87a96816449e070623bdafe61/src/mongo/db/transaction_participant.cpp#L1876&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;aborting the older transaction would not fail even though the opCtx had been interrupted due to stepdown&lt;/a&gt;. The user request would, of course, fail to later do any work that required acquiring locks.&lt;/p&gt;

&lt;p&gt;I believe this wouldn&apos;t happen today, because secondary oplog application &lt;a href=&quot;https://github.com/mongodb/mongo/blob/c2fb213da54e20a87a96816449e070623bdafe61/src/mongo/db/repl/apply_ops.cpp#L299-L319&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;checks out the session and puts the transaction into prepare&lt;/a&gt; before checking the session back in. So, by the time the user request is able to call beginOrContinue on the transaction, the transaction should no longer be abortable.&lt;/p&gt;

&lt;p&gt;However, to future-proof the code, another option for implementing the ban could be to hold the global IX lock in TransactionParticipant::beginOrContinue across checking whether the node is primary and calling _setNewTxnNumber. (If the node is not primary, beginOrContinue should uassert.)&lt;/p&gt;

&lt;p&gt;Since implementing the ban this way would address both issues, it may be worth doing just what I suggested instead of doing both.&lt;/p&gt;</comment>
                            <comment id="2132794" author="vesselina.ratcheva" created="Wed, 30 Jan 2019 23:43:15 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=tess.avitabile&quot; class=&quot;user-hover&quot; rel=&quot;tess.avitabile&quot;&gt;tess.avitabile&lt;/a&gt; that&apos;s a good point. Thanks!&lt;/p&gt;

&lt;p&gt;&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; that sounds very reasonable to me. I should be able to remove the usages in a separate commit, which I hope would make it easier to put them back in in the future.&lt;/p&gt;</comment>
                            <comment id="2132781" author="max.hirschhorn@10gen.com" created="Wed, 30 Jan 2019 23:29:14 +0000"  >&lt;blockquote&gt;
&lt;p&gt;2) Disable background dbhash testing altogether, but without really touching the code for it so as to not collide with the work for &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-39169&quot; title=&quot;Add testing-only support for doing snapshot reads outside of a transaction&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-39169&quot;&gt;&lt;del&gt;SERVER-39169&lt;/del&gt;&lt;/a&gt;. I&#8217;m divided between removing the usages from the yml files (which I find clean), or having the hook just return early as a no-op (which could better highlight the idea that it is not currently being used). &lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I&apos;d vote for removing the &lt;tt&gt;CheckReplDBHashInBackground&lt;/tt&gt; hook from the YAML suite files for the time being. The background thread continuously spawns a mongo shell process to run &lt;tt&gt;run_check_repl_dbhash_background.js&lt;/tt&gt;, i.e. it spawns a new one as soon as the earlier one exits. Putting an early return in will cause that happen more frequently than it already does, which feels wasteful and likely chattier for our logs.&lt;/p&gt;</comment>
                            <comment id="2132767" author="tess.avitabile" created="Wed, 30 Jan 2019 23:17:07 +0000"  >&lt;p&gt;Looks great! I think we may not need to do (3), since transactions against secondaries will fail after (1).&lt;/p&gt;</comment>
                            <comment id="2132763" author="vesselina.ratcheva" created="Wed, 30 Jan 2019 23:14:13 +0000"  >&lt;p&gt;I have so far identified several work items:&lt;/p&gt;

&lt;p&gt; 1) Disallow secondary transactions on the server side even when test commands are enabled. I intend to leverage the code &lt;a href=&quot;https://github.com/mongodb/mongo/blob/c2fb213da54e20a87a96816449e070623bdafe61/src/mongo/db/command_can_run_here.cpp#L51&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt; and remove the exception for test commands. I will also update the &lt;tt&gt;AllowedOnSecondary&lt;/tt&gt; rules for commit and abort &lt;a href=&quot;https://github.com/mongodb/mongo/commit/3bb0b814e36991e15fc7ac07776737a47b5d8c5e#diff-851113b80ab7f218a62ddfcbc3e61cde&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt;. &lt;br/&gt;
 2) Disable background dbhash testing altogether, but without really touching the code for it so as to not collide with the work for &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-39169&quot; title=&quot;Add testing-only support for doing snapshot reads outside of a transaction&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-39169&quot;&gt;&lt;del&gt;SERVER-39169&lt;/del&gt;&lt;/a&gt;. I&#8217;m divided between removing the usages from the yml files (which I find clean), or having the hook just return early as a no-op (which could better highlight the idea that it is not currently being used). &lt;br/&gt;
 3) Ban running transactions against secondaries in the fuzzer. I&#8217;m happy to file a separate TIG ticket for this, as per Max&#8217;s request in the comments for &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-38660&quot; title=&quot;fuzzer can cause tests to timeout when executing secondary reads with transactions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-38660&quot;&gt;&lt;del&gt;SERVER-38660&lt;/del&gt;&lt;/a&gt;.&lt;br/&gt;
 4) Also take care of any incidental tests that perform transactions on secondaries. I hope that the changes on #1 will help identify the suspects, but I can spend a bit of time surveying for those too.&lt;/p&gt;

&lt;p&gt; Feel free to chime in if you feel there&apos;s anything missing here.&lt;/p&gt;</comment>
                            <comment id="2124346" author="judah.schvimer" created="Wed, 23 Jan 2019 16:56:31 +0000"  >&lt;p&gt;This ticket should first disable background dbhash testing. Background dbhash code shouldn&apos;t be completely removed, since it will be replaced with a separate snapshot read mechanism, and we&apos;ll leave it to the STM team to remove the code they want removed. &lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="667152">SERVER-38876</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="654930">SERVER-38660</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="654930">SERVER-38660</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="683624">SERVER-39372</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="677165">SERVER-39169</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="629761">SERVER-37944</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="681289">SERVER-39321</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="674940">SERVER-39096</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>19.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, 29 Jan 2019 17:29:49 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        4 years, 49 weeks 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-1032</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, 49 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>18.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>esha.maharishi@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>judah.schvimer@mongodb.com</customfieldvalue>
            <customfieldvalue>max.hirschhorn@mongodb.com</customfieldvalue>
            <customfieldvalue>siyuan.zhou@mongodb.com</customfieldvalue>
            <customfieldvalue>tess.avitabile@mongodb.com</customfieldvalue>
            <customfieldvalue>vesselina.ratcheva@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hujxsf:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|htqoev:</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="2783">Repl 2019-02-11</customfieldvalue>
    <customfieldvalue id="2784">Repl 2019-02-25</customfieldvalue>
    <customfieldvalue id="2822">Repl 2019-03-11</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|hujk1r:</customfieldvalue>

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