<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 21:42:44 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>[CSHARP-2504] Reduce memory consumption because of lambda closures in BsonWriter.WriteName </title>
                <link>https://jira.mongodb.org/browse/CSHARP-2504</link>
                <project id="10041" key="CSHARP">C# Driver</project>
                    <description>&lt;p&gt;The profiler output of a session that involved serialization of more than 2 million complex documents shows the following result - 36GB of memory allocated only by the BsonWriter.WriteName method:&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;img src=&quot;https://jira.mongodb.org/secure/attachment/208232/208232_image-2019-02-06-13-41-14-545.png&quot; style=&quot;border: 0px solid black&quot; /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;The culprit for that appears to be the lambda expression here: &lt;a href=&quot;https://github.com/mongodb/mongo-csharp-driver/blob/dc2dbb5ff06fdea80b44a8c2295e542f166ccb16/src/MongoDB.Bson/IO/BsonWriter.cs#L279&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-csharp-driver/blob/dc2dbb5ff06fdea80b44a8c2295e542f166ccb16/src/MongoDB.Bson/IO/BsonWriter.cs#L279&lt;/a&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;   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;_childElementNameValidatorFactory = () =&amp;gt; _elementNameValidator.GetValidatorForChildContent(name);&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;It would certainly be beneficial to move to an alternative design that does not result in closures.&lt;/p&gt;</description>
                <environment></environment>
        <key id="684668">CSHARP-2504</key>
            <summary>Reduce memory consumption because of lambda closures in BsonWriter.WriteName </summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="13201">Fixed</resolution>
                                        <assignee username="boris.dogadov@mongodb.com">Boris Dogadov</assignee>
                                    <reporter username="daniel.hegener@gmx.net">Daniel Hegener</reporter>
                        <labels>
                    </labels>
                <created>Wed, 6 Feb 2019 12:49:32 +0000</created>
                <updated>Sat, 28 Oct 2023 11:48:49 +0000</updated>
                            <resolved>Thu, 7 Jan 2021 00:57:10 +0000</resolved>
                                    <version>2.7.3</version>
                                    <fixVersion>2.12.0</fixVersion>
                                    <component>Performance</component>
                    <component>Serialization</component>
                                        <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="3551892" author="JIRAUSER1257742" created="Thu, 7 Jan 2021 00:56:48 +0000"  >&lt;p&gt;Thanks &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=onyxmaster&quot; class=&quot;user-hover&quot; rel=&quot;onyxmaster&quot;&gt;onyxmaster&lt;/a&gt;&#160;and &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=dnickless&quot; class=&quot;user-hover&quot; rel=&quot;dnickless&quot;&gt;dnickless&lt;/a&gt;&#160;for finding and submitting PRs for this issue.&lt;br/&gt;
Fixed &lt;a href=&quot;https://github.com/mongodb/mongo-csharp-driver/commit/7c3c5caf53366c16df1bf0108e20b674c0b5647f&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt;&#160;with an equivalent approach.&lt;/p&gt;</comment>
                            <comment id="3551889" author="xgen-internal-githook" created="Thu, 7 Jan 2021 00:51:00 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Boris&apos;, &apos;email&apos;: &apos;boris.dogadov@mongodb.com&apos;, &apos;username&apos;: &apos;BorisDog&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-2504&quot; title=&quot;Reduce memory consumption because of lambda closures in BsonWriter.WriteName &quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-2504&quot;&gt;&lt;del&gt;CSHARP-2504&lt;/del&gt;&lt;/a&gt;: BsonWriter: _childElementNameValidatorFactory removal&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-csharp-driver/commit/7c3c5caf53366c16df1bf0108e20b674c0b5647f&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-csharp-driver/commit/7c3c5caf53366c16df1bf0108e20b674c0b5647f&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3518695" author="onyxmaster" created="Mon, 7 Dec 2020 16:08:32 +0000"  >&lt;p&gt;I wonder why would you close an older issue, &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-1942&quot; title=&quot;Reducing delegate allocations&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-1942&quot;&gt;&lt;del&gt;CSHARP-1942&lt;/del&gt;&lt;/a&gt;, (from 2017) as a duplicate of a newer one (from 2019) instead of vice versa, even when the newer one contains neither a better description of the issue nor a better solution (the PR in the second issue does not deal with the root of the issue, the delegate could be removed altogether), while also not covering one of the issues (see BsonSerializerRegistry).&lt;/p&gt;</comment>
                            <comment id="2157837" author="JIRAUSER1256534" created="Wed, 20 Feb 2019 23:19:22 +0000"  >&lt;p&gt;PR &lt;a href=&quot;https://github.com/mongodb/mongo-csharp-driver/pull/366&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-csharp-driver/pull/366&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2139385" author="JIRAUSER1256534" created="Wed, 6 Feb 2019 13:13:51 +0000"  >&lt;p&gt;Here is another screenshot of the same profiling session showing another area where the current pattern allocates memory:&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;img src=&quot;https://jira.mongodb.org/secure/attachment/208235/208235_image-2019-02-06-14-13-47-136.png&quot; style=&quot;border: 0px solid black&quot; /&gt;&lt;/span&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="364399">CSHARP-1942</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="208232" name="image-2019-02-06-13-41-14-545.png" size="58638" author="dnickless" created="Wed, 6 Feb 2019 12:41:15 +0000"/>
                            <attachment id="208235" name="image-2019-02-06-14-13-47-136.png" size="52295" author="dnickless" created="Wed, 6 Feb 2019 13:13:48 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hub7yv:</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>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </customfields>
    </item>
</channel>
</rss>