<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:16:01 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-27724] Explore whether we can further minimize chunk metadata reloads on shards</title>
                <link>https://jira.mongodb.org/browse/SERVER-27724</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Since we&apos;re persisting chunk metadata to a shard collection, it would be good to minimize chunk metadata reloads. The code has been around for a long time, not particularly modified, and unexamined. We may have made higher level changes that make full reloads unnecessary now.&lt;/p&gt;</description>
                <environment></environment>
        <key id="346463">SERVER-27724</key>
            <summary>Explore whether we can further minimize chunk metadata reloads on shards</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="9">Done</resolution>
                                        <assignee username="dianna.hohensee@mongodb.com">Dianna Hohensee</assignee>
                                    <reporter username="dianna.hohensee@mongodb.com">Dianna Hohensee</reporter>
                        <labels>
                    </labels>
                <created>Tue, 17 Jan 2017 22:21:48 +0000</created>
                <updated>Wed, 31 Jan 2018 14:55:14 +0000</updated>
                            <resolved>Thu, 18 Jan 2018 17:56:08 +0000</resolved>
                                                    <fixVersion>3.6.3</fixVersion>
                    <fixVersion>3.7.2</fixVersion>
                                    <component>Sharding</component>
                                        <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="1778031" author="dianna.hohensee" created="Thu, 18 Jan 2018 17:55:44 +0000"  >&lt;p&gt;Marking this as complete with the moveChunk and splitChunk improvements, but without improvements to mergeChunk. The CR requires more work, and it&apos;s not worth it to us to do spend further time making the improvements for little profit. Particularly because we intend to make chunk operation changes that must be considered in this mergeChunk refactor, but are weakly defined at this time.&lt;/p&gt;</comment>
                            <comment id="1746911" author="xgen-internal-githook" created="Fri, 8 Dec 2017 16:13:31 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Dianna Hohensee&apos;, &apos;email&apos;: &apos;dianna.hohensee@10gen.com&apos;, &apos;username&apos;: &apos;DiannaHohensee&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-27724&quot; title=&quot;Explore whether we can further minimize chunk metadata reloads on shards&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-27724&quot;&gt;&lt;del&gt;SERVER-27724&lt;/del&gt;&lt;/a&gt; Minimize split chunk command routing table refreshes&lt;/p&gt;

&lt;p&gt;(cherry picked from commit c9a30dfc4dcf383131ae059b154968a302fbe17c)&lt;br/&gt;
Branch: v3.6&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/d2f82574a23f2eaf6504baa07233af6375336382&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/d2f82574a23f2eaf6504baa07233af6375336382&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1736385" author="xgen-internal-githook" created="Tue, 28 Nov 2017 18:42:01 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Dianna Hohensee&apos;, &apos;username&apos;: &apos;DiannaHohensee&apos;, &apos;email&apos;: &apos;dianna.hohensee@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-27724&quot; title=&quot;Explore whether we can further minimize chunk metadata reloads on shards&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-27724&quot;&gt;&lt;del&gt;SERVER-27724&lt;/del&gt;&lt;/a&gt; Minimize split chunk command routing table refreshes&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/c9a30dfc4dcf383131ae059b154968a302fbe17c&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/c9a30dfc4dcf383131ae059b154968a302fbe17c&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1725384" author="dianna.hohensee" created="Tue, 14 Nov 2017 17:22:15 +0000"  >&lt;p&gt;Ideally, steps (6-9) of the shard split command move to the mongos split command, and (1) goes to the config split commit (already have &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-25086&quot; title=&quot;Remove distlock acquisition from split and merge chunk&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-25086&quot;&gt;&lt;del&gt;SERVER-25086&lt;/del&gt;&lt;/a&gt;), and the mongos goes directly to the config, ignoring the shard, which really shouldn&apos;t have to care about splits since it&apos;s just metadata changes. Some logic must remain on the shard so that it can run auto-split operations, calling the config commit split command.&lt;/p&gt;</comment>
                            <comment id="1725366" author="dianna.hohensee" created="Tue, 14 Nov 2017 17:12:38 +0000"  >&lt;p&gt;So splitChunk on the shard will&lt;br/&gt;
1) take distlock&lt;br/&gt;
2) force a metadata refresh&lt;br/&gt;
3) check collection is sharded, epoch is as mongos expected, split keys are NumberLong if hashed key pattern, chunk being split is valid&lt;br/&gt;
4) send config commit command&lt;br/&gt;
5) post-commit refresh - always refresh regardless of success or failure of commit command&lt;/p&gt;

&lt;p&gt;6) sending the command failed, return error&lt;br/&gt;
7) stale epoch error, return StaleEpoch error&lt;br/&gt;
8) if error, check post-command refreshed metadata to see if commit succeeded anyhow&lt;/p&gt;

&lt;p&gt;9) top chunk optimization, goes and grabs a range to return to the user as a moving suggestion if global min/max keys are in the chunk that was split.&lt;/p&gt;

&lt;p&gt;The post commit refresh (5) can be eliminated for successful commit split commands. The shard&apos;s moveChunk command refreshes prior to starting/checking command parameters. It seems like it&apos;d also be fine to move (3) checks to the config commit split command, and skip the shard command start refresh (2), because the refresh is a round trip to the config server, so might as well make it the commit that does the roundtrip.&lt;/p&gt;

&lt;p&gt;The (mongos) cluster split command forces a refresh at start, and then ensures that the routing table it used for a successful split command to the shard is invalidated. The invalidation at the end seems superfluous, as the mongos won&apos;t misroute because of it.&lt;/p&gt;</comment>
                            <comment id="1722620" author="kaloian.manassiev" created="Fri, 10 Nov 2017 15:54:23 +0000"  >&lt;p&gt;With the recent customer cases that we have seen, it appears that the auto-split behaviour causes stalls due to metadata refresh. Because of this, I also find it prudent to try and minimize these.&lt;/p&gt;

&lt;p&gt;What you propose seems reasonable. Perhaps we can just update the metadata on the config server, but don&apos;t perform refresh of the local filtering/routing metadata.&lt;/p&gt;</comment>
                            <comment id="1608543" author="dianna.hohensee" created="Wed, 28 Jun 2017 13:32:40 +0000"  >&lt;p&gt;Maybe instead of trying to reduce refreshes, we just make the code that invalidates the secondary catalog cache smarter: only invalidate if there&apos;s a major version number or epoch change.&lt;/p&gt;</comment>
                            <comment id="1599197" author="dianna.hohensee" created="Fri, 16 Jun 2017 14:51:54 +0000"  >&lt;p&gt;Just realized that the title and description talked about &apos;full&apos; reloads. Now I get the question. Removed that bit, as I want to minimize the incremental loads.&lt;/p&gt;</comment>
                            <comment id="1580974" author="dianna.hohensee" created="Fri, 26 May 2017 16:29:39 +0000"  >&lt;p&gt;CatalogCache changes didn&apos;t change chunk operation refresh behavior. We still do refresh on the shard twice, before and after any split/merge/move operations. I believe it was always incremental, if possible.&lt;/p&gt;</comment>
                            <comment id="1580931" author="kaloian.manassiev" created="Fri, 26 May 2017 15:46:29 +0000"  >&lt;p&gt;Is this still a problem with the changes to the catalog cache, which always favour incremental refresh?&lt;/p&gt;</comment>
                            <comment id="1531506" author="dianna.hohensee" created="Thu, 23 Mar 2017 18:01:58 +0000"  >&lt;p&gt;split and merge cause refresh, which could be eliminated and replaced with additional moveChunk command logic &amp;#8211; such as refresh at start of moveChunk, or chunk commit logic.&lt;/p&gt;

&lt;p&gt;In general, limit when we must refresh. Arguably only need to refresh when shard is involved in a migration, donating or receiving data.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10420">
                    <name>Backports</name>
                                            <outwardlinks description="backported by">
                                                        </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="301418">SERVER-25086</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>11.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_12450" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Backport Requested</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="15141"><![CDATA[v3.6]]></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>Fri, 26 May 2017 15:46:29 +0000</customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            6 years, 3 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>dianna.hohensee@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>kaloian.manassiev@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|ht147z:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hte7o7:</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="1316">Sharding 2017-01-02</customfieldvalue>
    <customfieldvalue id="1452">Sharding 2017-02-13</customfieldvalue>
    <customfieldvalue id="1615">Sharding 2017-04-17</customfieldvalue>
    <customfieldvalue id="1616">Sharding 2017-05-08</customfieldvalue>
    <customfieldvalue id="1980">Sharding 2017-12-04</customfieldvalue>
    <customfieldvalue id="2049">Storage 2018-01-01</customfieldvalue>
    <customfieldvalue id="2063">Sharding 2017-12-18</customfieldvalue>
    <customfieldvalue id="2075">Storage 2018-01-15</customfieldvalue>
    <customfieldvalue id="2094">Storage 2018-01-29</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|hs4itb:</customfieldvalue>

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