<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 03:22:05 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-10037] Optimize updates when document is unchaged</title>
                <link>https://jira.mongodb.org/browse/SERVER-10037</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;In an update that replaces existing document with a new document, if the new and old documents are byte-equal (operation is a no-op), do not perform the update in oplog / journal / disk.&lt;/p&gt;</description>
                <environment></environment>
        <key id="80431">SERVER-10037</key>
            <summary>Optimize updates when document is unchaged</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="9">Done</resolution>
                                        <assignee username="ron.avnur">Ron Avnur</assignee>
                                    <reporter username="ron.avnur">Ron Avnur</reporter>
                        <labels>
                            <label>idempotency</label>
                            <label>oplog</label>
                    </labels>
                <created>Wed, 26 Jun 2013 20:48:30 +0000</created>
                <updated>Mon, 11 Jul 2016 17:37:58 +0000</updated>
                            <resolved>Wed, 10 Jul 2013 15:02:49 +0000</resolved>
                                                    <fixVersion>2.5.1</fixVersion>
                                    <component>Write Ops</component>
                                        <votes>0</votes>
                                    <watches>8</watches>
                                                                                                                <comments>
                            <comment id="381517" author="auto" created="Mon, 15 Jul 2013 18:59:29 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;scotthernandez&apos;, u&apos;name&apos;: u&apos;Scott Hernandez&apos;, u&apos;email&apos;: u&apos;scotthernandez@gmail.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-10037&quot; title=&quot;Optimize updates when document is unchaged&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-10037&quot;&gt;&lt;del&gt;SERVER-10037&lt;/del&gt;&lt;/a&gt;: move reset first&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/08439d7693f2c005dd2013eb482526706fb49b7f&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/08439d7693f2c005dd2013eb482526706fb49b7f&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="378051" author="matt.kangas@10gen.com" created="Wed, 10 Jul 2013 15:02:49 +0000"  >&lt;p&gt;Merged in 9c222f4ffb1eac72d54b8c1237c8816b115af43b after fixing compile failure.&lt;/p&gt;</comment>
                            <comment id="378048" author="auto" created="Wed, 10 Jul 2013 14:58:59 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;avnur&apos;, u&apos;name&apos;: u&apos;Ron Avnur&apos;, u&apos;email&apos;: u&apos;ron@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-10037&quot; title=&quot;Optimize updates when document is unchaged&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-10037&quot;&gt;&lt;del&gt;SERVER-10037&lt;/del&gt;&lt;/a&gt; Optimize updates when document is unchanged&lt;/p&gt;

&lt;p&gt;Signed-off-by: Matt Kangas &amp;lt;matt.kangas@10gen.com&amp;gt;&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/9c222f4ffb1eac72d54b8c1237c8816b115af43b&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/9c222f4ffb1eac72d54b8c1237c8816b115af43b&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="376198" author="dwight_10gen" created="Mon, 8 Jul 2013 15:47:59 +0000"  >&lt;p&gt;Note if this existing and were to fire, the savings would be &lt;b&gt;huge&lt;/b&gt;.  We already check indexes for non-mutation, so no gain there.  However, a lot of code would be short circuited so there is cpu savings; and we don&apos;t write to either oplog or journal which is pretty big savings.  In addition, the write to the record, that is a big savings too &amp;#8211; even though the bytes are the same, the page will be dirty and written out.  And that write is a random write I/O, which will have to be flushed in 60 seconds, so quite expensive.  For a database that fits in RAM, yet is on spinning disks, it would be a huge difference.&lt;/p&gt;

&lt;p&gt;Now, of course, it only helps if the write is a no-op, and of course for many use cases that will never come into play!&lt;/p&gt;</comment>
                            <comment id="376190" author="dwight_10gen" created="Mon, 8 Jul 2013 15:42:31 +0000"  >&lt;p&gt;Imagine if an update is a no-op on the primary.  In that case idempotency is not relevant?  &lt;/p&gt;

&lt;p&gt;That is to say, I propose we optimize these out for primary writes, and don&apos;t do anything fancy when applying replicated statements.&lt;/p&gt;</comment>
                            <comment id="368485" author="scotthernandez" created="Wed, 26 Jun 2013 21:01:16 +0000"  >&lt;p&gt;There are some problems with this as the current update will create an oplog entry, even if the doc is not updated.&lt;/p&gt;

&lt;p&gt;If your goal is to minimize IO, that is great, but changing oplog/idempotency rules is not trivial without proving they are correct.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="81716">SERVER-10144</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>6.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10038"><![CDATA[Fully Compatible]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 26 Jun 2013 21:01:16 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        10 years, 31 weeks, 2 days ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_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>ramon.fernandez@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            10 years, 31 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Old_Backport</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10000"><![CDATA[No]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>auto</customfieldvalue>
            <customfieldvalue>dwight@mongodb.com</customfieldvalue>
            <customfieldvalue>matt.kangas</customfieldvalue>
            <customfieldvalue>ron.avnur</customfieldvalue>
            <customfieldvalue>scotthernandez</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrmp27:</customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>73510</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10166" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Tests Written</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10153"><![CDATA[Unneeded]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_22870" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Triagers</customfieldname>
                        <customfieldvalues>
                                

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

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