<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 03:39:00 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-15793] Storage engine&apos;s updateRecord function should take oldRec</title>
                <link>https://jira.mongodb.org/browse/SERVER-15793</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;For storage engines that do transactional size checking, the old record is necessary to know the data size delta for the running update. Re-reading it from storage is not very cheap so the API should just include the oldRec, since it is readily available to the caller.&lt;/p&gt;

&lt;p&gt;Related to &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-15701&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/SERVER-15701&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
        <key id="165241">SERVER-15793</key>
            <summary>Storage engine&apos;s updateRecord function should take oldRec</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="4" iconUrl="https://jira.mongodb.org/images/icons/priorities/minor.svg">Minor - P4</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="-1">Unassigned</assignee>
                                    <reporter username="john.esmet@gmail.com">John Esmet</reporter>
                        <labels>
                    </labels>
                <created>Fri, 24 Oct 2014 00:40:50 +0000</created>
                <updated>Fri, 17 Apr 2015 14:31:33 +0000</updated>
                            <resolved>Fri, 23 Jan 2015 16:33:49 +0000</resolved>
                                    <version>2.7.8</version>
                                                    <component>Storage</component>
                                        <votes>0</votes>
                                    <watches>9</watches>
                                                                                                                <comments>
                            <comment id="891445" author="chengas123" created="Fri, 17 Apr 2015 14:31:33 +0000"  >&lt;p&gt;Thanks for the review and feedback on this, Geert.&lt;/p&gt;

&lt;p&gt;Igor, what do you think of this suggestion? You&apos;re much more familiar with this code, so I don&apos;t have a sense of which would be more preferable or feasible for the storage engines as end users of the interface. I filed an issue with the suggestion over on your GitHub, so that we don&apos;t lose track of it (&lt;a href=&quot;https://github.com/mongodb-partners/mongo-rocks/issues/2&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-partners/mongo-rocks/issues/2&lt;/a&gt;)&lt;/p&gt;</comment>
                            <comment id="878373" author="geert.bosch" created="Fri, 10 Apr 2015 17:33:54 +0000"  >&lt;p&gt;I&apos;m not sure about this approach. My reasons are:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Changing APIs to pass more data around than is needed can be problematic as ensuring consistency of the extra data becomes an extra responsibility for all callers, or a burden for the callee.&lt;/li&gt;
	&lt;li&gt;Ideally, a command like &lt;tt&gt;db.coll.update({_id:1}, { x : 1})&lt;/tt&gt;  would never even need to read record `1`. So, rather than passing around the old document more, we may want to pass it around less.&lt;/li&gt;
	&lt;li&gt;It would seem that the storage engine&apos;s `recoveryUnit` could just hold on to the pointer or the length itself when `dataFor` is  called if that is an optimization that helps the storage engine.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;  -Geert&lt;/p&gt;</comment>
                            <comment id="847851" author="igor" created="Tue, 10 Mar 2015 18:22:58 +0000"  >&lt;p&gt;It would be great to get this in. My recent testing on Parse workload shows that there are periods where mongo+rocks is very CPU-bound (lots of cached queries coming in). Any CPU that we can save is meaningful.&lt;/p&gt;</comment>
                            <comment id="847173" author="chengas123" created="Tue, 10 Mar 2015 01:34:13 +0000"  >&lt;p&gt;@Benety Goh think we could reopen this for consideration now that the 3.0 release is out?&lt;/p&gt;</comment>
                            <comment id="833556" author="benety.goh" created="Fri, 20 Feb 2015 15:01:11 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=chengas123&quot; class=&quot;user-hover&quot; rel=&quot;chengas123&quot;&gt;chengas123&lt;/a&gt;, let&apos;s discuss after 3.0 is released.&lt;/p&gt;</comment>
                            <comment id="832675" author="chengas123" created="Thu, 19 Feb 2015 15:18:39 +0000"  >&lt;p&gt;@Benety, do you think it&apos;d be an appropriate time to consider the patch now with the benchmarks available and the 3.0 branch cut?&lt;/p&gt;</comment>
                            <comment id="827000" author="gevorg_voskanyan" created="Wed, 11 Feb 2015 18:15:40 +0000"  >&lt;p&gt;The new branch for this is here: &lt;a href=&quot;https://github.com/gevorgvoskanyan/mongo/tree/server-15793_1&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/gevorgvoskanyan/mongo/tree/server-15793_1&lt;/a&gt;&lt;br/&gt;
I can make a pull request from it at any time, just let me know when.&lt;/p&gt;</comment>
                            <comment id="824480" author="igor" created="Sun, 8 Feb 2015 23:35:44 +0000"  >&lt;p&gt;@Ben I&apos;m assuming the performance improvement is in the case when the entire DB is cached. We shouldn&apos;t be paying too much cost on I/O-bound workloads since that block is likely to be present in cache (as it was recently read).&lt;/p&gt;

&lt;p&gt;However, CPU improvement should be substantial and I&apos;m excited about your results. It would be great to get this in 3.0, but I understand Mongo&apos;s decision to postpone the decision after 3.0, since they are only applying finishing touches.&lt;/p&gt;</comment>
                            <comment id="824163" author="chengas123" created="Sat, 7 Feb 2015 07:42:12 +0000"  >&lt;p&gt;This made a pretty big difference. 29% performance improvement in one test I ran and 33% performance improvement in the other test I ran.&lt;/p&gt;

&lt;p&gt;Numbers are in sysbench transactions per second&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;&amp;nbsp;&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;5 indexed &amp;amp; 5 un-indexed updates per transaction&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;25 indexed updates per transaction&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Vanilla RocksDB&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;255.94&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;103.68&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Patched RocksDB&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;332.08&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;138.44&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;


&lt;p&gt;I found some benchmarking tools on the WiredTiger wiki that I used to run these tests. I created a write up in this blog post describing how I ran them&lt;br/&gt;
&lt;a href=&quot;https://blog.connectifier.com/how-we-patched-mongodb-rocksdb-to-boost-performance/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://blog.connectifier.com/how-we-patched-mongodb-rocksdb-to-boost-performance/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I noticed that there&apos;s a branch for 3.0 now and the changes going into master seem to be for 3.1. Perhaps we would be able to reopen the PR at this point?&lt;/p&gt;</comment>
                            <comment id="817492" author="chengas123" created="Fri, 30 Jan 2015 16:24:01 +0000"  >&lt;p&gt;Thanks for clarifying. I&apos;ll check back in after 3.0. I haven&apos;t gotten to do any performance testing yet.&lt;/p&gt;</comment>
                            <comment id="817487" author="benety.goh" created="Fri, 30 Jan 2015 16:20:05 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=chengas123&quot; class=&quot;user-hover&quot; rel=&quot;chengas123&quot;&gt;chengas123&lt;/a&gt;,&lt;/p&gt;

&lt;p&gt;Let&apos;s discuss re-opening the PR after 3.0. You alluded to doing some performance testing in the PR - do you have any results to share with us on the impact of these changes?&lt;/p&gt;

&lt;p&gt;We haven&apos;t abandoned those PRs - just busy with 3.0 at the moment.&lt;/p&gt;</comment>
                            <comment id="816942" author="chengas123" created="Thu, 29 Jan 2015 21:55:30 +0000"  >&lt;p&gt;Could we re-open this ticket? I&apos;d really like to see Gevorg&apos;s change to update RocksDB make it&apos;s way in after 3.0 comes out. It&apos;s such a clean, isolated change and has such a huge advantage of hitting the disk far less often&lt;/p&gt;

&lt;p&gt;I understand waiting until 3.0 is released to make any changes, but I think it&apos;d be nice to leave the PR open until then. There are plenty of tickets and even some PRs that are a couple years old and completely abandoned that are still open, so I don&apos;t see why we&apos;d rush to close this&lt;/p&gt;</comment>
                            <comment id="811821" author="benety.goh" created="Fri, 23 Jan 2015 16:33:49 +0000"  >&lt;p&gt;We are closing this ticket for now because we are unable to accept the pull requests &lt;a href=&quot;https://github.com/mongodb/mongo/pull/837&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;#837&lt;/a&gt; and &lt;a href=&quot;https://github.com/mongodb/mongo/pull/912&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;#912&lt;/a&gt; in their current form.&lt;/p&gt;

&lt;p&gt;We can always reopen this ticket in the future if we learn more about the potential benefits of the proposed change.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="183226">SERVER-17223</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="165247">SERVER-15794</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10220">
                    <name>Tested</name>
                                            <outwardlinks description="tested by">
                                                        </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>13.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Fri, 23 Jan 2015 16:33:49 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        8 years, 43 weeks, 5 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>chengas123</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            8 years, 43 weeks, 5 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>benety.goh@mongodb.com</customfieldvalue>
            <customfieldvalue>chengas123</customfieldvalue>
            <customfieldvalue>geert.bosch@mongodb.com</customfieldvalue>
            <customfieldvalue>gevorg_voskanyan</customfieldvalue>
            <customfieldvalue>igor</customfieldvalue>
            <customfieldvalue>john.esmet@gmail.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrlkyn:</customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>144247</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|hsgjmv:</customfieldvalue>

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