<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:34:22 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-54747] Vendor tcmalloc into MongoDB&apos;s third party sources</title>
                <link>https://jira.mongodb.org/browse/SERVER-54747</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;This ticket is to add the &lt;a href=&quot;https://github.com/google/tcmalloc&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;new TCMalloc&lt;/a&gt; to the MongoDB repository and &lt;a href=&quot;https://wiki.corp.mongodb.com/pages/viewpage.action?pageId=78087283&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;integrate&#160;with SCons&lt;/a&gt;. The source code will be located in the directory&#160;&lt;tt&gt;src/third_party/tcmalloc&lt;/tt&gt;. The TCMalloc source contains &lt;tt&gt;BUILD.bazel&lt;/tt&gt; files for use with the Bazel build system; these Bazel files should be removed and the appropriate SCons files added.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1631483">SERVER-54747</key>
            <summary>Vendor tcmalloc into MongoDB&apos;s third party sources</summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="10033" iconUrl="https://jira.mongodb.org/images/icons/statuses/information.png" description="Status for tickets that need to be escalated and unblocked on our team.">Blocked</status>
                    <statusCategory id="4" key="indeterminate" colorName="inprogress"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="backlog-server-storage-engines">Backlog - Storage Engines Team</assignee>
                                    <reporter username="tammy.bailey@mongodb.com">Tammy Bailey</reporter>
                        <labels>
                    </labels>
                <created>Wed, 24 Feb 2021 08:31:46 +0000</created>
                <updated>Wed, 1 Mar 2023 21:36:13 +0000</updated>
                                                                                                <votes>0</votes>
                                    <watches>13</watches>
                                                                                                                <comments>
                            <comment id="3961748" author="JIRAUSER1256988" created="Sun, 25 Jul 2021 19:00:03 +0000"  >&lt;p&gt;Added a &lt;a href=&quot;https://jira.mongodb.org/browse/PERF-2106?focusedCommentId=3961747&amp;amp;page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-3961747&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;comment on performance here&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="3673460" author="acm" created="Fri, 19 Mar 2021 14:33:13 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=tammy.bailey&quot; class=&quot;user-hover&quot; rel=&quot;tammy.bailey&quot;&gt;tammy.bailey&lt;/a&gt; I agree with &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=bruce.lucas&quot; class=&quot;user-hover&quot; rel=&quot;bruce.lucas&quot;&gt;bruce.lucas&lt;/a&gt; that it is fine to leave it in while the evaluation proceeds.&lt;/p&gt;</comment>
                            <comment id="3673059" author="bruce.lucas@10gen.com" created="Fri, 19 Mar 2021 12:20:21 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=tammy.bailey&quot; class=&quot;user-hover&quot; rel=&quot;tammy.bailey&quot;&gt;tammy.bailey&lt;/a&gt;, I don&apos;t think there&apos;s any need to do that. I think having that alternative implementation to, as you say, explore its potential, has been helpful and has generated useful discussion as input to the design decision when/if we&apos;re ready to make that decision.&lt;/p&gt;</comment>
                            <comment id="3672650" author="tammy.bailey" created="Fri, 19 Mar 2021 02:30: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;&#160;I think there&apos;s been a rather large misunderstanding about the heap profiler implementation provided in this build.&lt;/p&gt;

&lt;p&gt;We had some extra bandwidth, so provided an implementation of the heap profiler using the &lt;tt&gt;tcmalloc&lt;/tt&gt;&#160;allocation sampling API&#160;both in the interest of producing a complete build and to explore the potential of the cleaner implementation, where the actual library code wouldn&apos;t need to be altered. This change was outside the scope of this ticket and was definitely not a design decision for the heap profiler by any means. The new&#160;&lt;tt&gt;tcmalloc&lt;/tt&gt; library is still pending performance evaluation, so it&apos;s uncertain whether we&apos;ll even get to a point where a new heap profiler implementation will be needed.&lt;/p&gt;

&lt;p&gt;I&apos;m wondering if perhaps we should back the heap profiler changes out of this build to avoid future confusion?&lt;/p&gt;</comment>
                            <comment id="3672010" author="acm" created="Thu, 18 Mar 2021 19:26:37 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=bruce.lucas&quot; class=&quot;user-hover&quot; rel=&quot;bruce.lucas&quot;&gt;bruce.lucas&lt;/a&gt; - The &lt;tt&gt;google/tcmalloc&lt;/tt&gt; maintainers have made pretty clear that they don&apos;t intend to maintain ABI: &lt;a href=&quot;https://github.com/google/tcmalloc/issues/2&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/google/tcmalloc/issues/2&lt;/a&gt;. Now ABI and API are admittedly different - the former is a much stricter bar. But an explicit statement not to keep ABI stable certainly suggests a willingness to iterate API and implementation/behavior. I&apos;ll note also that unlike the &lt;tt&gt;gperftools/tcmalloc&lt;/tt&gt;, the &lt;tt&gt;google/tcmalloc&lt;/tt&gt; project hasn&apos;t made any tags, created any branches, or issued any releases. It leads me to the conclusion that they intend to treat this project much more as something that lives at HEAD to reflect the state of the software within google. At the very least it probably means the end of offering or supporting &lt;tt&gt;--use-system-tcmalloc&lt;/tt&gt; for the new tcmalloc. &lt;/p&gt;</comment>
                            <comment id="3671986" author="bruce.lucas@10gen.com" created="Thu, 18 Mar 2021 19:14:59 +0000"  >&lt;p&gt;For future reference, I&apos;ll record another question I have about the built-in heap profiling API for the new tcmalloc: do we have an understanding of the long-term stability of the interface and function from an upstream perspective?&lt;/p&gt;</comment>
                            <comment id="3671691" author="acm" created="Thu, 18 Mar 2021 17:26:09 +0000"  >&lt;p&gt;Just a quick note, but IIUC the plan here is to replace the existing heap profiler (mongodb written one in src/mongo/util) with the heap profiler from the new tcmalloc. There are a few issues there. The first is that since we know we can&apos;t use the new tcmalloc on all platforms, we can&apos;t actually remove mongo the heap profiler: we will still need it on those platforms where the new tcmalloc can&apos;t (yet?) be used. Another concern is that the new tcmalloc profiler is based on using the &lt;tt&gt;abseil&lt;/tt&gt; backtracing facilities. One of the advantages of the current mongodb heap profiler is that it re-uses the mongodb side backtracing facilities that we developed over the past two years. I&apos;m somewhat reluctant to see us reintroduce a new backtracing facility, especially one that isn&apos;t under our control.&lt;/p&gt;</comment>
                            <comment id="3655581" author="tammy.bailey" created="Tue, 9 Mar 2021 21:10:55 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=bruce.lucas&quot; class=&quot;user-hover&quot; rel=&quot;bruce.lucas&quot;&gt;bruce.lucas&lt;/a&gt; do you mean an evergreen patch build (e.g. to run the testing) or something else?&lt;/p&gt;</comment>
                            <comment id="3654830" author="bruce.lucas@10gen.com" created="Tue, 9 Mar 2021 16:38:57 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=alison.felizzi&quot; class=&quot;user-hover&quot; rel=&quot;alison.felizzi&quot;&gt;alison.felizzi&lt;/a&gt;, &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=tammy.bailey&quot; class=&quot;user-hover&quot; rel=&quot;tammy.bailey&quot;&gt;tammy.bailey&lt;/a&gt;, I discussed this with the perf team to coordinate. For both the general performance testing and for taking look at the heap profiler ideally we would want an Evergreen build to work from.  Can you make that available when you feel you have something that is ready to look at?&lt;/p&gt;</comment>
                            <comment id="3653513" author="JIRAUSER1258137" created="Tue, 9 Mar 2021 00:03:30 +0000"  >&lt;p&gt;&lt;b&gt;&lt;em&gt;Quick status update&lt;/em&gt;:&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;I also spent a little bit of time validating the aarch64 and PPC builds.&lt;/p&gt;

&lt;p&gt;Appending to the minimum compiler version discoveries in an earlier post:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;tcmalloc guarantees Clang 9+ and GCC 9.2+ support as a minimum.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;For aarch64, it&apos;s Clang 11+ as &lt;em&gt;&lt;b&gt;minimum&lt;/b&gt;&lt;/em&gt;. This is due to older versions of aarch64 Clang not having support for &apos;&lt;tt&gt;asm goto&lt;/tt&gt;&apos; statements with output constraints (as in Clang 9 and Clang 10). Unfortunately I couldn&apos;t get older versions of Clang to compile for aarch64 without manually hacking on the ASM statements (which I don&apos;t think is an ideal change to maintain). It is important to note that&#160;aarch64 is currently maintained on a best effort basis by the maintainers (as opposed to first tier support). Just in case if this influences the decision to maintain an aarch64 Linux build.&lt;/p&gt;

&lt;p&gt;PPC is failing similarly on earlier compiler versions, as was discovered when doing the initial builds on x86 in the earlier post. Will need to further validate with access to a PPC machine since I&apos;ve only been able to test with patch builds (having limited flexibility on swapping out and experimenting with different compiler versions).&lt;/p&gt;</comment>
                            <comment id="3649793" author="bruce.lucas@10gen.com" created="Fri, 5 Mar 2021 18:34:09 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=tammy.bailey&quot; class=&quot;user-hover&quot; rel=&quot;tammy.bailey&quot;&gt;tammy.bailey&lt;/a&gt;, understood. I&apos;ll work with the performance team to see if we can take a look to get an early start on that discussion in the context of their work. No need at this point for any additional builds beyond that from you.&lt;/p&gt;</comment>
                            <comment id="3648996" author="tammy.bailey" created="Fri, 5 Mar 2021 13:45:59 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=bruce.lucas&quot; class=&quot;user-hover&quot; rel=&quot;bruce.lucas&quot;&gt;bruce.lucas&lt;/a&gt; The first goal of this project - and the intent of this ticket - is to provide a build to the performance team so they can evaluate how the new library performs against workloads that reproduce excessive memory fragmentation. Supporting the heap profiler in a way that meets the needs and requirements of the server team is indeed a future goal of the project, but our understanding (and please correct me if I&apos;m mistaken) was that it was not required for the perf team to perform their evaluation. Thus we performed the most straightforward implementation possible to meet the first goal. We are fully aware that there is discussion to be had around what the final heap profiler implementation should look like with respect to the new library. That said, we are happy to provide an Evergreen build if you&apos;d like to experiment with the new tcmalloc sampling API!&lt;/p&gt;</comment>
                            <comment id="3648922" author="bruce.lucas@10gen.com" created="Fri, 5 Mar 2021 13:03:55 +0000"  >&lt;blockquote&gt;
&lt;p&gt;Since the new tcmalloc library now provides its own allocation sampling API, I&apos;ve implemented the heap profiler using this interface as opposed to using allocation hooks&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The function and performance of the heap profiler is very important to support and triage as we use it not infrequently to debug memory allocation issues in the field, so we need to take a close look at this. Do you have an evergreen build we could use for that purpose?&lt;/p&gt;</comment>
                            <comment id="3648573" author="JIRAUSER1258137" created="Fri, 5 Mar 2021 05:41:09 +0000"  >&lt;p&gt;&lt;b&gt;&lt;em&gt;Status update&lt;/em&gt;:&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;I&apos;ve since added support for compiling the tcmalloc specific utility interfaces (in &lt;tt&gt;src/mongo/util)&lt;/tt&gt; with the new &lt;tt&gt;tcmalloc&lt;/tt&gt; library. I&apos;ve additionally implemented a variant of the heap profiler that uses the new tcmalloc API (may still be buggy, currently doing some last validations). Some notes on the current approach:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Since the new &lt;tt&gt;tcmalloc&lt;/tt&gt; library now provides its own allocation sampling API, I&apos;ve implemented the heap profiler using this interface as opposed to using allocation hooks (as was done with the gperf library). I felt this may have been a cleaner approach instead of managing a custom malloc hook interface inside the &lt;tt&gt;tcmalloc&lt;/tt&gt; library. If preferred I can implement it with allocation hooks if we want to keep the two approaches consistent.&lt;/li&gt;
	&lt;li&gt;Due to their differing API&apos;s, I&apos;ve currently created two variants of each tcmalloc-specific util file (one for gperf and the other for tcmalloc). There&apos;s currently a fair bit of duplication and it may be worth to find a nice set of abstractions between the two libraries. I currently avoided doing this for the purpose of moving forward.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I&apos;ll be further working on cleaning up the branch however this is a good point to start sharing the &lt;tt&gt;tcmalloc&lt;/tt&gt; branch (on my mongo fork) so others can now checkout the work and experiment.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;b&gt;The branch is found here:&lt;/b&gt; &lt;a href=&quot;https://github.com/alisonfel/mongo/tree/server-54747-tcmalloc&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/alisonfel/mongo/tree/server-54747-tcmalloc&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;To compile per-cpu tcmalloc you can initialize the build with the following command:
	&lt;ul&gt;
		&lt;li&gt;&lt;tt&gt;./buildscripts/scons.py --variables-files=etc/scons/mongodbtoolchain_stable_gcc.vars --allocator=tcmalloc --ninja generate-ninja ICECC=icecc CCACHE=ccache&lt;/tt&gt;&lt;/li&gt;
		&lt;li&gt;(&lt;em&gt;emphasis on using the gcc toolchain as discussed above&lt;/em&gt;)&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;To compile per-thread tcmalloc:
	&lt;ul&gt;
		&lt;li&gt;&lt;tt&gt;./buildscripts/scons.py --variables-files=etc/scons/mongodbtoolchain_stable_gcc.vars --allocator=tcmalloc-legacy --ninja generate-ninja ICECC=icecc CCACHE=ccache&lt;/tt&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;&#160;To compile gperf tcmalloc:
	&lt;ul&gt;
		&lt;li&gt;&lt;tt&gt;./buildscripts/scons.py --variables-files=etc/scons/mongodbtoolchain_stable_gcc.vars --allocator=tcmalloc-legacy --ninja generate-ninja ICECC=icecc CCACHE=ccache&lt;/tt&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Note: This work has only been tested on an x86_64 Linux platform (will further work on the ARM64 and PPC platforms).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Please let me know if there are any issues with compiling and running, will happily help!&lt;/em&gt;&lt;/p&gt;</comment>
                            <comment id="3643467" author="JIRAUSER1258137" created="Wed, 3 Mar 2021 00:39:57 +0000"  >&lt;p&gt;&lt;b&gt;&lt;em&gt;Status update&lt;/em&gt;:&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;I&apos;ve now have &lt;tt&gt;tcmalloc&lt;/tt&gt; compiling and linking in with the mongodb server binaries. The current exception is that the build skips over the tcmalloc specific utility interfaces (&lt;tt&gt;src/mongo/util&lt;/tt&gt;).&lt;/p&gt;

&lt;p&gt;Some of the current limitations and compromises of the &lt;tt&gt;tcmalloc&lt;/tt&gt; build, which will need to be addressed before production, include:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;tt&gt;tcmalloc&lt;/tt&gt; guarantees Clang 9+ and GCC 9.2+ support as a minimum.
	&lt;ul&gt;
		&lt;li&gt;The default mongodb toolchain minimums seem to be Clang 7 and GCC 8.2. This may need to be updated if we want to compile the new &lt;tt&gt;tcmalloc&lt;/tt&gt; by default.&lt;/li&gt;
		&lt;li&gt;I&apos;ve tried compiling it with lower versions of Clang ie. with the mongodb toolchain. This ultimately fails due to missing ASM features. Thus Clang 9 is a minimum &lt;em&gt;&lt;b&gt;requirement&lt;/b&gt;&lt;/em&gt;.&lt;/li&gt;
		&lt;li&gt;I&apos;ve successfully compiled it with GCC 8.2 (using the default mongodb toolchain) and it seems to run without crashing (limited testing so far). Though it may still be ideal to match &lt;tt&gt;tcmalloc&lt;/tt&gt;&apos;s official requirements to avoid potential future regressions.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;I&apos;ve needed to check out the most recent upstream revision of Abseil (as mentioned above) into the third party sources for &lt;tt&gt;tcmalloc&lt;/tt&gt; to build against. &lt;tt&gt;tcmalloc&lt;/tt&gt; generally keeps up to date with the latest version of abseil (its upstream code reflects any changes in upstream abseil).&lt;/li&gt;
	&lt;li&gt;I can compile tcmalloc in per-cpu and per-thread caching mode. The default is per-cpu caching mode.
	&lt;ul&gt;
		&lt;li&gt;As a temporary solution I&apos;ve modified the `&#8211;allocator` flag in SCons to point to the following options:
		&lt;ul&gt;
			&lt;li&gt;&apos;&lt;tt&gt;tcmalloc&lt;/tt&gt;&apos; : Compile the new tcmalloc in per-cpu caching mode&lt;/li&gt;
			&lt;li&gt;&apos;&lt;tt&gt;tcmalloc-legacy&lt;/tt&gt;&apos;: Compile the new tcmalloc in per-thread caching mode&lt;/li&gt;
			&lt;li&gt;&apos;&lt;tt&gt;tcmalloc-gperf&lt;/tt&gt;&apos;: Compile the gperf tcmalloc (as we currently do)&lt;/li&gt;
			&lt;li&gt;&apos;&lt;tt&gt;auto&lt;/tt&gt;&apos;: Compile with the &apos;&lt;tt&gt;tcmalloc&lt;/tt&gt;&apos; option if on Linux (non-Android), otherwise &apos;&lt;tt&gt;tcmalloc-gperf&lt;/tt&gt;&apos; (for Windows etc)&lt;/li&gt;
		&lt;/ul&gt;
		&lt;/li&gt;
		&lt;li&gt;Will re-evaluate the flag options at a later point. As I currently understand we may want to roll &apos;&lt;tt&gt;tcmalloc-gperf&lt;/tt&gt;&apos; and &apos;&lt;tt&gt;tcmalloc-legacy&apos;&lt;/tt&gt; into the one option, switching between the two libraries depending on the platform.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Moving forward, my current focus is trying to compile the tcmalloc specific utility interfaces in &lt;tt&gt;src/mongo/util&lt;/tt&gt; with the new tcmalloc library. I&apos;ll be trying to determine what parts of the API and its surrounding options are still compatible.&lt;/p&gt;</comment>
                            <comment id="3638940" author="JIRAUSER1258137" created="Mon, 1 Mar 2021 06:05:27 +0000"  >&lt;p&gt;&lt;b&gt;&lt;em&gt;Short status update&lt;/em&gt;:&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;I&apos;ve been focusing on developing a build of the new &lt;tt&gt;tcmalloc&lt;/tt&gt; in the MongoDB repository by adding the necessary SCons support. Besides creating a new SConscript file for the vendored &lt;tt&gt;tcmalloc&lt;/tt&gt; repository, I&apos;ve needed to patch in additional build support to some of &lt;tt&gt;tcmalloc&lt;/tt&gt;&apos;s dependencies. TCMalloc is heavily dependent on &lt;tt&gt;abseil-cpp&lt;/tt&gt;, which we additionally vendor in our third party modules (&lt;tt&gt;abseil-cpp-master&lt;/tt&gt;). Our current SCons build of&#160; &lt;tt&gt;abseil-cpp&lt;/tt&gt; only covers a limited set of targets/sources however. The additional components &lt;tt&gt;tcmalloc&lt;/tt&gt; is dependent on includes (in Bazel syntax):&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;&quot;@com_google_absl//absl/base&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;@com_google_absl//absl/base:config&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;@com_google_absl//absl/base:core_headers&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;@com_google_absl//absl/base:dynamic_annotations&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;@com_google_absl//absl/debugging:leak_check&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;@com_google_absl//absl/debugging:stacktrace&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;@com_google_absl//absl/debugging:symbolize&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;@com_google_absl//absl/memory&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;@com_google_absl//absl/strings&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;@com_google_absl//absl/numeric:bits&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;@com_google_absl//absl/algorithm:container&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;@com_google_absl//absl/debugging:debugging_internal&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;@com_google_absl//absl/synchronization&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;@com_google_absl//absl/hash:hash&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;@com_google_absl//absl/strings:str_format&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;@com_google_absl//absl/time&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;@com_google_absl//absl/types:optional&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;@com_google_absl//absl/types:span&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;&quot;@com_google_absl//absl/functional:function_ref&quot;&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;Our current abseil checkout is missing the following targets:&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;&quot;@com_google_absl//absl/numeric:bits&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;&quot;@com_google_absl//absl/functional:function_ref&quot;&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;The missing targets seem to be used widespread in tcmalloc (i.e I don&apos;t believe it would be worth patching out of tcmalloc&apos;s source). In order to properly build tcmalloc we may need to also update our abseil checkout to a more recent revision?&lt;/p&gt;

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

&lt;p&gt;As a temporary solution, I&apos;m going to work on a more recent version of abseil (locally) to continue development. I hope to have an initial build of tcmalloc together soon (1 or 2 days).&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="2278893">SERVER-74523</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>16.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25135"><![CDATA[Storage Engines]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 1 Mar 2021 06:05:27 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        2 years, 28 weeks, 3 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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-3231</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>billy.donahue@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            2 years, 28 weeks, 3 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>alison.felizzi@mongodb.com</customfieldvalue>
            <customfieldvalue>andrew.morrow@mongodb.com</customfieldvalue>
            <customfieldvalue>andrew.shuvalov@mongodb.com</customfieldvalue>
            <customfieldvalue>backlog-server-storage-engines</customfieldvalue>
            <customfieldvalue>bruce.lucas@mongodb.com</customfieldvalue>
            <customfieldvalue>tammy.bailey@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hywi1z:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i03jwd:rg</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="4659">Storage - Ra 2021-03-08</customfieldvalue>
    <customfieldvalue id="4759">Storage - Ra 2021-03-22</customfieldvalue>

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

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