<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:57:24 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-41320] Oplog getmores can return 0 entries</title>
                <link>https://jira.mongodb.org/browse/SERVER-41320</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Oplog getmores can return with 0 entries if there is nothing new in the oplog, rather than waiting for more entries to appear.&lt;/p&gt;

&lt;p&gt;Under some circumstances this can increase the latency of w:majority or w:2 operations, because the operation must wait for the round-trip of the getmore that returned 0 as well as the round trip for its oplog entry before getting acknowledgement that the operation has been committed on the secondaries. This impacts for example single-threaded clients that are issuing repeated writes in a loop as fast as possible. &lt;/p&gt;</description>
                <environment></environment>
        <key id="777694">SERVER-41320</key>
            <summary>Oplog getmores can return 0 entries</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</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="backlog-server-repl">Backlog - Replication Team</assignee>
                                    <reporter username="bruce.lucas@mongodb.com">Bruce Lucas</reporter>
                        <labels>
                    </labels>
                <created>Sat, 25 May 2019 12:19:31 +0000</created>
                <updated>Sun, 29 Oct 2023 22:20:42 +0000</updated>
                            <resolved>Mon, 21 Sep 2020 17:22:15 +0000</resolved>
                                                    <fixVersion>4.4.0</fixVersion>
                                                        <votes>1</votes>
                                    <watches>24</watches>
                                                                                                                <comments>
                            <comment id="3403594" author="bruce.lucas@10gen.com" created="Mon, 21 Sep 2020 17:21:14 +0000"  >&lt;p&gt;A quick test on a 3-node replica set doing 5 inserts per second shows the primary on 4.2.8 receiving about 20 getmores per second, whereas on 4.4.0 it is only receiving about 10 per second, so I think this ticket can be closed.&lt;/p&gt;</comment>
                            <comment id="3355774" author="steven.vannelli" created="Mon, 24 Aug 2020 17:16:27 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=bruce.lucas&quot; class=&quot;user-hover&quot; rel=&quot;bruce.lucas&quot;&gt;bruce.lucas&lt;/a&gt; we believe that this is resolved since we completed the Exhaust Cursors for Oplog Fetching project. Would it be easy for you to test to see if that is the case?&lt;/p&gt;</comment>
                            <comment id="3349483" author="asya" created="Thu, 20 Aug 2020 16:53:06 +0000"  >&lt;p&gt;Flagging for scheduling in light of it being unblocked.&lt;/p&gt;</comment>
                            <comment id="3349480" author="asya" created="Thu, 20 Aug 2020 16:52:42 +0000"  >&lt;p&gt;Now that exhaust project is complete, this should be unblocked, right?&lt;/p&gt;</comment>
                            <comment id="2283578" author="bernard.gorman" created="Thu, 13 Jun 2019 16:51:25 +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;: no, I&apos;m not proposing this as the definitive fix - I removed the block simply to confirm that this was the source of the double-&lt;tt&gt;getMore&lt;/tt&gt; behaviour.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=schwerin&quot; class=&quot;user-hover&quot; rel=&quot;schwerin&quot;&gt;schwerin&lt;/a&gt;: I think you&apos;re right that &lt;tt&gt;replSetUpdatePosition&lt;/tt&gt; is responsible for the premature &lt;tt&gt;getMore&lt;/tt&gt; returns; on an otherwise idle replica set, a single write results in the next &lt;tt&gt;getMore&lt;/tt&gt; returning 1 result to the Secondary, not an empty batch. Below is the original double-&lt;tt&gt;getMore&lt;/tt&gt; graph, overlaid with &lt;tt&gt;replSetUpdatePosition&lt;/tt&gt; events as vertical lines. Each of the empty &lt;tt&gt;getMores&lt;/tt&gt; coincides with the arrival of a new &lt;tt&gt;replSetUpdatePosition&lt;/tt&gt; command. The problem appears to be that the Secondary is issuing a &lt;tt&gt;getMore&lt;/tt&gt; with a &lt;tt&gt;lastKnownCommittedOpTime&lt;/tt&gt; of &lt;tt&gt;T&lt;/tt&gt;, followed almost immediately by a &lt;tt&gt;replSetUpdatePosition&lt;/tt&gt; of &lt;tt&gt;T+N&lt;/tt&gt; that causes its own &lt;tt&gt;getMore&lt;/tt&gt; to be cut short.&lt;/p&gt;

&lt;p&gt; &lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;a id=&quot;220641_thumb&quot; href=&quot;https://jira.mongodb.org/secure/attachment/220641/220641_mongod-4.1.13-w2-replsetupdatepos-plot.png&quot; title=&quot;mongod-4.1.13-w2-replsetupdatepos-plot.png&quot; file-preview-type=&quot;image&quot; file-preview-id=&quot;220641&quot; file-preview-title=&quot;mongod-4.1.13-w2-replsetupdatepos-plot.png&quot;&gt;&lt;img src=&quot;https://jira.mongodb.org/secure/thumbnail/220641/_thumb_220641.png&quot; style=&quot;border: 0px solid black&quot; role=&quot;presentation&quot;/&gt;&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;</comment>
                            <comment id="2283383" author="schwerin" created="Thu, 13 Jun 2019 15:52:15 +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;, I don&apos;t think Bernard is proposing to get rid of the block. Rather, his experiment demonstrates that this block is the cause of the behavior. I don&apos;t think we want to &lt;em&gt;depend&lt;/em&gt; on `replSetHeartbeat` to propagate commit point, or really do anything other than estimate ping times to hosts for purposes of making the spanning tree.&lt;/p&gt;

&lt;p&gt;An interesting question is if his analysis is wholly correct. If we have an entirely idle replica set, and we do a single write, will the first getMore on the oplog after the single write return an empty batch or not? If not, then perhaps a `replSetUpdatePosition` command reliably comes in advancing the commit point in this workload.&lt;/p&gt;

&lt;p&gt;If we switch to using exhaust cursors for transmitting oplog entries to secondaries, we might cut out half a network roundtrip, and maybe an entire one, without changing this block of code at all.&lt;/p&gt;</comment>
                            <comment id="2283321" author="judah.schvimer" created="Thu, 13 Jun 2019 15:31:44 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=bernard.gorman&quot; class=&quot;user-hover&quot; rel=&quot;bernard.gorman&quot;&gt;bernard.gorman&lt;/a&gt;, are you suggesting we actually remove the highlighted code? Basically remove the entire &lt;tt&gt;shouldWaitForInserts()&lt;/tt&gt; function and just call &lt;tt&gt;_shouldListenForInserts()&lt;/tt&gt;?&lt;/p&gt;

&lt;p&gt;My concern with this change is if it means we propagate the commit point more slowly. We now propagate it via heartbeats though so I don&apos;t think this will have a significant impact on that. We only send heartbeats every 2 seconds though.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;But it appears that the write we have just performed locally has caused the Primary&apos;s lastKnownCommittedOpTime to move forward before the corresponding entry is visible in the oplog.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I&apos;m not sure how this is possible if both nodes are voting nodes (since the insert would have to be replicated to the secondary), and if they&apos;re not and there is only one voting node then this seems like an unusual edge case. &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=bernard.gorman&quot; class=&quot;user-hover&quot; rel=&quot;bernard.gorman&quot;&gt;bernard.gorman&lt;/a&gt;, can you please clarify what&apos;s happening here?&lt;/p&gt;

&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;, what are your thoughts on this proposed change?&lt;/p&gt;</comment>
                            <comment id="2282995" author="bernard.gorman" created="Thu, 13 Jun 2019 13:56:59 +0000"  >&lt;p&gt;First of all, it&apos;s important to note that in general case, oplog &lt;tt&gt;getMores&lt;/tt&gt; &lt;b&gt;do&lt;/b&gt; wait for a maximum of 5 seconds before returning. This wait time does not show up in the logs, because in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-29304&quot; title=&quot;Exclude time spent blocking for awaitData from latency metrics&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-29304&quot;&gt;&lt;del&gt;SERVER-29304&lt;/del&gt;&lt;/a&gt; we deliberately changed our logging such that the time spent idling for results is not included in the total execution time of the &lt;tt&gt;getMore&lt;/tt&gt;. So a &lt;tt&gt;getMore&lt;/tt&gt; which waits for its entire 5-second duration without observing any new oplog entries will report its duration as &lt;tt&gt;0ms&lt;/tt&gt;, as will a &lt;tt&gt;getMore&lt;/tt&gt; which arrives while there is a small number of entries in the oplog (since an &lt;tt&gt;awaitData&lt;/tt&gt; cursor stops waiting as soon as it has seen at least one result). This isn&apos;t ideal for diagnostics, since it means that you have to look at the timestamps between getMores as well as their respective &lt;tt&gt;nreturned&lt;/tt&gt; in order to figure out what&apos;s going on. Note that the total &lt;tt&gt;getMore&lt;/tt&gt; duration &lt;b&gt;is&lt;/b&gt; recorded in the FTDC data, including &lt;tt&gt;await&lt;/tt&gt; time.&lt;/p&gt;

&lt;p&gt;Below is a graph of &lt;tt&gt;w:2&lt;/tt&gt; inserts and oplog &lt;tt&gt;getMores&lt;/tt&gt; on a 2-node replica set running  &lt;tt&gt;4.1.13&lt;/tt&gt;, where this behaviour is still occurring. Dark blue circles are inserts, light blue circles are &lt;tt&gt;getMores&lt;/tt&gt; which returned early with 0 results, pink circles are &lt;tt&gt;getMores&lt;/tt&gt; which returned as expected with 1 result:&lt;/p&gt;

&lt;p&gt; &lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;a id=&quot;220609_thumb&quot; href=&quot;https://jira.mongodb.org/secure/attachment/220609/220609_mongod-4.1.13-w2-plot.png&quot; title=&quot;mongod-4.1.13-w2-plot.png&quot; file-preview-type=&quot;image&quot; file-preview-id=&quot;220609&quot; file-preview-title=&quot;mongod-4.1.13-w2-plot.png&quot;&gt;&lt;img src=&quot;https://jira.mongodb.org/secure/thumbnail/220609/_thumb_220609.png&quot; style=&quot;border: 0px solid black&quot; role=&quot;presentation&quot;/&gt;&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;

&lt;p&gt;As &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=bruce.lucas&quot; class=&quot;user-hover&quot; rel=&quot;bruce.lucas&quot;&gt;bruce.lucas&lt;/a&gt; pointed out in HELP-9958, each insert causes an &quot;extra&quot; &lt;tt&gt;getMore&lt;/tt&gt; which returns without picking up the &lt;tt&gt;insert&lt;/tt&gt; operation from the oplog. Each of these is then followed by another &lt;tt&gt;getMore&lt;/tt&gt; which &lt;b&gt;does&lt;/b&gt; pick up the &lt;tt&gt;insert&lt;/tt&gt;, allowing the &lt;tt&gt;w:2&lt;/tt&gt; write to return successfully to the client.&lt;/p&gt;

&lt;p&gt;The cause of this double-&lt;tt&gt;getMore&lt;/tt&gt; behaviour &lt;a href=&quot;https://github.com/mongodb/mongo/blob/a1227ec62f0cfa8e678b0862c6e815337f09d97c/src/mongo/db/query/plan_executor_impl.cpp#L412-L419&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;is this block of code&lt;/a&gt;, which was introduced in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-29128&quot; title=&quot;Make $changeNotification stage return a tailable, awaitData cursor that continuously gives out oplog entries&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-29128&quot;&gt;&lt;del&gt;SERVER-29128&lt;/del&gt;&lt;/a&gt; and modified slightly by &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-35239&quot; title=&quot;AwaitData cursor must handle getMore from client with higher lastKnownCommittedOpTime&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-35239&quot;&gt;&lt;del&gt;SERVER-35239&lt;/del&gt;&lt;/a&gt;:&lt;/p&gt;

&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;thead&gt;
			&lt;tr id=&quot;syntaxplugin_title&quot;&gt;
			&lt;td bgcolor=&quot;#f5f5f5&quot; style=&quot;font-family: Arial,sans-serif; color: #333; border-bottom: 1px solid #bbb; background-color: #f5f5f5 !important; font-weight: bold; line-height: 1em;&quot;  colspan=&quot;2&quot;&gt;
				&lt;p style=&quot;margin: 5px 10px; padding: 0;&quot;&gt;plan_executor_impl.cpp&lt;/p&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/thead&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#f5f5f5&quot;  style=&quot; background-color: #f5f5f5 !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: #707070;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;405&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;bool PlanExecutorImpl::_shouldWaitForInserts() {&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#f5f5f5&quot;  style=&quot; background-color: #f5f5f5 !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: #707070;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;406&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    // If this is an awaitData-respecting operation and we have time left and we&apos;re not interrupted,&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#f5f5f5&quot;  style=&quot; background-color: #f5f5f5 !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: #707070;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;407&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    // we should wait for inserts.&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#f5f5f5&quot;  style=&quot; background-color: #f5f5f5 !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: #707070;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;408&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    if (_shouldListenForInserts()) {&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#f5f5f5&quot;  style=&quot; background-color: #f5f5f5 !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: #707070;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;409&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;        // We expect awaitData cursors to be yielding.&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#f5f5f5&quot;  style=&quot; background-color: #f5f5f5 !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: #707070;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;410&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;        invariant(_yieldPolicy-&amp;gt;canReleaseLocksDuringExecution());&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#f5f5f5&quot;  style=&quot; background-color: #f5f5f5 !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: #707070;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;411&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#f5f5f5&quot;  style=&quot; background-color: #f5f5f5 !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: #707070;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;412&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;        // For operations with a last committed opTime, we should not wait if the replication&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#f5f5f5&quot;  style=&quot; background-color: #f5f5f5 !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: #707070;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;413&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;        // coordinator&apos;s lastCommittedOpTime has progressed past the client&apos;s lastCommittedOpTime.&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#f5f5f5&quot;  style=&quot; background-color: #f5f5f5 !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: #707070;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;414&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;        // In that case, we will return early so that we can inform the client of the new&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#f5f5f5&quot;  style=&quot; background-color: #f5f5f5 !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: #707070;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;415&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;        // lastCommittedOpTime immediately.&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#6ce26c&quot;  style=&quot; background-color: #6ce26c !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: white;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;416&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  bgcolor=&quot;#e0e0e0&quot;  style=&quot; background-color: #e0e0e0 !important; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;        if (!clientsLastKnownCommittedOpTime(_opCtx).isNull()) {&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#6ce26c&quot;  style=&quot; background-color: #6ce26c !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: white;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;417&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  bgcolor=&quot;#e0e0e0&quot;  style=&quot; background-color: #e0e0e0 !important; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;            auto replCoord = repl::ReplicationCoordinator::get(_opCtx);&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#6ce26c&quot;  style=&quot; background-color: #6ce26c !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: white;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;418&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  bgcolor=&quot;#e0e0e0&quot;  style=&quot; background-color: #e0e0e0 !important; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;            return clientsLastKnownCommittedOpTime(_opCtx) &amp;gt;= replCoord-&amp;gt;getLastCommittedOpTime();&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#6ce26c&quot;  style=&quot; background-color: #6ce26c !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: white;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;419&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  bgcolor=&quot;#e0e0e0&quot;  style=&quot; background-color: #e0e0e0 !important; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;        }&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#f5f5f5&quot;  style=&quot; background-color: #f5f5f5 !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: #707070;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;420&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;        return true;&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#f5f5f5&quot;  style=&quot; background-color: #f5f5f5 !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: #707070;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;421&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    }&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#f5f5f5&quot;  style=&quot; background-color: #f5f5f5 !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: #707070;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;422&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    return false;&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  bgcolor=&quot;#f5f5f5&quot;  style=&quot; background-color: #f5f5f5 !important;  line-height: 1.4em !important; border-right: 1px solid #bbb; text-align: right; width: 2em; margin: 0em; vertical-align: top;&quot;&gt;
							&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot; color: #707070;  font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;423&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;This is &lt;a href=&quot;https://github.com/mongodb/mongo/blob/a1227ec62f0cfa8e678b0862c6e815337f09d97c/src/mongo/db/query/plan_executor_impl.cpp#L593-L595&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;called from &lt;tt&gt;PlanExecutorImpl::_getNextImpl&lt;/tt&gt;&lt;/a&gt; in the case where we hit &lt;tt&gt;EOF&lt;/tt&gt;, i.e. there are no oplog entries available. Each &lt;tt&gt;getMore&lt;/tt&gt; includes a &lt;tt&gt;lastKnownCommittedOptime&lt;/tt&gt; field, so we enter the &lt;tt&gt;if&lt;/tt&gt; statement on line 416. But it appears that the write we have just performed locally has caused the Primary&apos;s &lt;tt&gt;lastKnownCommittedOpTime&lt;/tt&gt; to move forward &lt;b&gt;before&lt;/b&gt; the corresponding entry is visible in the oplog. We therefore always return false on line 418, causing the &lt;tt&gt;getMore&lt;/tt&gt; to stop waiting and return &lt;tt&gt;EOF&lt;/tt&gt; to the Secondary immediately.&lt;/p&gt;

&lt;p&gt;Removing this block of code has the following effect on the &lt;tt&gt;w:2&lt;/tt&gt; test. Notice that there are no longer any light-blue &lt;tt&gt;nreturned:0&lt;/tt&gt; points on the graph, only pink &lt;tt&gt;nreturned:1&lt;/tt&gt; points.&lt;/p&gt;

&lt;p&gt; &lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;a id=&quot;220611_thumb&quot; href=&quot;https://jira.mongodb.org/secure/attachment/220611/220611_mongod-master-fix-w2-plot.png&quot; title=&quot;mongod-master-fix-w2-plot.png&quot; file-preview-type=&quot;image&quot; file-preview-id=&quot;220611&quot; file-preview-title=&quot;mongod-master-fix-w2-plot.png&quot;&gt;&lt;img src=&quot;https://jira.mongodb.org/secure/thumbnail/220611/_thumb_220611.png&quot; style=&quot;border: 0px solid black&quot; role=&quot;presentation&quot;/&gt;&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;

&lt;p&gt;From the FTDC data, we can also see that there is a 1:1 ratio of &lt;tt&gt;getMores&lt;/tt&gt; to &lt;tt&gt;inserts&lt;/tt&gt;, rather than the 2:1 ratio which &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=bruce.lucas&quot; class=&quot;user-hover&quot; rel=&quot;bruce.lucas&quot;&gt;bruce.lucas&lt;/a&gt; observed in HELP-9958.  Every &lt;tt&gt;getMore&lt;/tt&gt; now waits until the &lt;tt&gt;insert&apos;s&lt;/tt&gt; oplog entry is visible, and then immediately returns it to the Secondary without any extraneous round-trips.&lt;/p&gt;

&lt;p&gt; &lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;a id=&quot;220610_thumb&quot; href=&quot;https://jira.mongodb.org/secure/attachment/220610/220610_mongod-master-fix-w2-ftdc.png&quot; title=&quot;mongod-master-fix-w2-ftdc.png&quot; file-preview-type=&quot;image&quot; file-preview-id=&quot;220610&quot; file-preview-title=&quot;mongod-master-fix-w2-ftdc.png&quot;&gt;&lt;img src=&quot;https://jira.mongodb.org/secure/thumbnail/220610/_thumb_220610.png&quot; style=&quot;border: 0px solid black&quot; role=&quot;presentation&quot;/&gt;&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;

&lt;p&gt;Passing this over to the Replication team for triage. cc &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; &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;&lt;/p&gt;</comment>
                            <comment id="2266064" author="charlie.swanson" created="Thu, 30 May 2019 21:18:19 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=bernard.gorman&quot; class=&quot;user-hover&quot; rel=&quot;bernard.gorman&quot;&gt;bernard.gorman&lt;/a&gt; your next sprint seems pretty free so I&apos;m giving you this to take a look. It looks like &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=anton.korshunov&quot; class=&quot;user-hover&quot; rel=&quot;anton.korshunov&quot;&gt;anton.korshunov&lt;/a&gt; might also be pretty free after finishing up $merge tickets.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                            <outwardlinks description="depends on">
                                                        </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="220609" name="mongod-4.1.13-w2-plot.png" size="110743" author="bernard.gorman@mongodb.com" created="Thu, 13 Jun 2019 13:54:37 +0000"/>
                            <attachment id="220641" name="mongod-4.1.13-w2-replsetupdatepos-plot.png" size="115682" author="bernard.gorman@mongodb.com" created="Thu, 13 Jun 2019 16:39:27 +0000"/>
                            <attachment id="220610" name="mongod-master-fix-w2-ftdc.png" size="113057" author="bernard.gorman@mongodb.com" created="Thu, 13 Jun 2019 13:55:04 +0000"/>
                            <attachment id="220611" name="mongod-master-fix-w2-plot.png" size="98362" author="bernard.gorman@mongodb.com" created="Thu, 13 Jun 2019 13:55:03 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25128"><![CDATA[Replication]]></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>Thu, 30 May 2019 21:18:19 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        3 years, 20 weeks, 2 days ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[<s><a href='https://jira.mongodb.org/browse/PM-1232'>PM-1232</a></s>]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_17050" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Downstream Team Attention</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="16941"><![CDATA[Not Needed]]></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>
                            3 years, 20 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10032" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Operating System</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10026"><![CDATA[ALL]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>schwerin@mongodb.com</customfieldvalue>
            <customfieldvalue>asya.kamsky@mongodb.com</customfieldvalue>
            <customfieldvalue>backlog-server-repl</customfieldvalue>
            <customfieldvalue>bernard.gorman@mongodb.com</customfieldvalue>
            <customfieldvalue>bruce.lucas@mongodb.com</customfieldvalue>
            <customfieldvalue>charlie.swanson@mongodb.com</customfieldvalue>
            <customfieldvalue>judah.schvimer@mongodb.com</customfieldvalue>
            <customfieldvalue>steven.vannelli@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hv15cf:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hur88n:</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_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|hv0rlr:</customfieldvalue>

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