<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:38:06 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-56023] listCollections can return empty metadata for a collection which has been concurrently dropped</title>
                <link>https://jira.mongodb.org/browse/SERVER-56023</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;This is very similar to &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56002&quot; title=&quot;listIndexes can read partial state from renameCollection&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56002&quot;&gt;&lt;del&gt;SERVER-56002&lt;/del&gt;&lt;/a&gt;, whereby a lock-free operation attempts to access the DurableCatalog while a concurrent operation is modifying it. For listCollections, its possible to &lt;a href=&quot;https://github.com/mongodb/mongo/blob/27e0cb191d1c26ea5fc78f3b81ebd3fedafd8126/src/mongo/db/commands/list_collections.cpp#L330&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;lookup the collection in the CollectionCatalog&lt;/a&gt; just before a collection has been dropped, which means it no longer has an entry in the DurableCatalog. Then, when listCollections proceeds to &lt;a href=&quot;https://github.com/mongodb/mongo/blob/27e0cb191d1c26ea5fc78f3b81ebd3fedafd8126/src/mongo/db/commands/list_collections.cpp#L196&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;read the collection options&lt;/a&gt;, it receives an &lt;a href=&quot;https://github.com/mongodb/mongo/blob/27e0cb191d1c26ea5fc78f3b81ebd3fedafd8126/src/mongo/db/storage/durable_catalog_impl.cpp#L601&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;empty object&lt;/a&gt; and returns it in the command response.&lt;/p&gt;

&lt;p&gt;One possible downstream impact for this is a &lt;a href=&quot;https://github.com/mongodb/mongo/blob/3022c66b2af7049f4096cc7117f94f5194c5e1e2/src/mongo/db/s/shard_collection_legacy.cpp#L286&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;failed shardCollection command&lt;/a&gt; when try to extract the UUID of the collection to shard.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1677707">SERVER-56023</key>
            <summary>listCollections can return empty metadata for a collection which has been concurrently dropped</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="13201">Fixed</resolution>
                                        <assignee username="henrik.edin@mongodb.com">Henrik Edin</assignee>
                                    <reporter username="nicholas.zolnierz@mongodb.com">Nicholas Zolnierz</reporter>
                        <labels>
                    </labels>
                <created>Mon, 12 Apr 2021 12:17:02 +0000</created>
                <updated>Sun, 29 Oct 2023 21:55:02 +0000</updated>
                            <resolved>Thu, 20 May 2021 20:29:22 +0000</resolved>
                                                    <fixVersion>5.0.0-rc0</fixVersion>
                    <fixVersion>5.1.0-rc0</fixVersion>
                                                        <votes>0</votes>
                                    <watches>7</watches>
                                                                                                                <comments>
                            <comment id="4107864" author="JIRAUSER1259052" created="Wed, 6 Oct 2021 18:49:55 +0000"  >&lt;p&gt;Updating the fixversion since branching activities occurred yesterday. This ticket will be in rc0 when it&#8217;s been triggered. For more active release information, please keep an eye on #server-release. Thank you!&lt;/p&gt;</comment>
                            <comment id="3817679" author="xgen-internal-githook" created="Mon, 24 May 2021 13:27:36 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Henrik Edin&apos;, &apos;email&apos;: &apos;henrik.edin@mongodb.com&apos;, &apos;username&apos;: &apos;henrikedin&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56002&quot; title=&quot;listIndexes can read partial state from renameCollection&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56002&quot;&gt;&lt;del&gt;SERVER-56002&lt;/del&gt;&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56023&quot; title=&quot;listCollections can return empty metadata for a collection which has been concurrently dropped&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56023&quot;&gt;&lt;del&gt;SERVER-56023&lt;/del&gt;&lt;/a&gt; Store Collection metadata in the Collection and reply on the copy-on-write machinery to keep it in sync with the durable catalog.&lt;/p&gt;

&lt;p&gt;All updates to the metadata needs to happen through the Collection, moved interfaces from the DurableCatalog to the Collection.&lt;br/&gt;
Removed back pointer to Collection in IndexCatalogEntryImpl, interfaces now correctly take a const or non-const Collection. This should make its iterface const-correct to avoid making bugs where the copy-on-write system for Collections are bypassed.&lt;/p&gt;

&lt;p&gt;Multikey handle is special as it needs to happen without exclusive access to the Collection. Implemented isolation for the Collection metadata when multikey is changed. It handles multi-doc transactions and is only commited to the Collection instance after the write to the durable catalog successfully commits.&lt;/p&gt;

&lt;p&gt;listCollections and listIndexes can now safetly read the metadata cache without needing to read from the durable catalog making them safe to do without Collection level locks.&lt;/p&gt;

&lt;p&gt;(cherry picked from commit 11de948b0c50df7d12de09ae0f01e791fc5d70d7)&lt;br/&gt;
Branch: v5.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/50547a878aaa67722f69c05b05a35236f8f0def9&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/50547a878aaa67722f69c05b05a35236f8f0def9&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3817677" author="xgen-internal-githook" created="Mon, 24 May 2021 13:27:27 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Henrik Edin&apos;, &apos;email&apos;: &apos;henrik.edin@mongodb.com&apos;, &apos;username&apos;: &apos;henrikedin&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56002&quot; title=&quot;listIndexes can read partial state from renameCollection&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56002&quot;&gt;&lt;del&gt;SERVER-56002&lt;/del&gt;&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56023&quot; title=&quot;listCollections can return empty metadata for a collection which has been concurrently dropped&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56023&quot;&gt;&lt;del&gt;SERVER-56023&lt;/del&gt;&lt;/a&gt; Store Collection metadata in the Collection and reply on the copy-on-write machinery to keep it in sync with the durable catalog.&lt;/p&gt;

&lt;p&gt;(cherry picked from commit 15e97c021b4e1feba110f31a563076980794d0a5)&lt;br/&gt;
Branch: v5.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/10gen/mongo-enterprise-modules/commit/0637bb99c0e672df3f0710a970ae1bb2aad0a0ed&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/10gen/mongo-enterprise-modules/commit/0637bb99c0e672df3f0710a970ae1bb2aad0a0ed&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3796980" author="xgen-internal-githook" created="Thu, 20 May 2021 19:19:03 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Henrik Edin&apos;, &apos;email&apos;: &apos;henrik.edin@mongodb.com&apos;, &apos;username&apos;: &apos;henrikedin&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56002&quot; title=&quot;listIndexes can read partial state from renameCollection&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56002&quot;&gt;&lt;del&gt;SERVER-56002&lt;/del&gt;&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56023&quot; title=&quot;listCollections can return empty metadata for a collection which has been concurrently dropped&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56023&quot;&gt;&lt;del&gt;SERVER-56023&lt;/del&gt;&lt;/a&gt; Store Collection metadata in the Collection and reply on the copy-on-write machinery to keep it in sync with the durable catalog.&lt;/p&gt;

&lt;p&gt;All updates to the metadata needs to happen through the Collection, moved interfaces from the DurableCatalog to the Collection.&lt;br/&gt;
Removed back pointer to Collection in IndexCatalogEntryImpl, interfaces now correctly take a const or non-const Collection. This should make its iterface const-correct to avoid making bugs where the copy-on-write system for Collections are bypassed.&lt;/p&gt;

&lt;p&gt;Multikey handle is special as it needs to happen without exclusive access to the Collection. Implemented isolation for the Collection metadata when multikey is changed. It handles multi-doc transactions and is only commited to the Collection instance after the write to the durable catalog successfully commits.&lt;/p&gt;

&lt;p&gt;listCollections and listIndexes can now safetly read the metadata cache without needing to read from the durable catalog making them safe to do without Collection level locks.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/11de948b0c50df7d12de09ae0f01e791fc5d70d7&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/11de948b0c50df7d12de09ae0f01e791fc5d70d7&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3796978" author="xgen-internal-githook" created="Thu, 20 May 2021 19:19:00 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Henrik Edin&apos;, &apos;email&apos;: &apos;henrik.edin@mongodb.com&apos;, &apos;username&apos;: &apos;henrikedin&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56002&quot; title=&quot;listIndexes can read partial state from renameCollection&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56002&quot;&gt;&lt;del&gt;SERVER-56002&lt;/del&gt;&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56023&quot; title=&quot;listCollections can return empty metadata for a collection which has been concurrently dropped&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56023&quot;&gt;&lt;del&gt;SERVER-56023&lt;/del&gt;&lt;/a&gt; Store Collection metadata in the Collection and reply on the copy-on-write machinery to keep it in sync with the durable catalog.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/10gen/mongo-enterprise-modules/commit/15e97c021b4e1feba110f31a563076980794d0a5&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/10gen/mongo-enterprise-modules/commit/15e97c021b4e1feba110f31a563076980794d0a5&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3712933" author="nicholas.zolnierz" created="Mon, 12 Apr 2021 13:42:36 +0000"  >&lt;p&gt;Note that as of &lt;a href=&quot;https://github.com/mongodb/mongo/commit/ae4a8cfaef648518ea539dee841be2243d23eba3&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;SERVER-54918&lt;/a&gt;, the shardCollection path changed to not use listCollections and instead use &lt;tt&gt;AutoGetCollection&lt;/tt&gt; to obtain the UUID of the target collection.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10420">
                    <name>Backports</name>
                                            <outwardlinks description="backported by">
                                                        </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="1653916">SERVER-55352</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="1676636">SERVER-56002</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1711537">SERVER-56877</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1736287">SERVER-57083</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1764965">SERVER-57324</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1788169">SERVER-57775</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1718695">SERVER-56999</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1743611">SERVER-57127</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>2.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_12450" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Backport Requested</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="21777"><![CDATA[v5.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>Mon, 10 May 2021 20:52:06 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        2 years, 18 weeks ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_17050" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Downstream Team Attention</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="16941"><![CDATA[Not Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>luke.bonanomi@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            2 years, 18 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>158.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10032" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Operating System</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10026"><![CDATA[ALL]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>henrik.edin@mongodb.com</customfieldvalue>
            <customfieldvalue>nicholas.zolnierz@mongodb.com</customfieldvalue>
            <customfieldvalue>vivian.ge@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hz4dof:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hyo473:</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_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="4828">Execution Team 2021-05-17</customfieldvalue>
    <customfieldvalue id="4878">Execution Team 2021-05-31</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|hz3zxj:</customfieldvalue>

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