<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:40:30 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-79260] Avoid relying on fast count for change_collection_server_stats.js and multitenant_pre_image_expired_document_remover.js </title>
                <link>https://jira.mongodb.org/browse/SERVER-79260</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/681861825f788de83e30d254b57401e7284e0885/jstests/serverless/change_collection_server_stats.js#L72&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;change_collection_server_stats.js&lt;/a&gt; and &lt;a href=&quot;https://github.com/mongodb/mongo/blob/681861825f788de83e30d254b57401e7284e0885/jstests/serverless/change_streams/multitenant_pre_image_expired_document_remover.js#L65&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;multitenant_pre_image_expired_document_remover.js&lt;/a&gt; both rely on count() to test the number of pre-images/ change collection entries. &lt;/p&gt;

&lt;p&gt;count() uses fast-count; fast-count is not guaranteed to be correct for unreplicated, untimestamped collections which rely on WT truncate. WT truncate doesn&apos;t keep track of the amount of documents truncated (with the benefit of extremely fast document removal). For this reason, these collections rely on &lt;a href=&quot;https://github.com/mongodb/mongo/blob/681861825f788de83e30d254b57401e7284e0885/src/mongo/db/storage/collection_truncate_markers.h#L67-L77&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;CollectionTruncateMarkers&lt;/a&gt; to estimate how much data / the amount of documents exist with a given range of the collections. These initial estimated numbers are used by truncate to &lt;a href=&quot;https://github.com/10gen/mongo/blob/2d3db9cb63b9006b7435d72e02cd30df60395c34/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp#L1562&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;update the fast-count&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;CollectionTruncateMarkers for change-collections and pre-images collections are lazily initialized at startup, and are estimates. For this reason, the tests which rely on fast-count should opt for counting the number of change-collection entries and pre-images by fetching the collection and counting the number of entries explicitly (&lt;a href=&quot;https://github.com/10gen/mongo/blob/2d3db9cb63b9006b7435d72e02cd30df60395c34/jstests/noPassthrough/libs/change_stream_pre_image_truncate_after_shutdown.js#L85&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;an example with pre-images&lt;/a&gt;).&lt;/p&gt;

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

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

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

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

&lt;p&gt;&lt;b&gt;Old description:&lt;/b&gt;&lt;br/&gt;
In&#160;multitenant_pre_image_expired_document_remover.js, if the &lt;a href=&quot;https://github.com/mongodb/mongo/blob/e3d2bc5d42088a9752ac37a3076f3b4e0b98d05a/jstests/serverless/change_streams/multitenant_pre_image_expired_document_remover.js#L24&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;preimage removal job is set to run every 1 second&lt;/a&gt;, the fast &lt;a href=&quot;https://github.com/mongodb/mongo/blob/e3d2bc5d42088a9752ac37a3076f3b4e0b98d05a/jstests/serverless/change_streams/multitenant_pre_image_expired_document_remover.js#L67&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;count()&lt;/a&gt; of images in a tenant&apos;s collection doesn&apos;t always match the number of pre-images returned from a find().&lt;/p&gt;

&lt;p&gt;At some level, we expect initial fast count estimates to be off around startup because the markers are initialised as estimates. However, we should investigate whether or not we would expect the counts to match within the time an assert.soon completes and explore the limitations of the estimation process.&lt;/p&gt;</description>
                <environment></environment>
        <key id="2399339">SERVER-79260</key>
            <summary>Avoid relying on fast count for change_collection_server_stats.js and multitenant_pre_image_expired_document_remover.js </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="miquel.munoz@mongodb.com">Miquel Munoz</assignee>
                                    <reporter username="haley.connelly@mongodb.com">Haley Connelly</reporter>
                        <labels>
                    </labels>
                <created>Mon, 24 Jul 2023 16:46:15 +0000</created>
                <updated>Sun, 29 Oct 2023 21:18:33 +0000</updated>
                            <resolved>Tue, 29 Aug 2023 17:00:44 +0000</resolved>
                                                    <fixVersion>7.2.0-rc0</fixVersion>
                                                        <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="5666795" author="xgen-internal-githook" created="Tue, 29 Aug 2023 18:47:50 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Miquel Munoz&apos;, &apos;email&apos;: &apos;miquelmunozz@gmail.com&apos;, &apos;username&apos;: &apos;mimugara&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-79260&quot; title=&quot;Avoid relying on fast count for change_collection_server_stats.js and multitenant_pre_image_expired_document_remover.js &quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-79260&quot;&gt;&lt;del&gt;SERVER-79260&lt;/del&gt;&lt;/a&gt; Avoid relying on fast count for change_collection_server_stats.js and multitenant_pre_image_expired_document_remover.js&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/63e7a40a68a39423ed5b4c9eb99d6f4618ca7f1e&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/63e7a40a68a39423ed5b4c9eb99d6f4618ca7f1e&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5588945" author="josef.ahmad" created="Tue, 25 Jul 2023 09:35:59 +0000"  >&lt;p&gt;By design, fast count isn&apos;t expected to be accurate on oplog-like tables like the change stream pre-images table. Test code that requires accurate count should iterate-count the table.&lt;/p&gt;</comment>
                            <comment id="5587086" author="haley.connelly" created="Mon, 24 Jul 2023 16:49:43 +0000"  >&lt;p&gt;The same issue is extremely likely to happen in&#160;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/e3d2bc5d42088a9752ac37a3076f3b4e0b98d05a/jstests/serverless/change_collection_server_stats.js#L77&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;change_collection_server_stats.js&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="2371898">SERVER-78215</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.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_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>Tue, 25 Jul 2023 09:35:59 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        23 weeks, 1 day 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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-3092</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>
                            23 weeks, 1 day ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>haley.connelly@mongodb.com</customfieldvalue>
            <customfieldvalue>josef.ahmad@mongodb.com</customfieldvalue>
            <customfieldvalue>miquel.munoz@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i2j78v:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i22j77:</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="7537">Execution EMEA Team 2023-08-07</customfieldvalue>
    <customfieldvalue id="7539">Execution EMEA Team 2023-09-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|i2ite7:</customfieldvalue>

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