<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:47:15 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-37863] Implement sleep time calculation mechanism</title>
                <link>https://jira.mongodb.org/browse/SERVER-37863</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Add a new mechanism that calculates the replication lag periodically, and uses this lag to determine how much time writes on the primary should sleep. This mechanism will be used to assist in throttling writes on the primary when the replication lag gets sufficiently large. &lt;/p&gt;</description>
                <environment></environment>
        <key id="627632">SERVER-37863</key>
            <summary>Implement sleep time calculation mechanism</summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</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="2">Won&apos;t Fix</resolution>
                                        <assignee username="backlog-server-execution">Backlog - Storage Execution Team</assignee>
                                    <reporter username="maria.vankeulen@mongodb.com">Maria van Keulen</reporter>
                        <labels>
                    </labels>
                <created>Thu, 1 Nov 2018 15:32:00 +0000</created>
                <updated>Tue, 6 Dec 2022 03:14:27 +0000</updated>
                            <resolved>Wed, 20 Feb 2019 18:40:09 +0000</resolved>
                                                                    <component>Replication</component>
                                        <votes>0</votes>
                                    <watches>6</watches>
                                                                                                                <comments>
                            <comment id="2157357" author="maria.vankeulen" created="Wed, 20 Feb 2019 18:40:09 +0000"  >&lt;p&gt;Closing this ticket, since it is specific to a flow control implementation that we chose not to pursue. &lt;/p&gt;</comment>
                            <comment id="2072211" author="maria.vankeulen" created="Mon, 26 Nov 2018 22:31:54 +0000"  >&lt;p&gt;Per a conversation with Andy, we do not want to use OpTimes to calculate replication lag because certain user errors would be able to significantly skew the apparent calculated lag. The lag might appear to be 0 for weeks or briefly spike to be over a year. Using the wall clock times added in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-34598&quot; title=&quot;Add millisecond-granularity wallclock times for the various metrics in replSetGetStatus&amp;#39;s optimes subdocument&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-34598&quot;&gt;&lt;del&gt;SERVER-34598&lt;/del&gt;&lt;/a&gt; would avoid these errors.&lt;/p&gt;</comment>
                            <comment id="2071484" author="judah.schvimer" created="Mon, 26 Nov 2018 16:17:29 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=maria.vankeulen&quot; class=&quot;user-hover&quot; rel=&quot;maria.vankeulen&quot;&gt;maria.vankeulen&lt;/a&gt;, I expect the equivalent millisecond granularity optimes will be stored in the TopologyCoordinator as well for consistency and easy subtraction.&lt;/p&gt;</comment>
                            <comment id="2071482" author="maria.vankeulen" created="Mon, 26 Nov 2018 16:15:55 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=judah.schvimer&quot; class=&quot;user-hover&quot; rel=&quot;judah.schvimer&quot;&gt;judah.schvimer&lt;/a&gt; We had originally planned to calculate the replication lag using these optimes, but due to various issues with optimes we have decided to implement &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-34598&quot; title=&quot;Add millisecond-granularity wallclock times for the various metrics in replSetGetStatus&amp;#39;s optimes subdocument&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-34598&quot;&gt;&lt;del&gt;SERVER-34598&lt;/del&gt;&lt;/a&gt; as part of this project and rely on these wall clock times to calculate the lag.&lt;/p&gt;</comment>
                            <comment id="2071427" author="judah.schvimer" created="Mon, 26 Nov 2018 15:53:47 +0000"  >&lt;p&gt;The topology coordinator has the majority commit point and the last applied optime. We should be able to calculate majority commit point lag simply by subtracting these two values.&lt;/p&gt;</comment>
                            <comment id="2049444" author="maria.vankeulen" created="Thu, 1 Nov 2018 20:33:44 +0000"  >&lt;p&gt;I understand your point. It seems that having this occur in a separate thread is not strictly necessary.&lt;/p&gt;</comment>
                            <comment id="2049385" author="schwerin" created="Thu, 1 Nov 2018 19:46:42 +0000"  >&lt;p&gt;While I&apos;m in favor of not calculating the interval every time, it seems like calling a function to fetch the interval, which might if it chooses to recalculate the interval, would server the desired purpose without requiring a thread or periodic task.&lt;/p&gt;</comment>
                            <comment id="2049359" author="maria.vankeulen" created="Thu, 1 Nov 2018 19:27:14 +0000"  >&lt;p&gt;I have updated the ticket description to hopefully clarify the intent of this work.&lt;/p&gt;</comment>
                            <comment id="2049145" author="maria.vankeulen" created="Thu, 1 Nov 2018 16:34:14 +0000"  >&lt;p&gt;The throttling is presently planned to happen at the global lock level (before the global lock is acquired for a write operation), so the intent for putting replication lag calculation in its own thread was to not clutter up the global lock acquisition code with lag calculation handling. Additionally, the lag does not need to be calculated every time the global lock is acquired, so we discussed that a periodic runner thread would be a good way to calculate it at specific intervals.&lt;/p&gt;</comment>
                            <comment id="2049111" author="schwerin" created="Thu, 1 Nov 2018 16:16:07 +0000"  >&lt;p&gt;I&apos;m not clear why you need a thread for this. The topology coordinator keeps an up-to-date table with the information needed to derive the current majority replication lag in constant time, I believe.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                            <outwardlinks description="depends on">
                                        <issuelink>
            <issuekey id="627633">SERVER-37864</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>10.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</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="25136"><![CDATA[Storage Execution]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 1 Nov 2018 16:16:07 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        4 years, 51 weeks 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/SERVER-37864'>SERVER-37864</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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-763</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>alexander.golin@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            4 years, 51 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>schwerin@mongodb.com</customfieldvalue>
            <customfieldvalue>backlog-server-execution</customfieldvalue>
            <customfieldvalue>judah.schvimer@mongodb.com</customfieldvalue>
            <customfieldvalue>maria.vankeulen@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hubtp3:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hubmyv:</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_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="2628">Storage NYC 2018-12-03</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|hubfyf:</customfieldvalue>

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