<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:29:43 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-53027] Tenant migration donor should stop retrying on recipient responses that indicate the recipient wants to abort</title>
                <link>https://jira.mongodb.org/browse/SERVER-53027</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;This ticket is to update the donor to stop retrying on recipient responses that indicate the recipient wants to abort the migration.&lt;/p&gt;

&lt;p&gt;Right now the donor will &lt;a href=&quot;https://github.com/mongodb/mongo/blob/f39eb409f4f3e32b3d77b4b05bb977113c52f48c/src/mongo/db/repl/tenant_migration_donor_service.cpp#L84-L87&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;keep sending recipientSyncData until success&lt;/a&gt; (or getting a shutdown or stepdown error, but &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=jason.zhang&quot; class=&quot;user-hover&quot; rel=&quot;jason.zhang&quot;&gt;jason.zhang&lt;/a&gt; will replace those conditions with checking if the instance&apos;s cancelation token has been canceled &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-51179&quot; title=&quot;TenantMigrationDonorInstance should distinguish local and remote shutdown/stepdown errors&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-51179&quot;&gt;&lt;del&gt;SERVER-51179&lt;/del&gt;&lt;/a&gt;).&lt;/p&gt;</description>
                <environment></environment>
        <key id="1549871">SERVER-53027</key>
            <summary>Tenant migration donor should stop retrying on recipient responses that indicate the recipient wants to abort</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="andrew.shuvalov@mongodb.com">Andrew Shuvalov</assignee>
                                    <reporter username="esha.maharishi@mongodb.com">Esha Maharishi</reporter>
                        <labels>
                            <label>pm-1791_milestone-D</label>
                            <label>pm-1791_non-cloud-blocking</label>
                    </labels>
                <created>Mon, 23 Nov 2020 14:51:08 +0000</created>
                <updated>Wed, 24 Feb 2021 21:48:48 +0000</updated>
                            <resolved>Wed, 24 Feb 2021 21:48:33 +0000</resolved>
                                                                    <component>Replication</component>
                                        <votes>0</votes>
                                    <watches>7</watches>
                                                                                                                <comments>
                            <comment id="3633832" author="JIRAUSER1256988" created="Wed, 24 Feb 2021 21:48:33 +0000"  >&lt;p&gt;As discussed above for now this change is not necessary.&lt;/p&gt;</comment>
                            <comment id="3633157" author="jack.mulrow" created="Wed, 24 Feb 2021 17:42:36 +0000"  >&lt;p&gt;With Chou&apos;s changes, we already implemented the first option from Esha&apos;s first comment, right? Like she mentioned, we&apos;d need to make sure the only errors the recipient returns that aren&apos;t in the retryable category are &quot;fatal&quot; to the migration, which seems like reasonable behavior to me. That should already be the case, and if not, the stepdown testing we&apos;ll add in&#160;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-52713&quot; title=&quot;[testing] Add stepdown/kill/terminate to tenant_migration_jscore_passthrough&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-52713&quot;&gt;&lt;del&gt;SERVER-52713&lt;/del&gt;&lt;/a&gt; should flush out any errors we missed, and we can handle them as they come up. So I&apos;m fine closing this ticket without more work, &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=lingzhi.deng&quot; class=&quot;user-hover&quot; rel=&quot;lingzhi.deng&quot;&gt;lingzhi.deng&lt;/a&gt;, how does that sound to you?&lt;/p&gt;</comment>
                            <comment id="3633101" author="JIRAUSER1256988" created="Wed, 24 Feb 2021 17:23:52 +0000"  >&lt;p&gt;Hi, I have 2 questions:&lt;br/&gt;
1. &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=cheahuychou.mao&quot; class=&quot;user-hover&quot; rel=&quot;cheahuychou.mao&quot;&gt;cheahuychou.mao&lt;/a&gt; already changed the shouldStopSendingRecipientCommand() &lt;a href=&quot;https://github.com/mongodb/mongo/commit/dc3ef13edd2ec8054f97fd160e72dae5edec3061&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt; to check that the error from sending Sync to recipient is not retriable&lt;/p&gt;

&lt;p&gt;2. The code above doesn&apos;t convert the error to TenantMigrationAborted as suggested in message #1. I checked the AsyncTry() implementation used in _sendCommandToRecipient() and it doesn&apos;t provide the hook to convert one type of error to another in the callback. So the trick with converting the error could complicated, I don&apos;t know how to do it right away but it might be not worth it.&lt;/p&gt;

&lt;p&gt;Will all of the above, do you thing there is still anything to do with this ticket?&lt;/p&gt;</comment>
                            <comment id="3509190" author="esha.maharishi@10gen.com" created="Mon, 30 Nov 2020 20:32:39 +0000"  >&lt;p&gt;Oh yes, I forgot the recipient should do that &lt;a href=&quot;https://docs.google.com/document/d/1ETjPbo09TwGv7GonLYMGZ1e8lJ-g9wzWs4sHGOZ-avo/edit#bookmark=id.1u6dr6h2x84m&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;because&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;the recipient may receive &lt;em&gt;recipientForgetMigration&lt;/em&gt; before &lt;em&gt;recipientSyncData&lt;/em&gt;, since the donor may decide to abort before the recipient receives &lt;em&gt;recipientSyncData&lt;/em&gt;. In this case, &lt;em&gt;recipientForgetMigration&lt;/em&gt; inserts the state machine already marked as garbage collectable.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The only case we have right now where the donor can decide to abort is after the donor starts blocking, but what you said is probably a good idea in case that ever changes.&lt;/p&gt;</comment>
                            <comment id="3509149" author="lingzhi.deng" created="Mon, 30 Nov 2020 20:23:30 +0000"  >&lt;p&gt;That makes sense. My current implementation for the recipientForgetMigration (still in CR though) would still write a state doc marking the migration garbage collectable and return success even if the recipient hasn&apos;t received a recipientSyncData command. So we probably dont need the NoSuchTenantMigration part. But having it is fine in case I change that in my CR.&lt;br/&gt;
For recipientSyncData, I filed &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-53133&quot; title=&quot;recipientSyncData should return TenantMigrationAborted on non-retryable errors&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-53133&quot;&gt;&lt;del&gt;SERVER-53133&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="3509073" author="esha.maharishi@10gen.com" created="Mon, 30 Nov 2020 19:52:09 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=lingzhi.deng&quot; class=&quot;user-hover&quot; rel=&quot;lingzhi.deng&quot;&gt;lingzhi.deng&lt;/a&gt; , option 2 sounds good to me, and yes, repl will need to guarantee the recipient always returns TenantMigrationAborted for recipientSyncData.&lt;/p&gt;

&lt;p&gt;I think for recipientForgetMigration, the donor should keep retrying until hearing back success or NoSuchTenantMigration.&lt;/p&gt;</comment>
                            <comment id="3508404" author="lingzhi.deng" created="Mon, 30 Nov 2020 15:55:24 +0000"  >&lt;p&gt;I think doing the second option might be cleaner and more explicit. In that case, I guess we will probably need another ticket for Repl to audit the error code returned by recipientSyncData and recipientForgetMigration command?&lt;/p&gt;</comment>
                            <comment id="3507743" author="esha.maharishi@10gen.com" created="Sun, 29 Nov 2020 19:39:12 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=lingzhi.deng&quot; class=&quot;user-hover&quot; rel=&quot;lingzhi.deng&quot;&gt;lingzhi.deng&lt;/a&gt;, heads up that I filed this new &quot;cleanup&quot; ticket. I see several options:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;The donor stops retrying on any non-retryable error, where retryable is &lt;a href=&quot;https://github.com/mongodb/mongo/blob/045dd7a5857aa1b34d6fd1d2f6e3e29900010749/src/mongo/base/error_codes.yml#L23&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;defined according to error_codes.yml&lt;/a&gt;
	&lt;ul&gt;
		&lt;li&gt;This means the recipient must only return &quot;fatal&quot; (to the migration) errors.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;The recipient converts any &quot;fatal&quot; (to the migration) error to TenantMigrationAborted (while preserving the reason in the errmsg), and the donor stops retrying only on &quot;TenantMigrationAborted&quot; errors.
	&lt;ul&gt;
		&lt;li&gt;This is the TransactionCoordinator&apos;s model, where the coordinator only stops retrying on NoSuchTransaction or TransactionTooOld.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;The donor stops retrying only on a list of &quot;fatal&quot; (to the migration) errors.
	&lt;ul&gt;
		&lt;li&gt;This makes mixed-version clusters harder to handle, since a newer version recipient may return a new type of &quot;fatal&quot; error.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="1555116">SERVER-53133</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>8.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_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 30 Nov 2020 15:55:24 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        2 years, 50 weeks 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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-1791</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>andrew.shuvalov@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            2 years, 50 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>andrew.shuvalov@mongodb.com</customfieldvalue>
            <customfieldvalue>esha.maharishi@mongodb.com</customfieldvalue>
            <customfieldvalue>jack.mulrow@mongodb.com</customfieldvalue>
            <customfieldvalue>lingzhi.deng@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hyip3j:</customfieldvalue>

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

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