<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:16:42 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-70642] Avoid acquiring tickets as part of step-up</title>
                <link>https://jira.mongodb.org/browse/SERVER-70642</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;As part of step-up, we sometimes need to acquire tickets, for example when &lt;a href=&quot;https://github.com/mongodb/mongo/blob/46d15e1715071f615fe6ceb4c54cf2803f69b7fc/src/mongo/db/session/session_catalog_mongod.cpp#L543&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;aborting in-progress transactions&lt;/a&gt;, we do a &lt;a href=&quot;https://github.com/mongodb/mongo/blob/46d15e1715071f615fe6ceb4c54cf2803f69b7fc/src/mongo/db/session/session_catalog_mongod.cpp#L414-L418&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;query&lt;/a&gt; on the transaction table which results in &lt;a href=&quot;https://github.com/mongodb/mongo/blob/46d15e1715071f615fe6ceb4c54cf2803f69b7fc/src/mongo/db/concurrency/lock_state.cpp#L423&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;acquiring a ticket&lt;/a&gt; for global lock.&lt;/p&gt;

&lt;p&gt;However step-up shouldn&apos;t need to acquire tickets, we should audit the step-up (maybe step-down as well) code and remove (bypass) any unnecessary ticket acquisition.&lt;/p&gt;</description>
                <environment></environment>
        <key id="2160826">SERVER-70642</key>
            <summary>Avoid acquiring tickets as part of step-up</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</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="sean.zimmerman@mongodb.com">Sean Zimmerman</assignee>
                                    <reporter username="wenbin.zhu@mongodb.com">Wenbin Zhu</reporter>
                        <labels>
                            <label>repl-shortlist</label>
                    </labels>
                <created>Mon, 17 Oct 2022 19:28:47 +0000</created>
                <updated>Sun, 29 Oct 2023 21:31:49 +0000</updated>
                            <resolved>Fri, 10 Feb 2023 14:20:59 +0000</resolved>
                                                    <fixVersion>7.0.0-rc0</fixVersion>
                                    <component>Replication</component>
                                        <votes>1</votes>
                                    <watches>9</watches>
                                                                                                                <comments>
                            <comment id="5185136" author="xgen-internal-githook" created="Fri, 10 Feb 2023 01:41:54 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;seanzimm&apos;, &apos;email&apos;: &apos;sean.zimmerman@mongodb.com&apos;, &apos;username&apos;: &apos;seanzimm&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-70642&quot; title=&quot;Avoid acquiring tickets as part of step-up&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-70642&quot;&gt;&lt;del&gt;SERVER-70642&lt;/del&gt;&lt;/a&gt;: Add ticket acquisition skip for node step up&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/c835341f9706373fb46ba7a6fc37d9892c42a967&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/c835341f9706373fb46ba7a6fc37d9892c42a967&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5183506" author="JIRAUSER1258790" created="Thu, 9 Feb 2023 16:45:47 +0000"  >&lt;p&gt;Yep this sounds good to me.&lt;/p&gt;</comment>
                            <comment id="5182802" author="lingzhi.deng" created="Thu, 9 Feb 2023 14:27:46 +0000"  >&lt;p&gt;Thanks &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=louis.williams%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;louis.williams@mongodb.com&quot;&gt;louis.williams@mongodb.com&lt;/a&gt;. That makes sense and it aligns with my understanding. How does this sound to you &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=wenbin.zhu%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;wenbin.zhu@mongodb.com&quot;&gt;wenbin.zhu@mongodb.com&lt;/a&gt;?&lt;/p&gt;</comment>
                            <comment id="5181762" author="louis.williams" created="Thu, 9 Feb 2023 08:58:53 +0000"  >&lt;p&gt;Skipping ticket acquisition to acquire locks for these transactions makes sense. Tickets are really designed to be held by operations that are actively doing work. If an operation is not active, is blocked on something else, or idle (i.e. stashed), then we risk deadlocks by holding tickets.&lt;/p&gt;

&lt;p&gt;I believe that skipping tickets here is the correct decision. It is also important that we re-acquire a ticket for future operations on any unprepared transactions. But for prepared transactions, we need to ensure that commit and abort succeed and do not block, so it makes sense to not reacquire a ticket. Let me know if this makes sense.&lt;/p&gt;</comment>
                            <comment id="5179881" author="lingzhi.deng" created="Wed, 8 Feb 2023 19:17:42 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=wenbin.zhu%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;wenbin.zhu@mongodb.com&quot;&gt;wenbin.zhu@mongodb.com&lt;/a&gt;, I agree. So I think we should explore what that implication is and whether it is safe to do so. But from my glance earlier today, I think this should be safe because we will release the ticket immediately in step 2 of my previous comment. So it seems to me we acquire the ticket just to release it after. My understanding of flowControl/the ticket system is that it is used to prevent congestion in the WT layer.  Refreshing locks for prepared transactions isn&apos;t really a storage operation so I don&apos;t think it has to acquire tickets.&lt;/p&gt;

&lt;p&gt;And we also have &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-41980&quot; title=&quot;Non-transactional commands can deadlock with prepared transactions when the tickets are exhausted by the non-transactional write commands.&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-41980&quot;&gt;&lt;del&gt;SERVER-41980&lt;/del&gt;&lt;/a&gt; which introduced a contract of &quot;Prepared transactions should not acquire ticket on primary&quot;. So it seems to me that once a transaction is already in prepared state, we shouldn&apos;t try to reacquire tickets going forwards. And so, skipping ticket acquisition on stepUp would align with the primary behavior.&lt;/p&gt;

&lt;p&gt;But yes, I am curious what &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=louis.williams%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;louis.williams@mongodb.com&quot;&gt;louis.williams@mongodb.com&lt;/a&gt; thinks.&lt;/p&gt;</comment>
                            <comment id="5179629" author="JIRAUSER1258790" created="Wed, 8 Feb 2023 18:13:41 +0000"  >&lt;blockquote&gt;

&lt;p&gt;For this, I think we should explore using&#160;&lt;tt&gt;AcquireTicket::kSkip&lt;/tt&gt;&#160;to refresh lock on stepUp&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This kind of raises a concern: the ticket was previously filed because we thought we attempted to acquire tickets for some &lt;b&gt;auxiliary&lt;/b&gt; work during state transitions. However now it sees that we want to stop acquiring tickets for transactions that are being unstashed, which has very different safety consideration than the original. I think we may need to double check this with the execution team before deciding if we want to go with this.&lt;/p&gt;</comment>
                            <comment id="5179381" author="JIRAUSER1265594" created="Wed, 8 Feb 2023 17:08:36 +0000"  >&lt;p&gt;After digging into it more it looks like it will not work as is. The TxnResources has its own locker which needs to have priority set on it. Even without the stashLocker this wouldn&apos;t work as the priority of the opCtx isn&apos;t used at all here. I&apos;m going to make a change to fix this&lt;/p&gt;</comment>
                            <comment id="5179246" author="lingzhi.deng" created="Wed, 8 Feb 2023 16:31:19 +0000"  >&lt;p&gt;I don&apos;t think it is inaccurate. But the comment was from &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-41881&quot; title=&quot;Stashing the lock resources for prepared transactions by state transitions (step up/ step down) should not preserve the maxLockTimeout of the previous node&amp;#39;s state.  &quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-41881&quot;&gt;&lt;del&gt;SERVER-41881&lt;/del&gt;&lt;/a&gt;, so I think the comment is more about &lt;tt&gt;MaxLockTimeout&lt;/tt&gt;, not that we would always have at least one spare ticket to acquire. My understanding is that acquiring a ticket won&apos;t fail with &lt;tt&gt;MaxLockTimeout::kNotAllowed&lt;/tt&gt;, but it may block.&lt;/p&gt;</comment>
                            <comment id="5179221" author="JIRAUSER1265594" created="Wed, 8 Feb 2023 16:25:16 +0000"  >&lt;p&gt;Do we think &lt;a href=&quot;https://github.com/mongodb/mongo/blob/402799d2aed59c1fc41edee1b4a5b54ae9f7d827/src/mongo/db/transaction/transaction_participant.cpp#L1601-L1603&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;this comment&lt;/a&gt; is inaccurate? It seems to imply that ticket acquisition shouldn&apos;t fail if we are in stepup / stepdown so we shouldn&apos;t need to use AcquireTicket::kSkip&lt;/p&gt;</comment>
                            <comment id="5179128" author="lingzhi.deng" created="Wed, 8 Feb 2023 16:11:51 +0000"  >&lt;p&gt;I want to correct one thing from the description &#8211; This ticket was filed because of a HELP ticket in 4.4.15. The stack trace from HELP-38172 involved &lt;tt&gt;MongoDSessionCatalog::onStepUp()&lt;/tt&gt; and &lt;tt&gt;DBDirectClient&lt;/tt&gt;. We initially thought this was &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r4.4.15/src/mongo/db/session_catalog_mongod.cpp#L314&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;abortInProgressTransactions&lt;/tt&gt;&lt;/a&gt;. But as &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=sean.zimmerman%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;sean.zimmerman@mongodb.com&quot;&gt;sean.zimmerman@mongodb.com&lt;/a&gt; found, the &lt;tt&gt;opCtx&lt;/tt&gt; used &lt;tt&gt;MongoDSessionCatalog::onStepUp&lt;/tt&gt; &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r4.4.15/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp#L489-L491&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;already opted out from flowControl&lt;/a&gt;. So in 4.4, the &lt;tt&gt;DBDirectClient&lt;/tt&gt; called was probably from &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r4.4.15/src/mongo/db/session_catalog_mongod.cpp#L301&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;checking out the session&lt;/a&gt;. &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-62671&quot; title=&quot;[Retryability] Handle committing and aborting prepared retryable internal transaction after failover&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-62671&quot;&gt;&lt;del&gt;SERVER-62671&lt;/del&gt;&lt;/a&gt; changed that part to use &lt;a href=&quot;https://github.com/mongodb/mongo/blob/402799d2aed59c1fc41edee1b4a5b54ae9f7d827/src/mongo/db/session/session_catalog_mongod.cpp#L527-L538&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;session checkout without refresh&lt;/a&gt;. So I believe that particular bug in the HELP ticket was fixed by &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-62671&quot; title=&quot;[Retryability] Handle committing and aborting prepared retryable internal transaction after failover&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-62671&quot;&gt;&lt;del&gt;SERVER-62671&lt;/del&gt;&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;However, as part of stepUp, we also &lt;a href=&quot;https://github.com/mongodb/mongo/blob/402799d2aed59c1fc41edee1b4a5b54ae9f7d827/src/mongo/db/session/session_catalog_mongod.cpp#L539&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;reacquire locks for prepared transactions&lt;/a&gt;. As part of that, we do two things:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;We first &lt;a href=&quot;https://github.com/mongodb/mongo/blob/402799d2aed59c1fc41edee1b4a5b54ae9f7d827/src/mongo/db/transaction/transaction_participant.cpp#L1430-L1450&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;use the stashed locker to reacquire both locks and tickets&lt;/a&gt; because we use &lt;tt&gt;AcquireTicket::kNoSkip&lt;/tt&gt; to call &lt;a href=&quot;https://github.com/mongodb/mongo/blob/402799d2aed59c1fc41edee1b4a5b54ae9f7d827/src/mongo/db/transaction/transaction_participant.cpp#L1601-L1603&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;_releaseTransactionResourcesToOpCtx&lt;/tt&gt;&lt;/a&gt; on stepUp.&lt;/li&gt;
	&lt;li&gt;We then &lt;a href=&quot;https://github.com/mongodb/mongo/blob/402799d2aed59c1fc41edee1b4a5b54ae9f7d827/src/mongo/db/transaction/transaction_participant.cpp#L1612&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;stash&lt;/a&gt;&#160;the txn resources using primary style, which will&#160;release&#160;the ticket&#160;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/402799d2aed59c1fc41edee1b4a5b54ae9f7d827/src/mongo/db/transaction/transaction_participant.cpp#L1218&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;For this, I think we should explore using &lt;tt&gt;AcquireTicket::kSkip&lt;/tt&gt; to refresh lock on stepUp. But I am not entirely sure if opting out of ticket acquisition for the &lt;a href=&quot;https://github.com/mongodb/mongo/blob/402799d2aed59c1fc41edee1b4a5b54ae9f7d827/src/mongo/db/session/session_catalog_mongod.cpp#L513&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;newOpCtx&lt;/tt&gt;&lt;/a&gt; would also work here as &lt;tt&gt;_releaseTransactionResourcesToOpCtx&lt;/tt&gt; uses a stash locker. CC &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=louis.williams%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;louis.williams@mongodb.com&quot;&gt;louis.williams@mongodb.com&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=wenbin.zhu%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;wenbin.zhu@mongodb.com&quot;&gt;wenbin.zhu@mongodb.com&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=sean.zimmerman%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;sean.zimmerman@mongodb.com&quot;&gt;sean.zimmerman@mongodb.com&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4909433" author="louis.williams" created="Tue, 18 Oct 2022 12:07:27 +0000"  >&lt;p&gt;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/bc998019c79c83db140317c3e59761fdd12a8c5f/src/mongo/db/repl/replication_consistency_markers_impl.cpp#L425-L426&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;This is an example&lt;/a&gt; of the correct way to opt-out of ticket acquisition, using AdmissionPriority::kImmediate.&lt;/p&gt;

&lt;p&gt;We should exempt the step-up thread from taking tickets in this way. If individual step-up tasks are run on different OperationContexts, we may need to do something to ensure all of these sub-tasks also opt-out of tickets.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10420">
                    <name>Backports</name>
                                            <outwardlinks description="backported by">
                                                        </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                                        </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>11.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25128"><![CDATA[Replication]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12450" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Backport Requested</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25376"><![CDATA[v6.3]]></customfieldvalue>
    <customfieldvalue key="23470"><![CDATA[v6.0]]></customfieldvalue>
    <customfieldvalue key="21777"><![CDATA[v5.0]]></customfieldvalue>
    <customfieldvalue key="18953"><![CDATA[v4.4]]></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>Tue, 18 Oct 2022 12:07:27 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        51 weeks, 6 days ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_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_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>
                            51 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>lingzhi.deng@mongodb.com</customfieldvalue>
            <customfieldvalue>louis.williams@mongodb.com</customfieldvalue>
            <customfieldvalue>sean.zimmerman@mongodb.com</customfieldvalue>
            <customfieldvalue>wenbin.zhu@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i1ed7r:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i0x12o:</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_22250" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Special Downgrade Instructions Required</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="23343"><![CDATA[Not Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="6861">Repl 2023-02-06</customfieldvalue>
    <customfieldvalue id="6862">Repl 2023-02-20</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|i1dzd3:</customfieldvalue>

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