<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:36:21 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-77705] Replace MurmurHash3 with crc32c in sorter.cpp</title>
                <link>https://jira.mongodb.org/browse/SERVER-77705</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;MurmurHash3 is a pretty old hash function that&apos;s slow and produces low-quality hashes compared to modern alternatives like absl::Hash (CityHash). We want to replace any uses of MurmurHash3 which are for in-memory use only, as we expect this to yield quick perf wins. Hash values that are persisted to disk across restarts or sent across the network between servers are likely unsafe to change, and should be annotated with a clear explanation for why the usage requires a stable hash computation.&lt;/p&gt;</description>
                <environment></environment>
        <key id="2356234">SERVER-77705</key>
            <summary>Replace MurmurHash3 with crc32c in sorter.cpp</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="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="ivan.fefer@mongodb.com">Ivan Fefer</assignee>
                                    <reporter username="dan.larkin-york@mongodb.com">Dan Larkin-York</reporter>
                        <labels>
                    </labels>
                <created>Thu, 1 Jun 2023 17:57:46 +0000</created>
                <updated>Thu, 14 Dec 2023 23:52:43 +0000</updated>
                            <resolved>Thu, 7 Dec 2023 09:30:48 +0000</resolved>
                                                    <fixVersion>7.3.0-rc0</fixVersion>
                                                        <votes>0</votes>
                                    <watches>7</watches>
                                                                                                                <comments>
                            <comment id="5952101" author="xgen-internal-githook" created="Thu, 14 Dec 2023 20:27:10 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Billy Donahue&apos;, &apos;email&apos;: &apos;billy.donahue@mongodb.com&apos;, &apos;username&apos;: &apos;BillyDonahue&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-77705&quot; title=&quot;Replace MurmurHash3 with crc32c in sorter.cpp&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-77705&quot;&gt;&lt;del&gt;SERVER-77705&lt;/del&gt;&lt;/a&gt; 1-liners to fix macos builds&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;avoid std::ranges::count&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;GitOrigin-RevId: 944882fabecca51362327959f828332c72060155&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/82a01f29cef5d768c3fb2af40d7753c38914d10f&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/82a01f29cef5d768c3fb2af40d7753c38914d10f&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5945668" author="billy.donahue" created="Tue, 12 Dec 2023 20:38:06 +0000"  >&lt;p&gt;Hi, this broke the macOS unit test build. Thx!&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;https://evergreen.mongodb.com/task_log_raw/mongodb_mongo_master_macos_debug_suggested_compile_unittests_f2cd3c4869122f1c2ad0bdab4c852bb1a784bb53_23_12_12_03_56_29/0?type=ALL#L15479&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://evergreen.mongodb.com/task_log_raw/mongodb_mongo_master_macos_debug_suggested_compile_unittests_f2cd3c4869122f1c2ad0bdab4c852bb1a784bb53_23_12_12_03_56_29/0?type=ALL#L15479&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I think you&apos;ll find that the problem is an overload ambiguity when you give size_t to a function with integer overloads and there&apos;s no exact match. size_t != uint64_t .&lt;/p&gt;</comment>
                            <comment id="5931629" author="xgen-internal-githook" created="Thu, 7 Dec 2023 01:47:36 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Ivan Fefer&apos;, &apos;email&apos;: &apos;ivan.fefer@mongodb.com&apos;, &apos;username&apos;: &apos;Fefer-Ivan&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-77705&quot; title=&quot;Replace MurmurHash3 with crc32c in sorter.cpp&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-77705&quot;&gt;&lt;del&gt;SERVER-77705&lt;/del&gt;&lt;/a&gt; Use crc32c as sorter checksum and add versioning&lt;/p&gt;

&lt;p&gt;GitOrigin-RevId: f699cb2bdaebacae374d315ec5e15e5b3bb57332&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/572d040ef0e2656ee8bc4d9ba74f957467fa44fc&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/572d040ef0e2656ee8bc4d9ba74f957467fa44fc&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5840489" author="JIRAUSER1270969" created="Tue, 31 Oct 2023 11:03:10 +0000"  >&lt;p&gt;Custom tests of crc32c shows that this hash is 7-9% faster than CityHash and this is the hash to use for checksum validation.&#160;&lt;/p&gt;

&lt;p&gt;However, to properly use it, we need WiredTiger to expose API for piecewise/seeded computation of crc32c: &lt;a href=&quot;https://jira.mongodb.org/browse/WT-11899&quot; title=&quot;Define API to calculate crc32c with a given seed value&quot; class=&quot;issue-link&quot; data-issue-key=&quot;WT-11899&quot;&gt;&lt;del&gt;WT-11899&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For now, I will keep CityHash and continue working on supporting and testing versioning mechanism for compatibility. &lt;/p&gt;

&lt;p&gt;We can swap the hash right before committing to master.&lt;/p&gt;</comment>
                            <comment id="5831360" author="JIRAUSER1270969" created="Mon, 30 Oct 2023 15:10:26 +0000"  >&lt;p&gt;Good news is that the file format is the same - we still write 64-bit integer to represent check sum, so we only need a new field that represents the version. We can default this field to the old hash and have the sorter to use the new version only under a feature flag.&lt;/p&gt;

&lt;p&gt;The caveat is that there is a validator on the field that asserts that it is &amp;gt;= 0 (which will not be the case with a full 8 byte cache).&lt;/p&gt;

&lt;p&gt;&amp;gt; When downgrading the FCV, we can just cancel any active index builds.&lt;/p&gt;

&lt;p&gt;Do you know if this behavior is already present (I know there are some FCV change hooks) or we have to add it?&lt;/p&gt;</comment>
                            <comment id="5831302" author="louis.williams" created="Mon, 30 Oct 2023 15:00:35 +0000"  >&lt;blockquote&gt;&lt;p&gt;However, it may not support downgrading, as the old version will crash, as it won&apos;t be able to parse out the new file description.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Yeah, this was essentially the anticipated problem. We could backport a change to previous versions, but that would impose a downgrade floor, which we generally don&apos;t like doing. Or at least we don&apos;t want to do that unless it is absolutely necessary. If we think we can get a reasonable perf speedup, we can make this change across two releases: we commit something in 8.0.0 to recognize the new sorter format, and in 9.0 we can change the sorter to use the new format without worrying about downgrade. But I don&apos;t think this change warrants a downgrade floor.&lt;/p&gt;

&lt;p&gt;We could also consider FCV-gating this new file format. If we have an 8.0 binary with FCV 8.0, we&apos;ll use the new format and new hash function. When downgrading the FCV, we can just cancel any active index builds. If we have an 8.0 binary with the last-stable or last-continous FCV, we&apos;ll use the older hash function and old sorter file format. In this way, we could commit something once to 8.0.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Do you have other hash functions to suggest?&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Your results are promising, I was just reiteration Dan&apos;s observation that we shouldn&apos;t use hash functions that are seeded with random values.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                            <outwardlinks description="depends on">
                                        <issuelink>
            <issuekey id="2486354">WT-11899</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="2523534">SERVER-84131</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10520">
                    <name>Problem/Incident</name>
                                            <outwardlinks description="causes">
                                                        </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="2518714">SERVER-83957</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>6.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25125"><![CDATA[Query Execution]]></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>Mon, 18 Sep 2023 14:24:55 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        7 weeks, 6 days ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[<s><a href='https://jira.mongodb.org/browse/WT-11899'>WT-11899</a></s>]]></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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-3259</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>
                            7 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>35.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>billy.donahue@mongodb.com</customfieldvalue>
            <customfieldvalue>dan.larkin-york@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>ivan.fefer@mongodb.com</customfieldvalue>
            <customfieldvalue>louis.williams@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i2btxr:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i28xhb:u</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="7257">QE 2023-11-13</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|i2bg33:</customfieldvalue>

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