<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:32:13 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-53931] Investigate how to cancel recipients cloning/applying in resharding</title>
                <link>https://jira.mongodb.org/browse/SERVER-53931</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Goal: determine how to effectively interrupt recipients cloning/applying in resharding.&lt;/p&gt;


&lt;p&gt;It may be useful to look more into cancellation tokens and whether those could be used for such a task.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1595825">SERVER-53931</key>
            <summary>Investigate how to cancel recipients cloning/applying in resharding</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="haley.connelly@mongodb.com">Haley Connelly</assignee>
                                    <reporter username="haley.connelly@mongodb.com">Haley Connelly</reporter>
                        <labels>
                            <label>PM-234-M3</label>
                            <label>PM-234-T-error-flow</label>
                    </labels>
                <created>Wed, 20 Jan 2021 21:15:15 +0000</created>
                <updated>Sun, 29 Oct 2023 21:58:36 +0000</updated>
                            <resolved>Mon, 15 Mar 2021 17:59:55 +0000</resolved>
                                                    <fixVersion>4.9.0</fixVersion>
                                    <component>Sharding</component>
                                        <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="3664938" author="xgen-internal-githook" created="Mon, 15 Mar 2021 17:49:12 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Haley Connelly&apos;, &apos;email&apos;: &apos;haley.connelly@mongodb.com&apos;, &apos;username&apos;: &apos;haleyConnelly&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-53931&quot; title=&quot;Investigate how to cancel recipients cloning/applying in resharding&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-53931&quot;&gt;&lt;del&gt;SERVER-53931&lt;/del&gt;&lt;/a&gt; Use cancelationTokens for resharding recipient replication components&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/67ff8452c4172dbbfd2199df2dc349eb739b7bf1&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/67ff8452c4172dbbfd2199df2dc349eb739b7bf1&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3642750" author="haley.connelly" created="Tue, 2 Mar 2021 18:57:43 +0000"  >&lt;p&gt;This ticket will now focus on making sure cancel tokens are passed and periodically checked for the cloner, oplog applier, txn cloner, and the oplog fetcher.&#160;&lt;/p&gt;</comment>
                            <comment id="3607908" author="haley.connelly" created="Tue, 9 Feb 2021 21:26:11 +0000"  >&lt;p&gt;For now, there isn&apos;t a POC with this because priorities have shifted elsewhere.&lt;/p&gt;</comment>
                            <comment id="3607905" author="haley.connelly" created="Tue, 9 Feb 2021 21:25:32 +0000"  >&lt;p&gt;Summary of plan for cancellation tokens:&lt;/p&gt;

&lt;p&gt;The idea is that resharding state machines will have 2 cancellation tokens. A posToken, the token passed in from the PrimaryOnlyService instances run method (eg&#160;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/d99d2428027fcc95478300c2da84a4ca554fdcbd/src/mongo/db/s/resharding/resharding_coordinator_service.cpp#L878&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;ReshardingCoordinatorService::ReshardingCoordinator::run()&lt;/a&gt; ), and an abortToken, a token derived from a cancelation source that takes in the posToken.&lt;/p&gt;

&lt;p&gt;When there is a stepdown, the posToken will be canceled. When there is an unrecoverable error, the resharding instance will cancel the abortToken.&#160;&lt;/p&gt;

&lt;p&gt;Similar to&#160;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/d99d2428027fcc95478300c2da84a4ca554fdcbd/src/mongo/db/repl/tenant_migration_donor_service.cpp#L91&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;checkIfReceivedDonorAbortMigration()&lt;/a&gt; in tenant_migration, resharding should have a method that differentiates between an unrecoverable error&#160; versus a recoverable error via the tokens.&lt;/p&gt;

&lt;p&gt;Recoverable error (failover/ stepdown)&lt;br/&gt;
If the posToken and the abortToken are canceled, then a recoverable error has occurred. This is because the abortToken is created as a child of the posToken source - if the posToken is canceled, the abortToken automatically gets canceled as well.&lt;/p&gt;

&lt;p&gt;Unrecoverable error (abort resharding operation entirely)&lt;br/&gt;
The abortToken is canceled, but the posToken is not.&lt;br/&gt;
Ex: inside the ReshardingDonorService::onReshardingFieldsChanges(), the updated coordinator document contains an abortReason. Inside the method, the abortToken get&apos;s canceled with the abortReason. Inside the main run() future chain for the donor state machine, .onError() knows to start cleaning up the DonorDocument and various collections created for the operation (abort the operation entirely) because abortToken is canceled while posToken is alive.&#160;&lt;/p&gt;



&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="3576004" author="max.hirschhorn@10gen.com" created="Thu, 21 Jan 2021 17:01:51 +0000"  >&lt;p&gt;Marking this as 1 point so that no more than 1 week is spent on it before reporting findings to the group.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="1639426">SERVER-54943</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1581414">SERVER-53592</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>5.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.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>Thu, 21 Jan 2021 17:01:51 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        2 years, 47 weeks, 2 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_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-234</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>
                            2 years, 47 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>haley.connelly@mongodb.com</customfieldvalue>
            <customfieldvalue>max.hirschhorn@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hyqhwv:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hyctjr:</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="4485">Sharding 2021-02-22</customfieldvalue>
    <customfieldvalue id="4486">Sharding 2021-03-08</customfieldvalue>
    <customfieldvalue id="4487">Sharding 2021-03-22</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10555" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</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|hyq467:</customfieldvalue>

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