<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 03:34:29 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-14322] Retry on predicate unique index violations of update + upsert -&gt; insert when possible</title>
                <link>https://jira.mongodb.org/browse/SERVER-14322</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;div class=&quot;panel&quot; style=&quot;background-color: #eeeeee;border-color: #cccccc;border-width: 1px;&quot;&gt;&lt;div class=&quot;panelHeader&quot; style=&quot;border-bottom-width: 1px;border-bottom-color: #cccccc;background-color: #6cb33f;&quot;&gt;&lt;b&gt;Issue Status as of Jan 29, 2019&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;panelContent&quot; style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;p&gt;&lt;b&gt;ISSUE DESCRIPTION AND IMPACT&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;During an update with &lt;tt&gt;upsert:true&lt;/tt&gt; option, two (or more) threads may attempt an &lt;tt&gt;upsert&lt;/tt&gt; operation using the same query predicate and, upon not finding a match, the threads will attempt to insert a new document. Both inserts will (and should) succeed, unless the second causes a unique constraint violation. &lt;a href=&quot;https://docs.mongodb.com/manual/reference/method/db.collection.update/#use-unique-indexes&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;This MongoDB behavior is documented here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It is expected that the client will take appropriate action upon detection of such constraint violation. Appropriate action may vary depending on individual application requirements.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;IMPROVEMENT DESCRIPTION&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;As part of &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-37124&quot; title=&quot;Retry full upsert path when duplicate key exception matches exact query predicate&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-37124&quot;&gt;&lt;del&gt;SERVER-37124&lt;/del&gt;&lt;/a&gt;, fixed in versions 4.1.6 and later, &lt;b&gt;the server will automatically retry performing the upsert in cases where it is detectably safe to do so&lt;/b&gt;. It is safe for the server to retry when the following conditions hold:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;The operation has the &lt;tt&gt;upsert:true&lt;/tt&gt; flag.&lt;/li&gt;
	&lt;li&gt;The operation is &lt;em&gt;not&lt;/em&gt; a multi-update.&lt;/li&gt;
	&lt;li&gt;The &lt;tt&gt;upsert&lt;/tt&gt; failed with the &lt;tt&gt;DuplicateKey&lt;/tt&gt; error code due to a unique index with key pattern &lt;em&gt;kp&lt;/em&gt;.&lt;/li&gt;
	&lt;li&gt;The match condition is either a single equality predicate, or a logical AND of equality predicates.&lt;/li&gt;
	&lt;li&gt;The set of fields over which there is an equality predicate equals the set of fields in the index key pattern &lt;em&gt;kp&lt;/em&gt;.&lt;/li&gt;
	&lt;li&gt;The fields in the match condition are not mutated by the update modifiers.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The following table contains examples of upsert operations that the server can automatically retry on &lt;tt&gt;DuplicateKey&lt;/tt&gt; error, and examples where the server cannot automatically retry:&lt;/p&gt;
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;&#160; &#160;&lt;em&gt;kp&lt;/em&gt;&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;update&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;&#160;server will retry&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;{_id: 1}&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;db.coll.update({_id:5}, {$set:{a:5}}, {upsert:true})&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&#160; &#160; &lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;{a:1}&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;db.coll.update({a:{$in:[5]}}, {$set:{b:5}}, {upsert:true})&#160;&#160;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&#160; &#160; &lt;b&gt;yes&lt;/b&gt;&#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;{a:1,b:1}&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;db.coll.update({a:5,b:7},{$set:{c:5}}, {upsert:true})&#160;&#160;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&#160; &#160; &lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;{a:1,b:1}&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;db.coll.update({a:5,b:7},{$set:{a:7,c:5}},{upsert:true})&#160;&#160;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&#160; &#160; no, since &lt;tt&gt;a&lt;/tt&gt; is in &lt;em&gt;kp&lt;/em&gt; and is mutated&#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;{a:1}&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;db.coll.update({_id:5},{$set:{b:6}}, {upsert:true})&#160;&#160;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&#160; &#160; no, since the predicate does not contain &lt;tt&gt;a&lt;/tt&gt;&#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;{_id:1}&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;db.coll.update({_id:5,v:6},{$set:{a:5,b:6}}, {upsert:true})&#160;&#160;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&#160; &#160; no, since &lt;tt&gt;v&lt;/tt&gt; is not in &lt;em&gt;kp&lt;/em&gt;&#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;{a:1}&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;db.coll.update({a:{$lt:5}},{$set:{b:5}}, {upsert:true})&#160;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&#160; &#160; no, since the predicate on &lt;tt&gt;a&lt;/tt&gt; is not an equality&#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;


&lt;p&gt;This ticket will now be resolved as duplicate of &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-37124&quot; title=&quot;Retry full upsert path when duplicate key exception matches exact query predicate&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-37124&quot;&gt;&lt;del&gt;SERVER-37124&lt;/del&gt;&lt;/a&gt; since we don&apos;t believe there is further work that we can do on the server and the application must correctly determine whether the operation that failed can be safely retried again or not.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;VERSIONS&lt;/b&gt;&lt;br/&gt;
This improvement in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-37124&quot; title=&quot;Retry full upsert path when duplicate key exception matches exact query predicate&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-37124&quot;&gt;&lt;del&gt;SERVER-37124&lt;/del&gt;&lt;/a&gt; will be included in the 4.2 production release&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;h6&gt;&lt;a name=&quot;Originaldescription&quot;&gt;&lt;/a&gt;Original description&lt;/h6&gt;

&lt;p&gt;It is possible that two updates come in with upsert:true, resulting in neither finding a document and both inserting new documents which conflict on unique index violations of the query predicate. In this case it is possible for the server to retry any failed updates.&lt;/p&gt;

&lt;p&gt;Currently clients can retry the update to get the same behavior which is expected from the server.&lt;/p&gt;

&lt;p&gt;This affects both updates and findAndModify. See &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-10350&quot; title=&quot;Atomicity of Upserts on multi field unique index&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-10350&quot;&gt;&lt;del&gt;SERVER-10350&lt;/del&gt;&lt;/a&gt; for slightly more background.&lt;/p&gt;

</description>
                <environment></environment>
        <key id="143209">SERVER-14322</key>
            <summary>Retry on predicate unique index violations of update + upsert -&gt; insert when possible</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</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="3">Duplicate</resolution>
                                        <assignee username="backlog-server-query">Backlog - Query Team</assignee>
                                    <reporter username="scotthernandez">Scott Hernandez</reporter>
                        <labels>
                            <label>storch</label>
                    </labels>
                <created>Fri, 20 Jun 2014 11:45:03 +0000</created>
                <updated>Mon, 4 Dec 2023 11:53:40 +0000</updated>
                            <resolved>Tue, 29 Jan 2019 23:31:38 +0000</resolved>
                                                                    <component>Write Ops</component>
                                        <votes>117</votes>
                                    <watches>149</watches>
                                                                                                                <comments>
                            <comment id="4919824" author="james.wahlin@10gen.com" created="Fri, 21 Oct 2022 21:05:59 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=vickyrddy97%40gmail.com&quot; class=&quot;user-hover&quot; rel=&quot;vickyrddy97@gmail.com&quot;&gt;vickyrddy97@gmail.com&lt;/a&gt; this fix is not tied to FCV version and will be available under FCV 4.4 with the 5.0 binary.&lt;/p&gt;</comment>
                            <comment id="4917662" author="JIRAUSER1271571" created="Fri, 21 Oct 2022 04:45:34 +0000"  >&lt;p&gt;@James Wahlin Do we need to have FCV also updated to 5.0 for the fix to work or just DB upgrade to 5.0 and FCV at 4.4 would also work?&lt;/p&gt;</comment>
                            <comment id="4088449" author="JIRAUSER1262197" created="Tue, 28 Sep 2021 07:38:22 +0000"  >&lt;p&gt;Thanks @James Wahlin for the notice &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.mongodb.org/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                            <comment id="4087196" author="james.wahlin@10gen.com" created="Mon, 27 Sep 2021 17:34:30 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-47212&quot; title=&quot;Retry full upsert path when duplicate key exception matches exact query predicate in findAndModify&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-47212&quot;&gt;&lt;del&gt;SERVER-47212&lt;/del&gt;&lt;/a&gt; tracks this issue for the findAndModify command. The fix is currently available in MongoDB 5.0, but was deemed as risky to backport to 4.4 or earlier.&lt;/p&gt;</comment>
                            <comment id="4087169" author="JIRAUSER1262641" created="Mon, 27 Sep 2021 17:23:59 +0000"  >&lt;p&gt;Same here. I&apos;ll open a separate ticket.&lt;/p&gt;</comment>
                            <comment id="4049079" author="new.icelove@gmail.com" created="Fri, 10 Sep 2021 04:12:49 +0000"  >&lt;p&gt;I also get the same problem with `findAndModify` on mongodb 4.2. Does this improvement already on the mongodb 4.2?&lt;/p&gt;</comment>
                            <comment id="4035914" author="JIRAUSER1262197" created="Thu, 2 Sep 2021 10:10:50 +0000"  >&lt;p&gt;Is the auto retry mechanism applied in case of `findAndModify`?&lt;/p&gt;

&lt;p&gt;I&apos;m using Mongo 4.2 and experiencing the error with `findAndModify` operations even though my query match all the conditions for auto retry.&lt;/p&gt;</comment>
                            <comment id="1920663" author="arthur" created="Thu, 14 Jun 2018 14:51:42 +0000"  >&lt;p&gt;@Andy Schwerin&#160;Just to be sure I understand this correctly: Why isn&apos;t it enough to check if the operation tried an insert + the duplicate document that triggered the exception matches the predicate that was sent?&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="1724024" author="schwerin" created="Mon, 13 Nov 2017 15:42:17 +0000"  >&lt;p&gt;This behavior is distinct from the one that retryable writes addresses. Retryable write support requires being certain about whether a previously attempted write happened or not, in the face of communication errors. This behavior occurs even in the presence of certain knowledge about whether a write succeeded or failed. Indeed, the DuplicateKey error tells the client in no uncertain terms that the write failed.&lt;/p&gt;

&lt;p&gt;The challenge for automatic retry on duplicate key error is that we cannot know that the violated constraint is the unique index constraint from the match criteria, rather than some other unique index that might exist on the document. Handling a situation in which there may be multiple unique indexes correctly is what makes this harder to do in MongoDB than in the application, which knows what&apos;s what.&lt;/p&gt;

&lt;p&gt;Put another way, automatically retrying on a DuplicateKey error might fail indefinitely if the unique index constraint violated was not the one from the match expression.&lt;/p&gt;</comment>
                            <comment id="1723761" author="sherry-ummen" created="Mon, 13 Nov 2017 07:26:31 +0000"  >&lt;p&gt;So now since 3.6 has re-tryable writes. Does that mean that now using 3.6 this will not be a problem?&lt;/p&gt;</comment>
                            <comment id="1723733" author="amit777" created="Mon, 13 Nov 2017 04:30:47 +0000"  >&lt;p&gt;I believe I&apos;m experiencing this issue as well.  It seems hinted in the comments above that creating a unique index on the query predicate will either reduce or eliminate this issue?  Is either case true?  Any further explanation of how/why a unique index affects the occurrence of the issue?&lt;/p&gt;</comment>
                            <comment id="1698624" author="brad@mixmax.com" created="Fri, 13 Oct 2017 18:53:02 +0000"  >&lt;p&gt;I saw that Mongo 3.6 has retryable rewrites (&lt;a href=&quot;https://groups.google.com/forum/#!msg/mongodb-announce/BwDlVtKw74I/HH86-nnhAgAJ&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://groups.google.com/forum/#!msg/mongodb-announce/BwDlVtKw74I/HH86-nnhAgAJ&lt;/a&gt;). Does that mean this is fixed?&lt;/p&gt;</comment>
                            <comment id="1662480" author="nagisatosanae" created="Fri, 1 Sep 2017 09:34:42 +0000"  >&lt;p&gt;Extremely critical!!&lt;br/&gt;
This problem can also be seen when using the client driver connection pool. &lt;br/&gt;
It also appears in $set $setOninsert with upsert option.&lt;/p&gt;</comment>
                            <comment id="1607915" author="laxatives" created="Tue, 27 Jun 2017 18:53:24 +0000"  >&lt;p&gt;+1&lt;/p&gt;

&lt;p&gt;This is annoying and wastes a bit of time for `updateOne`, but its a breaking feature for bulk writes, when a single failure affects the entire group of updates.&lt;/p&gt;</comment>
                            <comment id="1550388" author="thestick613" created="Mon, 17 Apr 2017 09:42:07 +0000"  >&lt;p&gt;+1&lt;br/&gt;
This should be at least documented somewhere.&lt;/p&gt;</comment>
                            <comment id="1475620" author="jjkmongodb" created="Thu, 12 Jan 2017 16:14:59 +0000"  >&lt;p&gt;This is a pretty big issue and remains in current version 3.4. Entails mongodb cannot be used properly in two phase commit scenario. Please provide an update.&lt;/p&gt;</comment>
                            <comment id="1472631" author="sergiorykov" created="Mon, 9 Jan 2017 15:58:25 +0000"  >&lt;p&gt;MongoDB 3.4 is there and now we are in 2017 with this issue.&lt;/p&gt;

&lt;p&gt;What&apos;s the state of issue? &lt;/p&gt;
</comment>
                            <comment id="1459780" author="grouss" created="Fri, 16 Dec 2016 14:19:33 +0000"  >&lt;p&gt;got index creation failure because of this bug. pymongo.errorspymongo.errors..DuplicateKeyErrorDuplicateKeyError: : E11000 duplicate key error. It kills the running process since index is running in background.&lt;br/&gt;
I reduced the number of errors checking before if the document already exists, but it still happens &lt;br/&gt;
Any work around ? (I&apos;m using pymongo and a non sharded collection)&lt;br/&gt;
G.R.&lt;/p&gt;</comment>
                            <comment id="1457239" author="jkondratowicz" created="Wed, 14 Dec 2016 10:00:58 +0000"  >&lt;p&gt;Since we updated to WiredTiger, we&apos;re having hundreds of those errors daily. I believe it&apos;s a major issue, making write operations randomly unreliable. I&apos;ve been encountering this issue on a non-sharded collection, running a single NodeJS process, which is hardly a parallel environment.&lt;/p&gt;</comment>
                            <comment id="1410171" author="sherry-ummen" created="Mon, 17 Oct 2016 15:09:11 +0000"  >&lt;p&gt;We are lossing data quite often now because of this. Retry logic we have not added yet. Wondering whether this got any updates? Or any discussion happened on this issue ?&lt;/p&gt;</comment>
                            <comment id="1375184" author="ramon.fernandez" created="Thu, 1 Sep 2016 22:21:00 +0000"  >&lt;p&gt;Hi &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=sherry.ummen%40napa.fi&quot; class=&quot;user-hover&quot; rel=&quot;sherry.ummen@napa.fi&quot;&gt;sherry.ummen@napa.fi&lt;/a&gt;, please see &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-14322?focusedCommentId=1130310&amp;amp;page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-1130310&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;Andy&apos;s comment above&lt;/a&gt;. A solution to this ticket requires quite a bit of discussion that, unfortunately hasn&apos;t happened yet to the best of my knowledge. &lt;/p&gt;

&lt;p&gt;So while we&apos;d like to address it in the upcoming MongoDB 3.4 (as indicated by the &quot;3.3 Desired&quot; fixVersion), it is likely that a fix for this ticket will slip, and users will have to continue to use application code to get around this behavior.&lt;/p&gt;

&lt;p&gt;We&apos;ll post an updated on this ticket if the current plan and schedule change.&lt;/p&gt;

&lt;p&gt;Regards,&lt;br/&gt;
Ram&#243;n.&lt;/p&gt;</comment>
                            <comment id="1373053" author="sherry-ummen" created="Wed, 31 Aug 2016 10:01:12 +0000"  >&lt;p&gt;Hello,&lt;/p&gt;

&lt;p&gt;Could please tell what is the status of this issue? When will it be ready and in which release? &lt;/p&gt;

&lt;p&gt;Thanks&lt;/p&gt;</comment>
                            <comment id="1286306" author="bmwmaestoso" created="Tue, 7 Jun 2016 12:43:57 +0000"  >&lt;p&gt;I am not sure if this may be helpful. I was having this problem and changed the shard key to be unique and it resolved the problem. That may not work for everyone. While diagnosing the problem I turned the verbosity level to 5 and was able to capture the error condition in the log.&lt;/p&gt;

&lt;p&gt;There were two threads doing an upsert on the same entry that did not exist. The first thread (conn20) determines that the entry does not exist but instead of committing the transaction it does a rollback. A second thread (conn17) does the same action and does a commit. After a slight delay, the first thread then creates a new transaction but does not check to see if an entry already exists and thus it results in a duplicate entry.&lt;/p&gt;

&lt;p&gt;I can&apos;t copy and paste from my log as it is on a isolated network, but this is an abbreviated version:&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;conn20&amp;#93;&lt;/span&gt; Winning plan: ...&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;conn20&amp;#93;&lt;/span&gt; Winning plan had zero results. ...&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;conn20&amp;#93;&lt;/span&gt; WT_rollback_transaction&lt;br/&gt;
...&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;conn17&amp;#93;&lt;/span&gt; Winning plan: ...&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;conn17&amp;#93;&lt;/span&gt; Winning plan had zero results. ...&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;conn17&amp;#93;&lt;/span&gt; Changed immutable fields ...&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;conn17&amp;#93;&lt;/span&gt; WT_commit_transaction&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;conn17&amp;#93;&lt;/span&gt; UpdateResult &amp;#8211; upserted: ...&lt;br/&gt;
...&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;conn20&amp;#93;&lt;/span&gt; Changed immutable fields ...&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;conn20&amp;#93;&lt;/span&gt; WT begin_transaction&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;conn20&amp;#93;&lt;/span&gt; WT commit_transaction&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;conn20&amp;#93;&lt;/span&gt; UpdateResult &amp;#8211; upserted&lt;br/&gt;
...&lt;/p&gt;</comment>
                            <comment id="1229633" author="jonhyman" created="Thu, 7 Apr 2016 20:36:17 +0000"  >&lt;p&gt;We rewrote every single upsert in our application to use a global Redis lock based on the shard key, which is clearly undesirable, but I think it&apos;s a more complete solution than the retry. The retry situation works only if you have a unique indexes on your insertion/query predicate, but if you don&apos;t have a unique index, you can still insert duplicate data when this scenario happens. Chances are if you&apos;re using an upsert you can probably solve via unique index, but not always.&lt;/p&gt;</comment>
                            <comment id="1229620" author="JIRAUSER1269898" created="Thu, 7 Apr 2016 20:28:05 +0000"  >&lt;p&gt;We just upgraded to WiredTiger (3.2.3) and this issue is happening a lot. We are loosing data because of this and will have to change our application logic to add retries there (really annoying since &quot;upsert&quot; should not be complaining about duplicate entries (E11000). Please let us know if there is any other workaround.&lt;/p&gt;</comment>
                            <comment id="1131585" author="jonhyman" created="Mon, 11 Jan 2016 21:22:04 +0000"  >&lt;p&gt;Fantastic, thanks.&lt;/p&gt;</comment>
                            <comment id="1131582" author="asya" created="Mon, 11 Jan 2016 21:19:53 +0000"  >&lt;p&gt;Confirmed - as of 2.2 you can use for your shard key a prefix of an index, so having index on customer_id, event, date (whether unique or non-unique) means you are not required to have one on just customer_id, event (your shard key).  &lt;/p&gt;</comment>
                            <comment id="1130498" author="jonhyman" created="Sun, 10 Jan 2016 16:01:03 +0000"  >&lt;p&gt;If our shard key is &lt;/p&gt;
{ customer_id, event }
&lt;p&gt; (non-unique), I didn&apos;t realize we could add a unique index for &lt;/p&gt;
{ customer_id, event, date }
&lt;p&gt;. We definitely have that index, it&apos;s just not unique, so we could change it to that then if it&apos;s possible.&lt;/p&gt;</comment>
                            <comment id="1130468" author="asya" created="Sun, 10 Jan 2016 06:58:44 +0000"  >&lt;p&gt;Do you not have a unique index on customer_id, event, date?  It seems like you should want to have such an index for performance (and you don&apos;t need to change the shard key here - in fact after creating the new index you can drop the index on customer_id,event)&lt;/p&gt;</comment>
                            <comment id="1130322" author="jonhyman" created="Sat, 9 Jan 2016 17:05:09 +0000"  >&lt;p&gt;Thanks, Andy, it would be good to know for clarification.&lt;/p&gt;

&lt;p&gt;Here&apos;s one example. We have a collection that looks like this which tracks occurrences of an event over time:&lt;/p&gt;

{ customer_id: X, event: Y, date: Z, num_occurrences: W }

&lt;p&gt;that is sharded on &lt;/p&gt;
{ customer_id: 1, event: 1 }
&lt;p&gt;, and we update it with an upsert that $inc&apos;s num_occurrences on a given date. We did this so queries for a given &lt;/p&gt;
{ customer_id, event }
&lt;p&gt; pair over a date range would be on the same shard for query isolation. We had figured that Mongo&apos;s upsert was atomic when we made the design decision years ago. Now I&apos;m concerned that this will cause two documents for a given &lt;/p&gt;
{ customer_id, event, date }
&lt;p&gt; pair. While we could go back and update the shard key, the collection has of hundreds of millions of documents in it now, is hundreds of gigabytes, so that would be unrealistic without a significant amount of downtime. Also it would alter query isolation. As such, I&apos;ll be updating our code to manually handle the synchronization of the insert for this collection.&lt;/p&gt;</comment>
                            <comment id="1130310" author="schwerin" created="Sat, 9 Jan 2016 16:23:39 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=jonhyman&quot; class=&quot;user-hover&quot; rel=&quot;jonhyman&quot;&gt;jonhyman&lt;/a&gt;, I have a minor clarification here. In a sharded collection, an update with upsert must always contain the document&apos;s shard key, since in the event that the upsert becomes an insert the shard key must be known. Any index that has the shard key as its prefix can also enforce a unique index constraint in mongodb, IIRC. I just looked, and think the documentation may be incorrect on this point. If you&apos;re interested, I can do a little digging.&lt;/p&gt;

&lt;p&gt;Anyhow, if you combine those two facts, you have a situation where you can always have a unique index when using upsert, unless you really cannot have a unique index on the search criteria due to the application design. However, if your application cannot accept a uniqueness constraint on your upsert criteria, in what sense is it incorrect to insert a second document? That is, if it is legal for two documents to match the criteria, how should mongodb decide when to insert a new document or not?&lt;/p&gt;

&lt;p&gt;This ticket is really more about automatically performing the upsert as an update on unique key violation, rather than requiring the client to do so. Prior to MongoDB 3.0, this situation was somewhat rare, but starting in 3.0, when using the WiredTiger storage engine, it has become more frequent, making it more of a hassle for app developers than it used to be.&lt;/p&gt;

&lt;p&gt;Even the situation in this ticket is a little tricky, because the automatic retry on duplicate key is based on the assumption that the violated constraint is the unique index constraint from the match criteria, and not some other unique index that might exist on the document. Handling a situation in which there may be multiple unique indexes correctly is what makes this harder to do in MongoDB than in the application, which knows what&apos;s what.&lt;/p&gt;</comment>
                            <comment id="1130141" author="jonhyman" created="Fri, 8 Jan 2016 22:49:02 +0000"  >&lt;p&gt;As a workaround, we&apos;re going to use Redis for locking around all Mongo upserts to add the missing atomicity. While it&apos;s easy to code for retrying when you get a primary key error, that upserts can cause multiple document insertions where there are not unique indexes is pretty awful. Sharded collections can only have one unique index, so you&apos;re pretty limited with your options here once you shard.&lt;/p&gt;</comment>
                            <comment id="1130130" author="tim.widmann" created="Fri, 8 Jan 2016 22:30:21 +0000"  >&lt;p&gt;I also got this with MongoDB 3.0.6 and WiredTiger&lt;/p&gt;</comment>
                            <comment id="1130127" author="rnconde" created="Fri, 8 Jan 2016 22:25:13 +0000"  >&lt;p&gt;I just hit this on mongodb-linux-x86_64-rhel70-3.2.0 with wiredTiger.&lt;/p&gt;</comment>
                            <comment id="1129423" author="jonhyman" created="Fri, 8 Jan 2016 05:45:14 +0000"  >&lt;p&gt;We just got this on 3.0.8. Had never seen it before (though I was on 2.6.11 previously).&lt;/p&gt;</comment>
                            <comment id="1124953" author="sunguck.lee@gmail.com" created="Mon, 4 Jan 2016 08:47:15 +0000"  >&lt;p&gt;It&apos;s okay until MongoDB 3.0.3, But from 3.0.4 to 3.0.6 (This is the last version I have tested) Duplicated Key error is happened.&lt;/p&gt;</comment>
                            <comment id="1123756" author="dnviyth" created="Wed, 30 Dec 2015 01:00:38 +0000"  >&lt;p&gt;Which version of this problem begin to appear, it works well with wiredTiger engine in version 3.0.0.&lt;/p&gt;</comment>
                            <comment id="1094988" author="sunguck.lee@gmail.com" created="Sat, 21 Nov 2015 06:41:05 +0000"  >&lt;p&gt;This E11000(Duplicate key) exception during upsert operation happens from MongoDB 3.0.4&lt;br/&gt;
After little digging github commit, I found that &quot;bfdf548bc4c882ab944e0cf2f1e6015752fc05c2&quot; patch is a little bit weird.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/mongodb/mongo/commit/bfdf548bc4c882ab944e0cf2f1e6015752fc05c2&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/bfdf548bc4c882ab944e0cf2f1e6015752fc05c2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I think MONGO_WRITE_CONFLICT_RETRY_LOOP_BEGIN/END macro for &quot;UpdateStage::doInsert()&quot; is useless during &quot;upsert&quot; operation.&lt;br/&gt;
Retrying only insert will fail with DuplicateKey(forever until removing that record) if other thread inserted the record for the same key already.&lt;br/&gt;
For upsert operation, mongodb should retry both Update and Insert for every WriteConflictException not only Insert.&lt;/p&gt;

&lt;p&gt;And &quot;UpdateStage::work(WorkingSetID* out)&quot; has retry code already.&lt;br/&gt;
Does this patch aims for pure insert (not upsert) ? &lt;br/&gt;
Even so, I am not sure we need retry for insert conflict.&lt;/p&gt;</comment>
                            <comment id="1025001" author="andrewdoumaux" created="Wed, 9 Sep 2015 11:56:45 +0000"  >&lt;p&gt;I&apos;m receiving this same error in v3.0.6/wiredtiger engine when upserting into a collection that only has a index on _id and the upsert query is only on _id.  This is using the Java Driver mongo 2.13 driver.  I&apos;m currently using Apache Camel Split to handle the multithread processing of records that are upserted into mongo.  &lt;/p&gt;</comment>
                            <comment id="1009419" author="ramon.fernandez" created="Wed, 19 Aug 2015 12:41:23 +0000"  >&lt;p&gt;Simple shell repro for this problem, courtesy of &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=igor&quot; class=&quot;user-hover&quot; rel=&quot;igor&quot;&gt;igor&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;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&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;load(&apos;jstests/libs/parallelTester.js&apos;); // for ScopedThread&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&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  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;var t = db.getSiblingDB(&quot;upsert_bug&quot;).getCollection(&quot;col&quot;);&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&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  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;t.drop();&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&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  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;var upsertFn = function() {&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&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 (var i = 0; i &amp;lt; 100; ++i) {&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&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;    var c = db.getSiblingDB(&quot;upsert_bug&quot;).getCollection(&quot;col&quot;);&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&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;    var x = c.update({_id:3}, {$set: {a:&apos;123&apos;, b: Math.random()}}, 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  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;    assert(!x.getWriteError(), tojson(x));&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&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;    c.remove({&quot;_id&quot;:3});&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&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  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  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  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;var threads = [];&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&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 (var i = 0; i &amp;lt; 2; ++i) {&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&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;  var thread = new ScopedThread(upsertFn, db);&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&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;  threads.push(thread);&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&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;  thread.start();&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&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  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  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;threads.forEach(function(t) {&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&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;    t.join();&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&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;</comment>
                            <comment id="1009146" author="dynamike" created="Wed, 19 Aug 2015 03:30:44 +0000"  >&lt;p&gt;Seems like lots of reports. We see this issue being pretty common 3.0 WireTiger and RocksDB. What&apos;s the plan with this ticket?&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                            <outwardlinks description="depends on">
                                                        </outwardlinks>
                                                                <inwardlinks description="is depended on by">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                            <outwardlinks description="duplicates">
                                        <issuelink>
            <issuekey id="603868">SERVER-37124</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="265288">SERVER-22607</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="83606">SERVER-10350</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="179211">SERVER-16905</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="222809">SERVER-19600</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="226195">SERVER-20022</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="227279">SERVER-20158</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="229413">SERVER-20380</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="235003">SERVER-21006</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="270451">SERVER-22988</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="590964">SERVER-36763</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="207787">SERVER-18784</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="244460">SERVER-21948</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="170592">SERVER-16261</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="1039781">SERVER-44980</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="514874">PYTHON-1510</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="642140">DOCS-12234</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="223667">SERVER-19694</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1866424">SERVER-59758</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2207877">SERVER-72028</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2211318">SERVER-72127</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1298758">SERVER-47212</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>41.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25143"><![CDATA[Query]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_13552" key="com.go2group.jira.plugin.crm:crm_generic_field">
                        <customfieldname>Case</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[[500A000000XWhNAIA1, 500A000000aOCp3IAG, 500A000000aQ7KuIAK, 500A000000ZNXHUIA5, 500A000000byq1FIAQ, 5002K00000el4m2QAA, 5002K00000mrdiAQAQ, 5002K00000pDkHrQAK, 5002K00000pkNerQAE, 5006R00001vdG2IQAU, 5006R00001y4Ys0QAE]]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Fri, 16 Jan 2015 19:28:03 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        1 year, 15 weeks, 5 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/WRITING-1872'>WRITING-1872</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_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>false</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            1 year, 15 weeks, 5 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>amit777</customfieldvalue>
            <customfieldvalue>AndrewDoumaux</customfieldvalue>
            <customfieldvalue>schwerin@mongodb.com</customfieldvalue>
            <customfieldvalue>arthur</customfieldvalue>
            <customfieldvalue>asya.kamsky@mongodb.com</customfieldvalue>
            <customfieldvalue>backlog-server-query</customfieldvalue>
            <customfieldvalue>laxatives</customfieldvalue>
            <customfieldvalue>bmwmaestoso</customfieldvalue>
            <customfieldvalue>brad@mixmax.com</customfieldvalue>
            <customfieldvalue>daniel@haystack.tv</customfieldvalue>
            <customfieldvalue>dnviyth</customfieldvalue>
            <customfieldvalue>gjourdanweil@gmail.com</customfieldvalue>
            <customfieldvalue>grouss</customfieldvalue>
            <customfieldvalue>jjkMongoDB</customfieldvalue>
            <customfieldvalue>james.wahlin@mongodb.com</customfieldvalue>
            <customfieldvalue>jkondratowicz</customfieldvalue>
            <customfieldvalue>jonhyman</customfieldvalue>
            <customfieldvalue>jordi@mixmax.com</customfieldvalue>
            <customfieldvalue>new.icelove@gmail.com</customfieldvalue>
            <customfieldvalue>dynamike</customfieldvalue>
            <customfieldvalue>nagisatosanae</customfieldvalue>
            <customfieldvalue>ramon.fernandez@mongodb.com</customfieldvalue>
            <customfieldvalue>rnconde</customfieldvalue>
            <customfieldvalue>scotthernandez</customfieldvalue>
            <customfieldvalue>sergiorykov</customfieldvalue>
            <customfieldvalue>sherry-ummen</customfieldvalue>
            <customfieldvalue>tim.widmann</customfieldvalue>
            <customfieldvalue>thestick613</customfieldvalue>
            <customfieldvalue>vickyrddy97@gmail.com</customfieldvalue>
            <customfieldvalue>sunguck.lee@gmail.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrlsyf:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr8bpz:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>123727</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_11861" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>User Summary</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="11858"><![CDATA[Completed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hs9re7:</customfieldvalue>

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