<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:09:58 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-45894] mongocryptd pid file does not follow Unix conventions</title>
                <link>https://jira.mongodb.org/browse/SERVER-45894</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;The Unix convention is for a pid file to contain the process id of the process which created the file. This is described in &lt;a href=&quot;http://www.pathname.com/fhs/2.2/fhs-5.13.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://www.pathname.com/fhs/2.2/fhs-5.13.html&lt;/a&gt; which I found via &lt;a href=&quot;https://stackoverflow.com/questions/688343/reference-for-proper-handling-of-pid-file-on-unix&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://stackoverflow.com/questions/688343/reference-for-proper-handling-of-pid-file-on-unix&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;mongocryptd produces a file called mongocryptd.pid with the following contents:&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;{ &quot;port&quot; : 27020, &quot;pid&quot; : 14620 }                                                                             &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;This contents is contrary to the expected contents of the pid file.&lt;/p&gt;

&lt;p&gt;For example, using the common Unix idiom of &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;kill `cat *pid`&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;produces:&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;kill: illegal pid: {&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;   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;kill: illegal pid: &quot;port&quot;&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;   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;kill: illegal pid: :&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;   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;kill: illegal pid: 27020,&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;   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;kill: illegal pid: &quot;pid&quot;&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;   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;kill: illegal pid: :&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;kill: illegal pid: }&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;Tested on 4.2 server built from source recently.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1123030">SERVER-45894</key>
            <summary>mongocryptd pid file does not follow Unix conventions</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="13202">Works as Designed</resolution>
                                        <assignee username="mark.benvenuto@mongodb.com">Mark Benvenuto</assignee>
                                    <reporter username="oleg.pudeyev@mongodb.com">Oleg Pudeyev</reporter>
                        <labels>
                    </labels>
                <created>Thu, 30 Jan 2020 23:20:11 +0000</created>
                <updated>Fri, 27 Oct 2023 13:52:57 +0000</updated>
                            <resolved>Wed, 17 Jun 2020 00:25:30 +0000</resolved>
                                                                                        <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="3212310" author="oleg.pudeyev" created="Wed, 17 Jun 2020 14:55:55 +0000"  >&lt;p&gt;There are many daemons that do not perform authentication. For example, most MTAs allow local users to submit mail without authentication.&lt;/p&gt;

&lt;p&gt;It was my understanding that the changes that were being discussed was adding an FHS-compliant file, not changing existing behavior.&lt;/p&gt;</comment>
                            <comment id="3211557" author="mark.benvenuto" created="Wed, 17 Jun 2020 00:25:30 +0000"  >&lt;p&gt;Unfortunately, while monocryptd was never designed to follow conventions likes the Linux FHS standard, fixing it now is a breaking change for all affected drivers.&lt;/p&gt;

&lt;p&gt;Also, mongocryptd is not designed to be run as a system-wide daemon because it has no authentication.&lt;/p&gt;</comment>
                            <comment id="3047503" author="oleg.pudeyev" created="Mon, 20 Apr 2020 17:11:31 +0000"  >&lt;p&gt;I think a name like &quot;unix pid file path&quot; would be more clear to sysadmins since generally files ending in .lock are private to the application and are not to be touched from outside. Someone who sees a &quot;lock file path&quot; argument most likely won&apos;t expect it to be the application&apos;s public interface.&lt;/p&gt;</comment>
                            <comment id="3045487" author="mark.benvenuto" created="Fri, 17 Apr 2020 20:01:03 +0000"  >&lt;p&gt;I cannot remove the existing parameter even though it may not follow the FHS spec because it would break everyone who uses it. I also cannot change its current behavior since I would break the case of old drivers and new mongocryptd.&lt;/p&gt;

&lt;p&gt;I can create a new parameter instead called &quot;lockFilePath&quot; and hide the &quot;pidFilePath&quot;. This way it would be free to have its own semantics.&lt;/p&gt;

&lt;p&gt;Example of possible changes (I have not tested this, it is just a POC):&lt;br/&gt;
&lt;a href=&quot;https://github.com/markbenvenuto/mongo-enterprise-modules/tree/fle_new_lock&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/markbenvenuto/mongo-enterprise-modules/tree/fle_new_lock&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://github.com/markbenvenuto/mongo/tree/fle_new_lock&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/markbenvenuto/mongo/tree/fle_new_lock&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2783996" author="oleg.pudeyev" created="Wed, 5 Feb 2020 00:11:06 +0000"  >&lt;p&gt;&amp;gt; In version 3.0 of the Linux FHS standard, there are no limits on /var/run about what a pid file may contain (see &lt;a href=&quot;http://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch05s13.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch05s13.html&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;See &lt;a href=&quot;http://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s15.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s15.html&lt;/a&gt;. The directory for pid files was moved from /var/run to /run. Requirements for pid file contents haven&apos;t changed as far as I can tell.&lt;/p&gt;


&lt;p&gt;&amp;gt; Regardless of the FHS spec, it is an unorthodox but it was done to allow arbitrary clients to find the tcp port/unix domain socket to connect to.&lt;/p&gt;

&lt;p&gt;I am having a hard time understanding this rationale. How do the clients know the path to the pid file in the first place? If that path is hardcoded into the client, there is no loss of generality to also separately hardcode a different path to the socket file while maintaining the expected purpose and layout of both files. If the path is configurable there is similarly no loss of generality to provide two paths. If the requirement is to have a single input, this input could have been called something like a &quot;state file&quot; which is separate from either pid or socket files, and if a pid file is desired then this should be provided separately in the customary pid file format.&lt;/p&gt;

&lt;p&gt;I am pretty sure all Unix/Linux daemonization and daemon management software I have ever used expects pid file to just have the pid of the daemon process. It is possible to run mongocryptd system-wide (and doing so offers significant user experience benefit in terms of application runtime over spawning on demand, I find) and if mongocryptd does not obey the pid file convention I expect it will not be manageable by the standard system utilities used for managing other daemons.&lt;/p&gt;

&lt;p&gt;&amp;gt; Clients can follow the pseudo code below to start mongocryptd and get a singleton. &lt;/p&gt;

&lt;p&gt;In unix/linux administration daemon management is often done from shell scripts. The referenced pseudocode is not easy to implement in a shell script, for one because &quot;json parsing&quot; is not a function provided by bourne shell-compatible shells.&lt;/p&gt;

&lt;p&gt;Even if one installed additional utilities for parsing json, I expect it is still significantly more work to manage mongocryptd in this fashion compared to using one of a large number of existing tools developed for this purpose. As well, if a system administrator DOES already use an existing tool, they would generally prefer to continue using that one tool instead of developing their own tool to manage a singe daemon like mongocryptd.&lt;/p&gt;</comment>
                            <comment id="2783947" author="mark.benvenuto" created="Tue, 4 Feb 2020 23:39:12 +0000"  >&lt;p&gt;In version 3.0 of the Linux FHS standard, there are no limits on &lt;tt&gt;/var/run&lt;/tt&gt; about what a pid file may contain (see &lt;a href=&quot;http://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch05s13.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch05s13.html&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Regardless of the FHS spec, it is an unorthodox but it was done to allow arbitrary clients to find the tcp port/unix domain socket to connect to. I could have stored it in separate files but that adds a synchronization issue across files.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Singleton Behavior&lt;/p&gt;

&lt;p&gt;Mongocryptd can be used as a singleton since it is a stateless daemon. To support this, mongocryptd dumps key information about its configuration to the pid file as a JSON document. The pid file also doubles as a lock file to ensure that only one instance of mongocryptd is running if the same pid file is specified.&lt;/p&gt;

&lt;p&gt;The pid file contains the following information:&lt;/p&gt;
   &lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: {
       port }&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;   port - is the port that mongocryptd is running on&lt;br/&gt;
   pid - is the process number of mongocryptd&lt;br/&gt;
   domainSocket - path to unix domain socket, not present on Windows&lt;/p&gt;

&lt;p&gt;Clients can follow the pseudo code below to start mongocryptd and get a singleton. This psuedo code returns the tcp/ip port that mongocryptd is running on:&lt;/p&gt;

&lt;p&gt;function get_port(pid_file)&lt;br/&gt;
   if pid_file exists and pid_file is not empty:&lt;br/&gt;
      return read_json(pid_file)&lt;span class=&quot;error&quot;&gt;&amp;#91;&#8220;port&#8221;&amp;#93;&lt;/span&gt;&lt;br/&gt;
  return -1&lt;/p&gt;

&lt;p&gt;function start(pid_file, port)&lt;br/&gt;
   running_port = get_port(pid_file)&lt;br/&gt;
   while (running_port == -1):&lt;br/&gt;
      process = spawn(&#8220;mongocryptd --port=$port&#8221;)&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;give it a chance to start or hit a lock file conflict&lt;br/&gt;
      process.wait(10ms)&lt;br/&gt;
      running_port = get_port(pid_file)&lt;br/&gt;
   return running_port&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="1123027">SERVER-45893</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>10.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 4 Feb 2020 23:39:12 +0000</customfieldvalue>

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


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_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>
                            3 years, 34 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>mark.benvenuto@mongodb.com</customfieldvalue>
            <customfieldvalue>oleg.pudeyev@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hwmkhr:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hwak53:</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="3659">Security 2020-02-24</customfieldvalue>
    <customfieldvalue id="3660">Security 2020-03-09</customfieldvalue>
    <customfieldvalue id="3737">Security 2020-03-23</customfieldvalue>
    <customfieldvalue id="3810">Security 2020-04-06</customfieldvalue>
    <customfieldvalue id="3811">Security 2020-04-20</customfieldvalue>
    <customfieldvalue id="3890">Security 2020-05-04</customfieldvalue>
    <customfieldvalue id="3891">Security 2020-05-18</customfieldvalue>
    <customfieldvalue id="3892">Security 2020-06-01</customfieldvalue>
    <customfieldvalue id="4004">Security 2020-06-15</customfieldvalue>
    <customfieldvalue id="4035">Security 2020-06-29</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|hwm6r3:</customfieldvalue>

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