<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:54:47 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-62313] Compiling pre-processed sourcecode with CCache loses path information</title>
                <link>https://jira.mongodb.org/browse/SERVER-62313</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Compiling with scons+ccache+UBSAN results in binaries which do not appear to respect the contents of &lt;tt&gt;etc/ubsan.denylist&lt;/tt&gt;.&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;python ./buildscripts/scons.py --variables-files=etc/scons/developer_versions.vars --variables-files=etc/scons/mongodbtoolchain_v4_clang.vars --dbg=on --opt=on --allocator=system --sanitize=address,undefined  --link-model=dynamic --linker=lld ICECC= CCACHE=/opt/mongodbtoolchain/v4/bin/ccache MONGO_GIT_HASH=&quot;unknown&quot; VERBOSE=1 +message_compressor_manager_test&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;&amp;nbsp;&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;...&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;&amp;nbsp;&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;t&quot;:&quot;FullNormalCompression&quot;,&quot;rep&quot;:1,&quot;reps&quot;:1}}&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;{&quot;t&quot;:{&quot;$date&quot;:&quot;2021-12-29T23:11:41.301Z&quot;},&quot;s&quot;:&quot;I&quot;,  &quot;c&quot;:&quot;TEST&quot;,     &quot;id&quot;:23059,   &quot;ctx&quot;:&quot;thread1&quot;,&quot;msg&quot;:&quot;Running&quot;,&quot;attr&quot;:{&quot;test&quot;:&quot;SERVER_28008&quot;,&quot;rep&quot;:1,&quot;reps&quot;:1}}&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;src/third_party/zstandard-1.4.4/zstd/lib/compress/zstd_compress.c:1326:46: runtime error: applying non-zero offset 1 to null pointer&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;    #0 0x7f5ccee84436 in ZSTD_reset_matchState /home/ubuntu/mongo/src/third_party/zstandard-1.4.4/zstd/lib/compress/zstd_compress.c:1326:46&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;    #1 0x7f5ccee82b52 in ZSTD_resetCCtx_internal /home/ubuntu/mongo/src/third_party/zstandard-1.4.4/zstd/lib/compress/zstd_compress.c:1527:9&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;    #2 0x7f5ccee79877 in ZSTD_compressBegin_internal /home/ubuntu/mongo/src/third_party/zstandard-1.4.4/zstd/lib/compress/zstd_compress.c:2946:5&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;&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;Checking the ccache diagnostics we can see entries like:&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;[2021-12-29T22:22:41.356333 8593 ] Running real compiler&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;[2021-12-29T22:22:41.356383 8593 ] Executing /opt/mongodbtoolchain/v4/bin/clang -std=c11 -fasynchronous-unwind-tables -ggdb -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -fno-omit-frame-pointer -fno-strict-aliasing -O2 -march=sandybridge -mtune=generic -mprefer-vector-width=128 -Wno-unused-local-typedefs -Wno-unused-function -Wno-unused-private-field -Wno-deprecated-declarations -Wno-tautological-constant-out-of-range-compare -Wno-tautological-constant-compare -Wno-tautological-unsigned-zero-compare -Wno-tautological-unsigned-enum-zero-compare -Wno-unused-const-variable -Wno-missing-braces -Wno-inconsistent-missing-override -Wno-potentially-evaluated-expression -Wno-unused-lambda-capture -fstack-protector-strong -fsanitize=address,undefined -fno-omit-frame-pointer -fsanitize-blacklist=etc/ubsan.denylist -fno-sanitize-recover -fno-sanitize=vptr -Qunused-arguments -fPIC -Werror -DPCRE_STATIC -DMONGO_USE_VISIBILITY -D_XOPEN_SOURCE=700 -D_GNU_SOURCE -DADDRESS_SANITIZER -DUNDEFINED_BEHAVIOR_SANITIZER -DBOOST_THREAD_VERSION=5 -DBOOST_THREAD_USES_DATETIME -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -DBOOST_ENABLE_ASSERT_DEBUG_HANDLER -DBOOST_LOG_NO_SHORTHAND_NAMES -DBOOST_LOG_USE_NATIVE_SYSLOG -DBOOST_LOG_WITHOUT_THREAD_ATTR -DABSL_FORCE_ALIGNED_ACCESS -DBOOST_LOG_DYN_LINK -Ibuild/optdebug/third_party/zstandard-1.4.4/zstd/lib/common -Isrc/third_party/zstandard-1.4.4/zstd/lib/common -Isrc/third_party/zstandard-1.4.4/zstd/lib -x c -c -fcolor-diagnostics -o build/optdebug/third_party/zstandard-1.4.4/zstd/lib/compress/zstd_compress.dyn.o /run/user/1000/ccache-tmp/tmp.cpp_stdout.G03F6m.i&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;Note that this compiler invocation created &lt;tt&gt;build/optdebug/third_party/zstandard-1.4.4/zstd/lib/compress/zstd_compress.dyn.o&lt;/tt&gt; and consumed &lt;tt&gt;/run/user/1000/ccache-tmp/tmp.cpp_stdout.G03F6m.i&lt;/tt&gt;. Because clang is not running against the true source tree, I believe clang cannot apply the following relative path based suppression from &lt;tt&gt;etc/ubsan.denylist&lt;/tt&gt;:&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;# TODO(SERVER-49230) Remove this after upgrading to 1.5 per&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;# https://github.com/facebook/zstd/issues/2110#issuecomment-996146316&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;[pointer-overflow]&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;src:src/third_party/zstandard-*/*&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;I believe CCache chooses to run this way because &lt;a href=&quot;https://github.com/mongodb/mongo/blob/fd163ac958a6263a89b55faed127eceff9fea2f0/site_scons/site_tools/ccache.py#L114&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;we&apos;ve disabled CCACHE_CPP2&lt;/a&gt;. According to CCache&apos;s &lt;a href=&quot;https://ccache.dev/manual/latest.html#_the_depend_mode&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;docs&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If true, ccache will first run the preprocessor to preprocess the source code (see The preprocessor mode) and then on a cache miss run the compiler on the source code to get hold of the object file.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;When that logic is excised, the following invokations results in functioning test binaries:&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;python ./buildscripts/scons.py --variables-files=etc/scons/developer_versions.vars --variables-files=etc/scons/mongodbtoolchain_v4_clang.vars --dbg=on --opt=on --allocator=system --sanitize=address,undefined  --link-model=dynamic --linker=lld ICECC= CCACHE=/opt/mongodbtoolchain/v4/bin/ccache MONGO_GIT_HASH=&quot;unknown&quot; VERBOSE=1 +message_compressor_manager_test&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;...&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;{&quot;t&quot;:{&quot;$date&quot;:&quot;2021-12-29T22:58:18.571Z&quot;},&quot;s&quot;:&quot;I&quot;,  &quot;c&quot;:&quot;TEST&quot;,     &quot;id&quot;:4680101, &quot;ctx&quot;:&quot;thread1&quot;,&quot;msg&quot;:&quot;Result&quot;,&quot;attr&quot;:{&quot;suite&quot;:{&quot;name&quot;:&quot;ZstdMessageCompressor&quot;,&quot;tests&quot;:2,&quot;fails&quot;:0,&quot;asserts&quot;:0,&quot;time&quot;:{&quot;durationMillis&quot;:0},&quot;failures&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;{&quot;t&quot;:{&quot;$date&quot;:&quot;2021-12-29T22:58:18.571Z&quot;},&quot;s&quot;:&quot;I&quot;,  &quot;c&quot;:&quot;TEST&quot;,     &quot;id&quot;:23065,   &quot;ctx&quot;:&quot;thread1&quot;,&quot;msg&quot;:&quot;Totals&quot;,&quot;attr&quot;:{&quot;totals&quot;:{&quot;name&quot;:&quot;TOTALS&quot;,&quot;tests&quot;:17,&quot;fails&quot;:0,&quot;asserts&quot;:0,&quot;time&quot;:{&quot;durationMillis&quot;:1},&quot;failures&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;{&quot;t&quot;:{&quot;$date&quot;:&quot;2021-12-29T22:58:18.571Z&quot;},&quot;s&quot;:&quot;I&quot;,  &quot;c&quot;:&quot;TEST&quot;,     &quot;id&quot;:23069,   &quot;ctx&quot;:&quot;thread1&quot;,&quot;msg&quot;:&quot;SUCCESS - All tests in all suites passed&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;   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;scons: done building targets.&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;</description>
                <environment></environment>
        <key id="1957070">SERVER-62313</key>
            <summary>Compiling pre-processed sourcecode with CCache loses path information</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="andrew.morrow@mongodb.com">Andrew Morrow</assignee>
                                    <reporter username="spencer.jackson@mongodb.com">Spencer Jackson</reporter>
                        <labels>
                    </labels>
                <created>Wed, 29 Dec 2021 23:15:56 +0000</created>
                <updated>Sun, 29 Oct 2023 21:44:36 +0000</updated>
                            <resolved>Tue, 29 Mar 2022 02:04:41 +0000</resolved>
                                                    <fixVersion>6.0.0-rc0</fixVersion>
                                                        <votes>0</votes>
                                    <watches>6</watches>
                                                                                                                <comments>
                            <comment id="4440264" author="xgen-internal-githook" created="Mon, 28 Mar 2022 22:46:44 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Andrew Morrow&apos;, &apos;email&apos;: &apos;acm@mongodb.com&apos;, &apos;username&apos;: &apos;acmorrow&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-62313&quot; title=&quot;Compiling pre-processed sourcecode with CCache loses path information&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-62313&quot;&gt;&lt;del&gt;SERVER-62313&lt;/del&gt;&lt;/a&gt; Disable ccache cpp2 when sanitizer denylists are in play&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/fcf8de14cb92fb4ff5874308104ca942ea11b655&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/fcf8de14cb92fb4ff5874308104ca942ea11b655&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4432421" author="JIRAUSER1253549" created="Thu, 24 Mar 2022 14:50:15 +0000"  >&lt;blockquote&gt;&lt;p&gt;We could also give&#160;&lt;tt&gt;CCACHE_EXTRAFILES&lt;/tt&gt;&#160;more structure, so you can tag a file as being &quot;pathy&quot; and therefore needing to suppress&#160;&lt;tt&gt;NOCPP2&lt;/tt&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;This seems a little over engineered, how many cases are we expecting to support where we need to disable NOCPP2? I like the generator idea and -o idea though.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;One caveat is that&#160;&lt;tt&gt;ccache&lt;/tt&gt;&#160;honors environment variables even over explicit command line arguments (an interesting choice). But we can probably deal with that by just refusing to load the&#160;&lt;tt&gt;ccache&lt;/tt&gt;&#160;tool if we see anything in&#160;&lt;tt&gt;env&lt;span class=&quot;error&quot;&gt;&amp;#91;ENV&amp;#93;&lt;/span&gt;&lt;/tt&gt;&#160;that starts with&#160;&lt;tt&gt;CCACHE_&lt;/tt&gt;.&#160;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Ninja would not be able to have that level of control. Its a bit of an edge case I am referring to, so overall I agree with what you are saying. I doubt a developer would set the&#160;CCACHE_CPP2 environment variable explicitly, but switching to the -o option would open a hole for confusion.&lt;/p&gt;</comment>
                            <comment id="4432104" author="acm" created="Thu, 24 Mar 2022 13:25:53 +0000"  >&lt;p&gt;Another advantage of the above generator driven scheme is that it would make the tool a little more robust, since &lt;tt&gt;CCACHE_EXTRAFILES&lt;/tt&gt; wouldn&apos;t need to be set before the tool was loaded, and it could also be customized in a cloned &lt;tt&gt;Environment&lt;/tt&gt; and the tool would still do the right thing.&lt;/p&gt;</comment>
                            <comment id="4432102" author="acm" created="Thu, 24 Mar 2022 13:24:06 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=daniel.moody&quot; class=&quot;user-hover&quot; rel=&quot;daniel.moody&quot;&gt;daniel.moody&lt;/a&gt; - I was thinking about the fact that we already had &lt;tt&gt;CCACHE_EXTRAFILES&lt;/tt&gt; in order to let ccache know about files to hash. I just realized though that &lt;tt&gt;cache&lt;/tt&gt; also allows us to explicitly pass option values on the command line with the &lt;tt&gt;-o&lt;/tt&gt; syntax. So maybe we can simplify and harden things, by moving the handling of &lt;tt&gt;run_second_cpp&lt;/tt&gt; (which is what &lt;tt&gt;CCACHE_CPP2&lt;/tt&gt; vs &lt;tt&gt;CCACHE_NOCPP2&lt;/tt&gt;) into a generator, which can then also consult &lt;tt&gt;CCACHE_EXTRAFILES&lt;/tt&gt; while generating the action string to decide about &lt;tt&gt;run_second_cpp&lt;/tt&gt;. We could also give &lt;tt&gt;CCACHE_EXTRAFILES&lt;/tt&gt; more structure, so you can tag a file as being &quot;pathy&quot; and therefore needing to suppress &lt;tt&gt;NOCPP2&lt;/tt&gt;. It&apos;d be a little refactor, but maybe for the best? I never liked that we needed to muck around with the `ENV` anyway. One caveat is that &lt;tt&gt;ccache&lt;/tt&gt; honors environment variables even over explicit command line arguments (an interesting choice). But we can probably deal with that by just refusing to load the &lt;tt&gt;ccache&lt;/tt&gt; tool if we see anything in &lt;tt&gt;env&lt;span class=&quot;error&quot;&gt;&amp;#91;ENV&amp;#93;&lt;/span&gt;&lt;/tt&gt; that starts with &lt;tt&gt;CCACHE_&lt;/tt&gt;. Thoughts?&lt;/p&gt;</comment>
                            <comment id="4430667" author="acm" created="Wed, 23 Mar 2022 20:04:33 +0000"  >&lt;p&gt;OK I think we have the shape of a plan for this one. I think I will 1) provide a customization point to suppress &lt;tt&gt;NOCPP2&lt;/tt&gt; and enable that customization point when sanitizers are in play, and 2) add guardrails disallowing icecream when sanitizers are in play, but 3) provide a &lt;tt&gt;&amp;#45;&amp;#45;do-as-i-said&lt;/tt&gt; flag that suppresses the guardrails in 2.&lt;/p&gt;</comment>
                            <comment id="4430652" author="JIRAUSER1253549" created="Wed, 23 Mar 2022 19:56:49 +0000"  >&lt;blockquote&gt;&lt;p&gt;Can you confirm that there is no correctness motivation behind&#160;&lt;tt&gt;CCACHE_NOCPP2=1&lt;/tt&gt;, only performance?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Yeah just performance, CCACHE&apos;s default (&lt;tt&gt;CCACHE_CPP2=1&lt;/tt&gt;, the NO is removed meaning double preprocessing) is different then what we set.&#160; The cost is the time it takes to preprocess all cache misses, which is not insignificant, but also not unbearable.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;I don&apos;t think we have the ability to constrain on the icecream version for remotes, right? What is the behavior that we require from icecream 1.3? Should we disallow sanitizer builds with icecream until we can enforce 1.3? Or should we just make the ccache related fix and hope for the best when icecream is in play&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;We can&apos;t control it easily or currently. We&apos;d need to setup a dedicated cluster, which I think we intend to anyways. Heres the &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-59243&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;ticket&lt;/a&gt; around the behavior, which also includes the fixing icecream commit. I think disallowing them by default is probably good, but I use icecream with sanitizers and I usually end up not having issues, because I assume most of the cluster is on a newer icecream now-a-days. It might be flexible if we had a force option with a disclaimer maybe? I usually just delete third party build folder if I see issues then rebuild without icecream so most of my sanitizer build is built with icecream.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="4430609" author="acm" created="Wed, 23 Mar 2022 19:41:19 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=daniel.moody&quot; class=&quot;user-hover&quot; rel=&quot;daniel.moody&quot;&gt;daniel.moody&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;&lt;em&gt;But the command line in the reproducer shows GCC, ccache, and no icecream&lt;/em&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;This is a sanitizer and is using clang I thought? CCACHE_NOCPP2=1 is in play&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Yes, you are right, I got tangled up in the permutations.&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;&lt;em&gt;could we fix this by arranging things so we don&apos;t use the CCACHE_NOCPP2=1 option when we are using the sanitizer denylists?&lt;/em&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;I think this is a pretty good solution, I know you referenced the wiki link, but those were issues were around GCC, and this case we are using clang. So I think there is an entirely new issue here, related to denylist and ccache using preprocessed files out of the source tree.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I think that as long as we are confident that opting into &lt;tt&gt;CCACHE_NOCPP2=1&lt;/tt&gt; was only ever an optimization, and not something that we needed to do for correctness (and I think your wiki table supports that), then we can go ahead and build the mechanism that lets the sanitizer builds ask that the ccache tool to not enable the &lt;tt&gt;NOCPP2&lt;/tt&gt; optimization. I don&apos;t think that would be too hard. Can you confirm that there is no correctness motivation behind &lt;tt&gt;CCACHE_NOCPP2=1&lt;/tt&gt;, only performance?&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;&lt;em&gt;Do we know if we also have intrinsic difficulties with honoring the denylist files based on filepath due to icecream, for both the with and without ccache cases?&lt;/em&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;I think we have issues with both, but both have a fix. For CCACHE we need to not use the CCACHE_NOCPP2=1 in the sanitizer case. For ICECREAM we need to make sure the local and all remotes are using &amp;gt;1.3.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I don&apos;t think we have the ability to constrain on the icecream version for remotes, right? What is the behavior that we require from icecream 1.3? Should we disallow sanitizer builds with icecream until we can enforce 1.3? Or should we just make the ccache related fix and hope for the best when icecream is in play? Most engineers aren&apos;t doing local sanitizer builds that often, but it does hurt to take away icecream.&lt;/p&gt;</comment>
                            <comment id="4430384" author="ryan.egesdahl" created="Wed, 23 Mar 2022 18:17:47 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=daniel.moody&quot; class=&quot;user-hover&quot; rel=&quot;daniel.moody&quot;&gt;daniel.moody&lt;/a&gt; Your last concern should be addressed by BUILD-14609. Until that point, I don&apos;t think we can be assured that any of the Icecream build hosts are &amp;gt;1.3.&lt;/p&gt;</comment>
                            <comment id="4430383" author="JIRAUSER1253549" created="Wed, 23 Mar 2022 18:17:35 +0000"  >&lt;p&gt;It possible CCACHE has fixed this behavior in a new version, I have not looked at that possibility.&lt;/p&gt;</comment>
                            <comment id="4430377" author="JIRAUSER1253549" created="Wed, 23 Mar 2022 18:15:53 +0000"  >&lt;p&gt;&lt;b&gt;&lt;em&gt;But the command line in the reproducer shows GCC, ccache, and no icecream&lt;/em&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;This is a sanitizer and is using clang I thought? CCACHE_NOCPP2=1 is in play&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;em&gt;could we fix this by arranging things so we don&apos;t use the CCACHE_NOCPP2=1 option when we are using the sanitizer denylists?&lt;/em&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;I think this is a pretty good solution, I know you referenced the wiki link, but those were issues were around GCC, and this case we are using clang. So I think there is an entirely new issue here, related to denylist and ccache using preprocessed files out of the source tree.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;em&gt;Do we know if we also have intrinsic difficulties with honoring the denylist files based on filepath due to icecream, for both the with and without ccache cases?&lt;/em&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;I think we have issues with both, but both have a fix. CCACHE we need to not use the CCACHE_NOCPP2=1 in the sanitizer case. ICECREAM we need to make sure the local and all remotes are using &amp;gt;1.3.&lt;/p&gt;</comment>
                            <comment id="4430376" author="ryan.egesdahl" created="Wed, 23 Mar 2022 18:15:34 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=acm&quot; class=&quot;user-hover&quot; rel=&quot;acm&quot;&gt;acm&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=daniel.moody&quot; class=&quot;user-hover&quot; rel=&quot;daniel.moody&quot;&gt;daniel.moody&lt;/a&gt; Keep in mind, one of the problems we were having when implementing this behavior is that we were dealing with mutual dependencies between specific versions Icecream and ccache. I don&apos;t think our assumptions need hold in either case anymore, especially with the v4 toolchain, so it&apos;s possible that we just need to look at this anew.&lt;/p&gt;</comment>
                            <comment id="4430320" author="acm" created="Wed, 23 Mar 2022 17:58:13 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=daniel.moody&quot; class=&quot;user-hover&quot; rel=&quot;daniel.moody&quot;&gt;daniel.moody&lt;/a&gt; - &lt;/p&gt;

&lt;p&gt;A few follow-up questions:&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;The assertion in this ticket is that it is the presence of &lt;tt&gt;CCACHE_NOCPP2=1&lt;/tt&gt; that is preventing the denylist entries from having effect, because in that mode the filenames get temp-ified. But the command line in the reproducer shows GCC, ccache, and no icecream. According to your first bullet, we shouldn&apos;t actually be using &lt;tt&gt;CCACHE_NOCPP2=1&lt;/tt&gt; in that setup, so I&apos;m not sure how to reconcile that.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;If, despite my confusion, it really is &lt;tt&gt;CCACHE_NOCPP2=1&lt;/tt&gt; that is the issue, and if it is only an optimization, could we fix this by arranging things so we don&apos;t use the &lt;tt&gt;CCACHE_NOCPP2=1&lt;/tt&gt; option when we are using the sanitizer denylists? We could add a new customization variable for our ccache tool, like &lt;tt&gt;CCACHE_REQUIRE_TRUE_FILENAMES&lt;/tt&gt; or something, and then use that to decide about any ccache options that may interfere with filename matching. We would get a less optimized ccache setup when the sanitizers are in play, but it would at least do the right thing.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Do we know if we &lt;b&gt;also&lt;/b&gt; have intrinsic difficulties with honoring the denylist files based on filepath due to icecream, for both the with and without ccache cases? If disabling &lt;tt&gt;CCACHE_NOCPP2&lt;/tt&gt; per the above suggestion would fix things I&apos;m interested in trying it out, but less so if we are just going to find that we are immediately foiled by icecream.&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="4430233" author="JIRAUSER1253549" created="Wed, 23 Mar 2022 17:28:22 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=acm&quot; class=&quot;user-hover&quot; rel=&quot;acm&quot;&gt;acm&lt;/a&gt; for further explanation there are only two suboptimal conditions we are currently supporting due to the bugs mentioned in the wiki link.&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;if using gcc and ccache without icecream, we can&apos;t use the CCACHE_NOCPP2=1 optimization due to gcc bug (this is fixed in v4 gcc)&lt;/li&gt;
	&lt;li&gt;if using gcc and ccache with icecream, we can&apos;t use -fdirectives-only due to icecream bug. -fdirectives-only with ccache gives greater chance of cache hits so is an optimization.&lt;/li&gt;
&lt;/ol&gt;
</comment>
                            <comment id="4430127" author="JIRAUSER1253549" created="Wed, 23 Mar 2022 17:07:45 +0000"  >&lt;p&gt;Yeah, but CCACHE_NOCPP2=1 is an optimization for ccache so the compiler doesn&apos;t need to re-preprocess the source files in a cache miss scenario. For example ccache first preprocesses the source as an input in generation of a hash id to check the cache with. If there was a miss, well you already did some work by preprocessing so instead of invoking the normal compiler command, ccache will give the preprocessed source to the compiler. I&apos;m not sure how much time is actually saved.&lt;/p&gt;</comment>
                            <comment id="4430065" author="ryan.egesdahl" created="Wed, 23 Mar 2022 16:52:18 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=acm&quot; class=&quot;user-hover&quot; rel=&quot;acm&quot;&gt;acm&lt;/a&gt; I think you&#8217;re probably correct here. I know from some recent work in the Icecream code that there&#8217;s actually quite a bit of room for fixing any problems we might encounter. When we made these original changes, we had no control over the Icecream version, too. Now that we provide our own release, it might make sense to have a more definitive policy here.&lt;/p&gt;</comment>
                            <comment id="4270557" author="ryan.egesdahl" created="Thu, 30 Dec 2021 00:03:29 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=spencer.jackson&quot; class=&quot;user-hover&quot; rel=&quot;spencer.jackson&quot;&gt;spencer.jackson&lt;/a&gt; On second thought, I don&apos;t know that simply adding the flag in &lt;tt&gt;CCFLAGS&lt;/tt&gt; is going to help much because the issue is that &lt;tt&gt;ccache&lt;/tt&gt; is doing the compile in a temporary directory, which is throwing off all the paths. We would need a more extensive workaround of what &lt;tt&gt;ccache&lt;/tt&gt; is doing here, if it&apos;s possible to do. For now, the SCons cache is probably what you want to use here.&lt;/p&gt;</comment>
                            <comment id="4270508" author="ryan.egesdahl" created="Wed, 29 Dec 2021 23:36:38 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=spencer.jackson&quot; class=&quot;user-hover&quot; rel=&quot;spencer.jackson&quot;&gt;spencer.jackson&lt;/a&gt; We deliberately disabled &lt;tt&gt;CCACHE_CPP2&lt;/tt&gt; because it doesn&apos;t play well in all scenarios - especially when Icecream is in play - and there are too many combinations to consider when setting it up. However, we are planning to explore using &lt;tt&gt;-ffile-prefix-map&lt;/tt&gt; as part of other work where the compile path seems to matter. That would be a preferable solution here as well if it works. Could you please give it a try? It should be available for &lt;tt&gt;clang&lt;/tt&gt; in the &lt;tt&gt;v4&lt;/tt&gt; toolchain. I think something like &lt;tt&gt;-ffile-prefix-map=$(pwd)=/&lt;/tt&gt; might work.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="1955531">SERVER-62227</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>17.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_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>Wed, 29 Dec 2021 23:36:38 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        1 year, 45 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_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>
                            1 year, 45 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>andrew.morrow@mongodb.com</customfieldvalue>
            <customfieldvalue>daniel.moody@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>ryan.egesdahl@mongodb.com</customfieldvalue>
            <customfieldvalue>spencer.jackson@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i0fotz:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i07id7:y</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="5578">Dev Platform 2022-01-24</customfieldvalue>
    <customfieldvalue id="5725">Dev Platform 2022-03-21</customfieldvalue>
    <customfieldvalue id="5983">Dev Platform 2022-04-04</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|i0fazb:</customfieldvalue>

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