<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:26:14 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-31180] inMemory spins CPU when cache fills with dirty data</title>
                <link>https://jira.mongodb.org/browse/SERVER-31180</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;If you set up a one-node replica set with the inMemory storage engine and continuously write data, eventually you will trigger eviction threads to spin hard at 100% cpu consumption.&lt;br/&gt;
Part of this bug is that oldest_timestamp is never updated, so the cache eventually fills with update data.  However, whenever the cache fills, the inMemory storage engine should either start using a LAS file, or it should abort.  (I don&apos;t think it will be logistically possible to block, as it would probably be a deadlock.)&lt;/p&gt;</description>
                <environment></environment>
        <key id="430002">SERVER-31180</key>
            <summary>inMemory spins CPU when cache fills with dirty data</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="10038" iconUrl="https://jira.mongodb.org/images/icons/subtask.gif" description="">Backlog</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="backlog-server-storage-engines">Backlog - Storage Engines Team</assignee>
                                    <reporter username="milkie@mongodb.com">Eric Milkie</reporter>
                        <labels>
                    </labels>
                <created>Wed, 20 Sep 2017 17:16:13 +0000</created>
                <updated>Tue, 6 Dec 2022 03:51:36 +0000</updated>
                                                                            <component>Storage</component>
                    <component>WiredTiger</component>
                                        <votes>0</votes>
                                    <watches>6</watches>
                                                                                                                <comments>
                            <comment id="1679357" author="alexander.gorrod" created="Fri, 22 Sep 2017 03:30:19 +0000"  >&lt;blockquote&gt;&lt;p&gt;whenever the cache fills, the inMemory storage engine should either start using a LAS file, or it should abort.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Both of those options are difficult with inMemory storage engine.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;use the LAS file&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;The inMemory storage engine doesn&apos;t write any content to disk, and can be run on a diskless machine. The lookaside file is the WiredTiger cache overflow mechanism, and involves writing content to disk. i.e: the storage engine will stop being inMemory if we go down this route. Doing this is also quite difficult from an implementation point of view. The lookaside mechanism is paired up with the reconciliation process (i.e: the process of writing content to disk), since inMemory doesn&apos;t write content to disk we&apos;d need to make changes to how content makes it into the lookaside file.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;it should abort&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;It&apos;s also difficult for the storage engine to determine when to abort. WiredTiger is limited in what it can do by the state of things outside of the storage engine, and so can&apos;t know if the application will change something that allows progress to be made. We have a check when running in diagnostic mode that if no progress has been made for 5 minutes the process is aborted, I don&apos;t think it&apos;s necessarily what end users want. For example if a user has a replica set where a secondary node goes down for 10 minutes, and thus the commit point lags and the cache on the primary becomes full. It&apos;s not clear which behavior is preferable to the end user, but I guess that it&apos;s generally for the primary to stall until the secondary comes back online - especially with the inMemory storage engine - since bringing a node back online requires a resync.&lt;/p&gt;

&lt;p&gt;I feel like I&apos;ve thrown out a set of problems here without suggesting a solution. If this functionality was user configurable I&apos;d be much happier adding in an &quot;abort if stuck for X minutes&quot; configuration option for WiredTiger - would that be a reasonable path forward?&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="378336">SERVER-29005</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25135"><![CDATA[Storage Engines]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Fri, 22 Sep 2017 03:30:19 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        6 years, 20 weeks, 6 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>false</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>alexander.golin@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            6 years, 20 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10032" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Operating System</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10026"><![CDATA[ALL]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>alexander.gorrod@mongodb.com</customfieldvalue>
            <customfieldvalue>backlog-server-storage-engines</customfieldvalue>
            <customfieldvalue>milkie@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|htf89b:</customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_23361" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Requested By</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10750" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Steps To Reproduce</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>&lt;p&gt;1. Start Enterprise mongod:&lt;br/&gt;
&lt;tt&gt;./mongod --dbpath=/tmp --storageEngine=inMemory --replSet rs&lt;/tt&gt;&lt;br/&gt;
2. Run initiate in a shell:&lt;br/&gt;
&lt;tt&gt;./mongo&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;rs.initiate()&lt;/tt&gt;&lt;br/&gt;
3. Run a benchrun load to trigger lots of inserts:&lt;br/&gt;
3a. clone git@github.com:mongodb/mongo-perf.git&lt;br/&gt;
3b. &lt;br/&gt;
&lt;tt&gt;python benchrun.py --includeFilter &apos;Insert.JustID&apos;  -f ./testcases/&lt;b&gt;insert&lt;/b&gt;.js --trialTime 60 --trialCount 1 --writeCmd=true -w 1 -t 24 -s /path/to/mongo/shell/mongo&lt;/tt&gt;}&lt;br/&gt;
4. After about 30 seconds, observe that a few threads in mongod are spinning in eviction.  Even after the benchrun completes, the threads continue to spin.&lt;/p&gt;</customfieldvalue>

                        </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|hteucn:</customfieldvalue>

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