<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:24:03 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-50937] Make resharding coordinator support recovery</title>
                <link>https://jira.mongodb.org/browse/SERVER-50937</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;&lt;b&gt;Needs further investigation. Contact &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=blake.oler&quot; class=&quot;user-hover&quot; rel=&quot;blake.oler&quot;&gt;blake.oler&lt;/a&gt; before starting work on this.&lt;/b&gt;&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;Notes&quot;&gt;&lt;/a&gt;Notes&lt;/h3&gt;
&lt;ol&gt;
	&lt;li&gt;It&apos;s okay for onCommit handlers to be run out of order if they have attached opTimes.&lt;/li&gt;
	&lt;li&gt;How do we ensure that the resharding coordinator is always using the latest version of the document to replace the contents on disk?&lt;/li&gt;
	&lt;li&gt;Is ensuring that promises are fulfilled on recovery as simple as updating the in-memory document after checking the future of the first promise? Would it be simpler to do away completely with an in-memory representation of the underlying document?&lt;/li&gt;
	&lt;li&gt;Need to make sure that we don&apos;t write to the temporary resharding collection entry when it should have already been removed.&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;&lt;a name=&quot;Outofdateolddescription&quot;&gt;&lt;/a&gt;Out of date old description&lt;/h3&gt;
&lt;p&gt;Introduce methods that can manually fulfill the promises in the ReshardingCoordinatorObserver for the recovery process.&lt;/p&gt;

&lt;p&gt;Create a flag for the ReshardingCoordinatorObserver, say _shouldObserveWrites, to prevent writes from fulfilling the observer&apos;s promises while in recovery.&#160;&lt;/p&gt;

&lt;p&gt;When in recovery (when the ReshardingCoordinatorService is constructed in state &amp;gt; kInitializing), construct the ReshardingCoordinatorObserver with _shouldObserveWrites to false until the ReshardingCoordinator has fully recovered and it is safe for the ReshardingCoordinatorObserver to begin observing writes again. We will flip this flag to true as a part of the recovery process (described below). Note that this means writes to config.reshardingOperations can happen before the ReshardingCoordinatorService is constructed or after its constructed but before we&apos;ve done recovery. This is okay, because the coordinator will read from disk as a part of recovery (described below).&lt;/p&gt;

&lt;p&gt;At the start of ReshardingCoordinatorService::run(), if the coordinator is recovering (its state is &amp;gt; kInitializing) do the following in order to fulfill any promises that would have been fulfilled already had we not failed over and observe any writes that came in before we started recovery:&lt;br/&gt;
1. Take the collection lock in mode S&lt;br/&gt;
2. Read config.reshardingOperations for this resharding op&lt;br/&gt;
3. Inspect the doc and fulfill any promises that should be fulfilled already&lt;br/&gt;
4. Flip &#8216;_shouldObserveWrites&#8217; to be true&lt;br/&gt;
5. Release the collection lock&lt;/p&gt;</description>
                <environment></environment>
        <key id="1474087">SERVER-50937</key>
            <summary>Make resharding coordinator support recovery</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="randolph@mongodb.com">Randolph Tan</assignee>
                                    <reporter username="haley.connelly@mongodb.com">Haley Connelly</reporter>
                        <labels>
                            <label>PM-234-M3</label>
                            <label>PM-234-T-lifecycle</label>
                    </labels>
                <created>Mon, 14 Sep 2020 22:03:06 +0000</created>
                <updated>Sun, 29 Oct 2023 22:03:12 +0000</updated>
                            <resolved>Mon, 26 Jul 2021 14:26:21 +0000</resolved>
                                                    <fixVersion>5.0.3</fixVersion>
                    <fixVersion>5.1.0-rc0</fixVersion>
                                    <component>Sharding</component>
                                        <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="4108125" author="JIRAUSER1259052" created="Wed, 6 Oct 2021 18:57:44 +0000"  >&lt;p&gt;Updating the fixversion since branching activities occurred yesterday. This ticket will be in rc0 when it&#8217;s been triggered. For more active release information, please keep an eye on #server-release. Thank you!&lt;/p&gt;</comment>
                            <comment id="3996151" author="xgen-internal-githook" created="Wed, 11 Aug 2021 20:38:42 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Randolph Tan&apos;, &apos;email&apos;: &apos;randolph@10gen.com&apos;, &apos;username&apos;: &apos;renctan&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-50937&quot; title=&quot;Make resharding coordinator support recovery&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-50937&quot;&gt;&lt;del&gt;SERVER-50937&lt;/del&gt;&lt;/a&gt; Wrap operations in resharding coordinator that contact remote nodes with WithAutomaticRetry&lt;/p&gt;

&lt;p&gt;(cherry picked from commit be9790dcf2de451d8e218f4471d2d8faa5f26aaa)&lt;br/&gt;
Branch: v5.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/2b8d36da02e582030c5c1c00c722c5e7879265c2&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/2b8d36da02e582030c5c1c00c722c5e7879265c2&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3996150" author="xgen-internal-githook" created="Wed, 11 Aug 2021 20:38:39 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Randolph Tan&apos;, &apos;email&apos;: &apos;randolph@10gen.com&apos;, &apos;username&apos;: &apos;renctan&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-50937&quot; title=&quot;Make resharding coordinator support recovery&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-50937&quot;&gt;&lt;del&gt;SERVER-50937&lt;/del&gt;&lt;/a&gt; Refactor resharding coordinator to consolidate distinct error handling into separate phases.&lt;/p&gt;

&lt;p&gt;(cherry picked from commit cbddf73dc78aa6a208fe3a43ca5e8674f67d5b87)&lt;br/&gt;
Branch: v5.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/900707746299e4684fa6b7f29beb65f6ff13b97c&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/900707746299e4684fa6b7f29beb65f6ff13b97c&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3958839" author="xgen-internal-githook" created="Thu, 22 Jul 2021 22:36:39 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Randolph Tan&apos;, &apos;email&apos;: &apos;randolph@10gen.com&apos;, &apos;username&apos;: &apos;renctan&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-50937&quot; title=&quot;Make resharding coordinator support recovery&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-50937&quot;&gt;&lt;del&gt;SERVER-50937&lt;/del&gt;&lt;/a&gt; Wrap operations in resharding coordinator that contact remote nodes with WithAutomaticRetry&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/be9790dcf2de451d8e218f4471d2d8faa5f26aaa&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/be9790dcf2de451d8e218f4471d2d8faa5f26aaa&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3921641" author="xgen-internal-githook" created="Wed, 7 Jul 2021 20:33:51 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Randolph Tan&apos;, &apos;email&apos;: &apos;randolph@10gen.com&apos;, &apos;username&apos;: &apos;renctan&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-50937&quot; title=&quot;Make resharding coordinator support recovery&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-50937&quot;&gt;&lt;del&gt;SERVER-50937&lt;/del&gt;&lt;/a&gt; Refactor resharding coordinator to consolidate distinct error handling into separate phases.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/cbddf73dc78aa6a208fe3a43ca5e8674f67d5b87&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/cbddf73dc78aa6a208fe3a43ca5e8674f67d5b87&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3501178" author="max.hirschhorn@10gen.com" created="Sat, 21 Nov 2020 21:17:15 +0000"  >&lt;p&gt;I wanted to highlight a few details which will hopefully be helpful when thinking through how to implement recovery safely.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Each later promise in ReshardingCoordinatorObserver can only be fulfilled after the previous promise was fulfilled. This is due to scheme for how the coordinator&apos;s state advances only after hearing from all donors (or from all recipients) and the coordinator&apos;s state advancing is what leads to all the donors&apos; (or all the recipients&apos;) states advancing. And so the need to order the ReshardingCoordinatorDocument from the fulfilled promises by their optime is very likely unnecessary.&lt;/li&gt;
	&lt;li&gt;Another caveat is that until a promise in ReshardingCoordinatorObserver is fulfilled, the coordinator document on disk may have newer information than the ReshardingCoordinator::_coordinatorDoc in-memory.
	&lt;ul&gt;
		&lt;li&gt;Immediately following a promise in ReshardingCoordinatorObserver being fulfilled, the coordinator document on disk may also have newer information due to how donors and recipients communicate their error state.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;One idea and something which came up with Spencer Brody and Esha when the resharding project was first writing their primary-only services is to avoid having multiple threads write to the documents in the primary-only service-backed &lt;tt&gt;config.reshardingOperations&lt;/tt&gt; collection.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/b4de2e9b4fce34587a3c7ddb1193c43d865cfe34/src/mongo/db/s/resharding/resharding_coordinator_service.cpp#L896-L903&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;ReshardingCoordinator currently does a full-document replacement when updating its coordinator state&lt;/a&gt;. With the previously mentioned caveat for how the error state is reported, this has the potential for ReshardingCoordinator to write ReshardingCoordinator::_coordinatorDoc back to disk and effectively forget about a shard reporting its error state when another shard has already reported one.
	&lt;ul&gt;
		&lt;li&gt;Depending on how ReshardingCoordinator instructs and awaits donors and recipients to do their cleanup in the unrecoverable error case, this may or may not matter because the resharding operation is still known to have had an unrecoverable error.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;The ReshardingCoordinator doesn&apos;t need to do a full-document replacement, but doing so was suggested as being easier than managing the $sets it would otherwise need to do.&lt;/li&gt;
	&lt;li&gt;The ReshardingCoordinator doesn&apos;t need to know the DonorStateEnum or RecipientStateEnum values. It needs the shard IDs for the donors and recipients and needs the minFetchTimestamps of the donors to calculate the fetchTimestamp for the resharding operation.
	&lt;ul&gt;
		&lt;li&gt;We could split ReshardingCoordinatorDocument into two separate structs such that ReshardingCoordinatorDocument only contains the fields that ReshardingCoordinator actually writes to. Let&apos;s call the other ReshardingCoordinatorParticipantDocument.&lt;/li&gt;
		&lt;li&gt;The &lt;tt&gt;config.reshardingOperations&lt;/tt&gt; collection would be written to exclusively by ReshardingCoordinator. Donors and recipients would perform their writes to (and ReshardingCoordinatorObserver would be notified for) a new &lt;tt&gt;config.reshardingOperations.participants&lt;/tt&gt; collection.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Recovery for the ReshardingCoordinator would trigger the ReshardingCoordinatorObserver using the contents of the associated document in the &lt;tt&gt;config.reshardingOperations.participants&lt;/tt&gt; collection. The ReshardingCoordinator would be responsible for doing this in its run() rather than being an automatic part of primary-only service rebuilding the Instance.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/d0dfd00a48e83bc0e7e17d938f2578970a329304/src/mongo/db/s/resharding/resharding_op_observer.cpp#L71&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;getReshardingCoordinatorObserver()&lt;/a&gt; is called while the storage transaction for the update is still open and blocks until the service is no longer in the kRebuilding state. These constraints lead to a guarantee that &lt;a href=&quot;https://github.com/mongodb/mongo/blob/b4de2e9b4fce34587a3c7ddb1193c43d865cfe34/src/mongo/db/repl/primary_only_service.cpp#L654&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;the initial coordinator document ReshardingCoordinator receives through its constructor&lt;/a&gt; when &amp;#95;rebuildInstances() is called is from a snapshot prior to the update.&lt;/li&gt;
	&lt;li&gt;This guarantee would no longer apply if ReshardingCoordinator read a separate ReshardingCoordinatorParticipantDocument to do recovery as part of its run(). But it also doesn&apos;t need that guarantee because the first thing it would be doing in run() is reading the &lt;em&gt;latest&lt;/em&gt; version of the &lt;tt&gt;config.reshardingOperations.participants&lt;/tt&gt; collection anyway.&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10420">
                    <name>Backports</name>
                                            <outwardlinks description="backported by">
                                                        </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                            <outwardlinks description="depends on">
                                        <issuelink>
            <issuekey id="1776158">SERVER-57624</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1475372">SERVER-50960</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1667421">SERVER-55682</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="1510729">SERVER-51495</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="1925320">SERVER-61483</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="1412514">SERVER-49572</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1477562">SERVER-50982</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>6.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_12450" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Backport Requested</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="21777"><![CDATA[v5.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>Sat, 21 Nov 2020 21:17:15 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        2 years, 18 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-50960'>SERVER-50960</a></s>, <s><a href='https://jira.mongodb.org/browse/SERVER-55682'>SERVER-55682</a></s>, <s><a href='https://jira.mongodb.org/browse/SERVER-57624'>SERVER-57624</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_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, 18 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>19.0</customfieldvalue>

                        </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>
            <customfieldvalue>randolph@mongodb.com</customfieldvalue>
            <customfieldvalue>vivian.ge@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hy5td3:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hxsafr:</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="4521">Sharding 2021-07-12</customfieldvalue>
    <customfieldvalue id="4522">Sharding 2021-07-26</customfieldvalue>

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

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