<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:09:11 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-45577] Submit range deletion tasks using fixed executor</title>
                <link>https://jira.mongodb.org/browse/SERVER-45577</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;h2&gt;&lt;a name=&quot;UpdatedDescription&quot;&gt;&lt;/a&gt;Updated Description&lt;/h2&gt;

&lt;p&gt;The task to submit range deletions was scheduled using an arbitrary sharding executor to avoid deadlocks in unit tests that involve metadata refreshes. If the unit tests use mocks for the refreshes instead, the deletions can be scheduled on the fixed sharding executor while still avoiding deadlocks.&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;OriginalDescription&quot;&gt;&lt;/a&gt;Original Description&lt;/h2&gt;

&lt;p&gt;The task to submit range deletions may need to force a refresh if the filtering metadata is unknown, so we should add a way for the task to wait for the refresh without blocking in a thread pool thread.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1091006">SERVER-45577</key>
            <summary>Submit range deletion tasks using fixed executor</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="13201">Fixed</resolution>
                                        <assignee username="jack.mulrow@mongodb.com">Jack Mulrow</assignee>
                                    <reporter username="esha.maharishi@mongodb.com">Esha Maharishi</reporter>
                        <labels>
                    </labels>
                <created>Tue, 14 Jan 2020 21:26:17 +0000</created>
                <updated>Sun, 29 Oct 2023 22:13:15 +0000</updated>
                            <resolved>Wed, 12 Feb 2020 14:06:58 +0000</resolved>
                                                    <fixVersion>4.3.4</fixVersion>
                                    <component>Sharding</component>
                                        <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="2864766" author="xgen-internal-githook" created="Tue, 11 Feb 2020 16:19:47 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;username&apos;: &apos;jsmulrow&apos;, &apos;name&apos;: &apos;Jack Mulrow&apos;, &apos;email&apos;: &apos;jack.mulrow@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-45577&quot; title=&quot;Submit range deletion tasks using fixed executor&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-45577&quot;&gt;&lt;del&gt;SERVER-45577&lt;/del&gt;&lt;/a&gt; Submit range deletion tasks on fixed executor&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/dc1270c064fa71529d33395bd031c5965fba2a0b&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/dc1270c064fa71529d33395bd031c5965fba2a0b&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2856217" author="esha.maharishi@10gen.com" created="Mon, 10 Feb 2020 15:09:20 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=jack.mulrow&quot; class=&quot;user-hover&quot; rel=&quot;jack.mulrow&quot;&gt;jack.mulrow&lt;/a&gt; I didn&apos;t totally follow what you&apos;re saying about the CatalogCacheLoaderMock, but if you have an idea, go for it.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;Edit: Oh I see, using the CatalogCacheLoaderMock instead of the real CatalogCache would allow us to avoid the deadlock.&lt;/p&gt;</comment>
                            <comment id="2842883" author="jack.mulrow" created="Fri, 7 Feb 2020 21:53:42 +0000"  >&lt;p&gt;I tried using a real ThreadPool and wasn&apos;t able to make it work, but I noticed we already have a &lt;a href=&quot;https://github.com/mongodb/mongo/blob/b5f6ba4116/src/mongo/db/s/catalog_cache_loader_mock.h#L41&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;CatalogCacheLoaderMock&lt;/a&gt; class, which I think I can use to get around this issue instead, since it&apos;s the calls through the CatalogCache to &lt;a href=&quot;https://github.com/mongodb/mongo/blob/b5f6ba4116/src/mongo/s/client/shard_remote.cpp#L309&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;ShardRemote::_runExhaustiveCursorCommand() that use the fixed executor&lt;/a&gt;&#160;and are causing the unit tests to hang when we also use the fixed executor to schedule the deletion. I&apos;ll give this approach a shot next week.&lt;/p&gt;</comment>
                            <comment id="2781595" author="esha.maharishi@10gen.com" created="Mon, 3 Feb 2020 23:53:27 +0000"  >&lt;p&gt;Hmm, that&apos;s true, I forgot about the arbitrary TaskExecutor TODO.&lt;/p&gt;

&lt;p&gt;I don&apos;t think we should leave it as the arbitrary executor, since unlike the fixed executor, which &lt;a href=&quot;https://github.com/mongodb/mongo/blob/74c4bcd1d353434bb3b89fd7db3604090b91775d/src/mongo/s/sharding_initialization.cpp#L114&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;uses a ThreadPool with unlimited size&lt;/a&gt;, the arbitrary executors &lt;a href=&quot;https://github.com/mongodb/mongo/blob/74c4bcd1d353434bb3b89fd7db3604090b91775d/src/mongo/s/sharding_initialization.cpp#L175&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;use a NetworkInterfaceThreadPool&lt;/a&gt;, which I believe &lt;a href=&quot;https://github.com/mongodb/mongo/blob/74c4bcd1d353434bb3b89fd7db3604090b91775d/src/mongo/executor/network_interface_thread_pool.h#L46-L47&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;uses a single thread&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I checked if it&apos;s possible to make unit tests use a fixed executor with a larger thread pool size, but it doesn&apos;t seem easy to do this, since unit tests &lt;a href=&quot;https://github.com/mongodb/mongo/blob/74c4bcd1d353434bb3b89fd7db3604090b91775d/src/mongo/s/sharding_mongod_test_fixture.cpp#L173&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;use&lt;/a&gt; an executor with a &lt;a href=&quot;https://github.com/mongodb/mongo/blob/74c4bcd1d353434bb3b89fd7db3604090b91775d/src/mongo/executor/thread_pool_task_executor_test_fixture.cpp#L52&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;ThreadPoolMock&lt;/a&gt;, which seems to have &lt;a href=&quot;https://github.com/mongodb/mongo/blob/74c4bcd1d353434bb3b89fd7db3604090b91775d/src/mongo/executor/thread_pool_mock.h#L84&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;an explicit single worker thread&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Maybe we can change the unit tests to use a fixed executor with a real ThreadPool, like &lt;a href=&quot;https://github.com/mongodb/mongo/blob/master/src/mongo/db/repl/initial_syncer_test.cpp#L332-L339&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;initial_syncer_test.cpp does&lt;/a&gt;? I&apos;m not sure if this would work, but could you give this a try and see if it&apos;s possible?&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.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>Mon, 3 Feb 2020 21:45:07 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        4 years, 1 day 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_17050" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Downstream Team Attention</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="16941"><![CDATA[Not Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-812</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>luke.bonanomi@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            4 years, 1 day ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>esha.maharishi@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>jack.mulrow@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hwhdif:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr6qjb:</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="3571">Sharding 2020-02-10</customfieldvalue>
    <customfieldvalue id="3572">Sharding 2020-02-24</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|hwgzrr:</customfieldvalue>

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