<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:30:50 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-32639] Arbiters in standalone replica sets can&apos;t sign or validate clusterTime with auth on once FCV checks are removed</title>
                <link>https://jira.mongodb.org/browse/SERVER-32639</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Because arbiters don&apos;t persist any data, they never replicate the &lt;tt&gt;admin.system.keys&lt;/tt&gt; collection, which replica set members read from locally to load the keys used for clusterTime signing and validation. Currently, this issue was masked in our tests because clusterTimes aren&apos;t signed or validated when FCV is not fully upgraded to v3.6, but since arbiters also don&apos;t persist the &lt;tt&gt;admin.system.version&lt;/tt&gt; collection, they never update their in-memory FCV and stay at v3.4. After we remove the FCV checks in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-32463&quot; title=&quot;Determine and remove featureCompatibilityVersion-dependent Sharding code behavior that is only relevant to the 3.4-3.6 transition&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-32463&quot;&gt;&lt;del&gt;SERVER-32463&lt;/del&gt;&lt;/a&gt;, non &lt;tt&gt;__system&lt;/tt&gt; users will be no longer be able to communicate with arbiters in standalone replica sets with auth on, unless they have the advanceClusterTime privilege or don&apos;t gossip clusterTime.&lt;/p&gt;

&lt;p&gt;This shouldn&apos;t be a problem in sharded clusters, since keys are only persisted on the CSRS and are cached in memory on every other node in the cluster.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;Implementation%3A&quot;&gt;&lt;/a&gt;Implementation:&lt;/h3&gt;
&lt;p&gt;The simplest and most efficient way is not to install logical clock if its an arbiter node: &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.7.3/src/mongo/db/db.cpp#L780&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/blob/r3.7.3/src/mongo/db/db.cpp#L780&lt;/a&gt;&lt;br/&gt;
However at the time of this check the node is not yet processed configuration and will not be able to recognize if its isArbiter or not. Hence another approach is chosen. &lt;/p&gt;

&lt;p&gt;Sharding part: &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=jack.mulrow&quot; class=&quot;user-hover&quot; rel=&quot;jack.mulrow&quot;&gt;jack.mulrow&lt;/a&gt; please ack.&lt;/p&gt;

&lt;p&gt;1. Add &lt;/p&gt;
&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;bool LogicalClock::isEnabled() const;&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;bool _isEnabled {true};  // initially is enabled to allow normal RS initialization&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;
&lt;p&gt;and&lt;/p&gt;
&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;void LogicalClock::setEnabled(bool) &lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;Alternative: do not create LogicalClock optionally anymore: I prefer to not change more than needed mostly because the performance is hurt by taking the lock every time LogicalClock data is accessed.&lt;/p&gt;

&lt;p&gt;2. Other LogicalClock public methods should invariant(_isEnabled); so there is no accidental calls to a disabled logical clock.&lt;br/&gt;
Therefor the responsibility to check is on the caller.&lt;/p&gt;

&lt;p&gt;3.Do not validate or advance logicalTime if its not enabled. &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.7.3/src/mongo/rpc/metadata.cpp#L102&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/blob/r3.7.3/src/mongo/rpc/metadata.cpp#L102&lt;/a&gt; &lt;br/&gt;
4.Do not append LogicalTime metadata if LogicalClock is not enabled at &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.7.3/src/mongo/db/service_entry_point_common.cpp#L264&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/blob/r3.7.3/src/mongo/db/service_entry_point_common.cpp#L264&lt;/a&gt;, &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.7.3/src/mongo/db/service_entry_point_common.cpp#L292&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/blob/r3.7.3/src/mongo/db/service_entry_point_common.cpp#L292&lt;/a&gt; &lt;/p&gt;


&lt;p&gt;Replication part: &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=judah.schvimer&quot; class=&quot;user-hover&quot; rel=&quot;judah.schvimer&quot;&gt;judah.schvimer&lt;/a&gt; please ack.&lt;br/&gt;
If the node is a ReplicaSet arbiter member but its sharding state is not enabled then logical clock should not be enabled. &lt;/p&gt;

&lt;p&gt;5. &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.7.3/src/mongo/db/db.cpp#L539&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/blob/r3.7.3/src/mongo/db/db.cpp#L539&lt;/a&gt; initilizes replication coordinator so it can tell if the current node is an arbiter.&lt;br/&gt;
This will be the place where to disable the logical clock if it is an arbiter.&lt;/p&gt;

&lt;p&gt;Note: Monitor keys: &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.7.3/src/mongo/db/db.cpp#L527&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/blob/r3.7.3/src/mongo/db/db.cpp#L527&lt;/a&gt; happens before this line. I dont think it can be moved later as keys may be needed for proper initialization of oplog&lt;/p&gt;
</description>
                <environment></environment>
        <key id="481225">SERVER-32639</key>
            <summary>Arbiters in standalone replica sets can&apos;t sign or validate clusterTime with auth on once FCV checks are removed</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</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="misha.tyulenev@mongodb.com">Misha Tyulenev</assignee>
                                    <reporter username="jack.mulrow@mongodb.com">Jack Mulrow</reporter>
                        <labels>
                            <label>todo_in_code</label>
                    </labels>
                <created>Wed, 10 Jan 2018 20:19:58 +0000</created>
                <updated>Mon, 30 Oct 2023 23:09:25 +0000</updated>
                            <resolved>Fri, 13 Apr 2018 00:50:40 +0000</resolved>
                                                    <fixVersion>3.6.7</fixVersion>
                    <fixVersion>3.7.4</fixVersion>
                                                        <votes>0</votes>
                                    <watches>11</watches>
                                                                                                                <comments>
                            <comment id="1953817" author="xgen-internal-githook" created="Mon, 23 Jul 2018 16:00:59 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Misha Tyulenev&apos;, &apos;email&apos;: &apos;misha@mongodb.com&apos;, &apos;username&apos;: &apos;mikety&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-32639&quot; title=&quot;Arbiters in standalone replica sets can&amp;#39;t sign or validate clusterTime with auth on once FCV checks are removed&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-32639&quot;&gt;&lt;del&gt;SERVER-32639&lt;/del&gt;&lt;/a&gt; skip signing and validating clusterTime in arbiters&lt;br/&gt;
Branch: v3.6&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/d4eb257e6acc73733becc2426fd84bae9038a62e&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/d4eb257e6acc73733becc2426fd84bae9038a62e&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1865636" author="misha.tyulenev" created="Mon, 16 Apr 2018 20:02:00 +0000"  >&lt;p&gt;While 3.6 is not affected by this issue due to another bug / feature (the arbiter node &quot;thinks&quot; that its 3.4 and skips cluster time processing) if its fixed it will open this bug. Hence I think its better to backport the fix in advance.&lt;/p&gt;</comment>
                            <comment id="1863212" author="xgen-internal-githook" created="Fri, 13 Apr 2018 00:47:12 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;email&apos;: &apos;misha@mongodb.com&apos;, &apos;name&apos;: &apos;Misha Tyulenev&apos;, &apos;username&apos;: &apos;mikety&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-32639&quot; title=&quot;Arbiters in standalone replica sets can&amp;#39;t sign or validate clusterTime with auth on once FCV checks are removed&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-32639&quot;&gt;&lt;del&gt;SERVER-32639&lt;/del&gt;&lt;/a&gt; skip signing and validating clusterTime in arbiters&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/b7b55e75bbf18bcd7e38fdee430e0fd972183f68&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/b7b55e75bbf18bcd7e38fdee430e0fd972183f68&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1861484" author="judah.schvimer" created="Wed, 11 Apr 2018 15:48:10 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=siyuan.zhou&quot; class=&quot;user-hover&quot; rel=&quot;siyuan.zhou&quot;&gt;siyuan.zhou&lt;/a&gt;, the code you linked prevents a direct reconfig from arbiter to not arbiter. Is it possible to first reconfig a node out of a replica set and then reconfig it in as an arbiter, or reconfig an arbiter out of a replica set and then reconfig it in as a normal node without restart? &lt;/p&gt;</comment>
                            <comment id="1861422" author="milkie" created="Wed, 11 Apr 2018 15:08:38 +0000"  >&lt;p&gt;Arbiters do have storage (they store the replica set config in the local database) and user writes to local db are allowed on ARBITER state nodes.  Not sure if that changes the solution possibilities here.&lt;/p&gt;</comment>
                            <comment id="1861098" author="siyuan.zhou@10gen.com" created="Wed, 11 Apr 2018 08:27:50 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=judah.schvimer&quot; class=&quot;user-hover&quot; rel=&quot;judah.schvimer&quot;&gt;judah.schvimer&lt;/a&gt;, I believe you cannot convert a secondary to arbiter without shutting down the server via &lt;a href=&quot;https://github.com/mongodb/mongo/blob/daf6c4714b45aeb8ba1a09380135b3267c4cc280/src/mongo/db/repl/repl_set_config_checks.cpp#L243-L251&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;reconfig&lt;/a&gt;. &lt;a href=&quot;https://docs.mongodb.com/manual/tutorial/convert-secondary-into-arbiter/#convert-secondary-to-arbiter-and-reuse-the-port-number&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;The documentation&lt;/a&gt; confirms that.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;You may operate the arbiter on the same port as the former secondary. In this procedure, you must shut down the secondary and remove its data before restarting and reconfiguring it as an arbiter.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I&apos;m not aware of places where replica set uses logical clock other than oplog.&lt;/p&gt;</comment>
                            <comment id="1860557" author="judah.schvimer" created="Tue, 10 Apr 2018 17:51:32 +0000"  >&lt;p&gt;A reconfig cannot change arbiter status unless the node gets &lt;a href=&quot;https://github.com/mongodb/mongo/blob/f98493d3112905d2ad988b453b74d9555f5fdac8/src/mongo/db/repl/repl_set_config_checks.cpp#L243-L251&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;added as a new member&lt;/a&gt;. That is certainly a case you&apos;ll want to test (removing and adding the node back in as a new member). I think you could do that without ever shutting the node down, but something I&apos;m not thinking of may be preventing that. &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=siyuan.zhou&quot; class=&quot;user-hover&quot; rel=&quot;siyuan.zhou&quot;&gt;siyuan.zhou&lt;/a&gt;, any thoughts?&lt;/p&gt;

&lt;p&gt;And arbiters can accept writes to non-replicated collections. I don&apos;t think arbiters can participate in any causal relations meaningfully, though that may be something to document. &lt;/p&gt;

&lt;p&gt;I think disabling the clock after reading the config from disk and on receiving the first config via a heartbeat would be fine.&lt;/p&gt;</comment>
                            <comment id="1860375" author="misha.tyulenev" created="Tue, 10 Apr 2018 15:27:15 +0000"  >&lt;p&gt;Thanks &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=jack.mulrow&quot; class=&quot;user-hover&quot; rel=&quot;jack.mulrow&quot;&gt;jack.mulrow&lt;/a&gt;, I enumerated the questions to be easier to refer.&lt;br/&gt;
a. Yes no $cluysterTime will be returned. This is the current behavior requested by drivers when there are no keys available, so I guess they should be ok with it.&lt;br/&gt;
b. Good point thanks. As we discusseed offline hence arbiters cant be a writers they can  not tick clusterTime.&lt;br/&gt;
c. I kept it running assuming that sharding arbiters can use it. Now can be disabled in the case logicalClock is not enabled&lt;br/&gt;
If arbiter status can be changed dynamically then need more complex logic in the enable / disable clocks that will start/stop the keys manager as well&lt;/p&gt;</comment>
                            <comment id="1860360" author="jack.mulrow" created="Tue, 10 Apr 2018 15:10:19 +0000"  >&lt;p&gt;I think the high level approach makes sense, I just have a few comments/questions:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Other LogicalClock public methods should invariant(_isEnabled); so there is no accidental calls to a disabled logical clock&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Two questions:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Do we know for certain that nothing can be inserted into an arbiter, even into the &lt;tt&gt;local&lt;/tt&gt; database? If we disable their logical clock and add those invariants, then any write would fail trying to reserve an optime &lt;a href=&quot;https://github.com/mongodb/mongo/blob/5ae38f156c/src/mongo/db/repl/oplog.cpp#L158&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
	&lt;li&gt;Is it possible for a node to transition from arbiter back to a regular node (maybe through a reconfig)? If so, we would need to re-enable the logical clock wherever that happens.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=judah.schvimer&quot; class=&quot;user-hover&quot; rel=&quot;judah.schvimer&quot;&gt;judah.schvimer&lt;/a&gt; Do you know if we need to worry about either of these?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do not append LogicalTime metadata if LogicalClock is not enabled&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;a. I&apos;m guessing it&apos;s fine for arbiters to not return $clusterTime even though other nodes in the set are? Maybe it&apos;s worth checking with drivers that this won&apos;t mess something up in their protocols for gossiping $clusterTime.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If the node is a ReplicaSet arbiter member but its sharding state is not enabled then logical clock should not be enabled.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;b. Since arbiters don&apos;t store the sharding identity document (bc they have no storage), I don&apos;t think they will ever have their sharding state enabled. This shouldn&apos;t matter if we just disable the clock for arbiters in all cases though.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This will be the place where to disable the logical clock if it is an arbiter.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;c. When we disable the logical clock for arbiters, should we also have the keys collection manager stop monitoring?&lt;/p&gt;</comment>
                            <comment id="1860274" author="misha.tyulenev" created="Tue, 10 Apr 2018 14:29:02 +0000"  >&lt;p&gt;The reason arbiter is disabled in a standalone RS is because it cant get the keys for cryptography because they read from local database. In a sharded cluster keys are stored on the config shard and hence its not required to have locally, and any dataless node can still process the requests.&lt;/p&gt;</comment>
                            <comment id="1860246" author="judah.schvimer" created="Tue, 10 Apr 2018 14:17:33 +0000"  >&lt;blockquote&gt;
&lt;p&gt;If the node is a ReplicaSet arbiter member but its sharding state is not enabled then logical clock should not be enabled.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Can you elaborate on why the sharding state being disabled is required? If it&apos;s an arbiter, aren&apos;t we saying that we always want to disable the logical clock?&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10420">
                    <name>Backports</name>
                                            <outwardlinks description="backported by">
                                                        </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="485967">SERVER-32845</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="512765">SERVER-33947</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="935612">SERVER-43499</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="1362252">SERVER-48406</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>11.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_12450" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Backport Requested</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="15141"><![CDATA[v3.6]]></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>Fri, 2 Feb 2018 16:42:42 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        5 years, 29 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_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>
                            5 years, 29 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10032" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Operating System</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10026"><![CDATA[ALL]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>milkie@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>jack.mulrow@mongodb.com</customfieldvalue>
            <customfieldvalue>judah.schvimer@mongodb.com</customfieldvalue>
            <customfieldvalue>misha.tyulenev@mongodb.com</customfieldvalue>
            <customfieldvalue>siyuan.zhou@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|htnqe7:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|htf8jz:</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="2167">Sharding 2018-03-26</customfieldvalue>
    <customfieldvalue id="2216">Sharding 2018-04-09</customfieldvalue>
    <customfieldvalue id="2217">Sharding 2018-04-23</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|htncin:</customfieldvalue>

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