<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:28:12 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-31793] Add a hook to check that all collections have UUIDs when featureCompatibilityVersion is 3.6</title>
                <link>https://jira.mongodb.org/browse/SERVER-31793</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;The testing infrastructure should have a hook to ensure that all collections of all databases have UUIDs when featureCompatibilityVersion is 3.6 and no collections have UUIDs when featureCompatibilityVersion is 3.4. &lt;/p&gt;</description>
                <environment></environment>
        <key id="453957">SERVER-31793</key>
            <summary>Add a hook to check that all collections have UUIDs when featureCompatibilityVersion is 3.6</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="3">Duplicate</resolution>
                                        <assignee username="kevin.albertson@mongodb.com">Kevin Albertson</assignee>
                                    <reporter username="maria.vankeulen@mongodb.com">Maria van Keulen</reporter>
                        <labels>
                    </labels>
                <created>Wed, 1 Nov 2017 22:32:12 +0000</created>
                <updated>Wed, 20 Dec 2017 22:24:14 +0000</updated>
                            <resolved>Wed, 20 Dec 2017 22:24:14 +0000</resolved>
                                                                    <component>Storage</component>
                    <component>Testing Infrastructure</component>
                                        <votes>0</votes>
                                    <watches>8</watches>
                                                                                                                <comments>
                            <comment id="1755099" author="kevin.albertson" created="Mon, 18 Dec 2017 22:00:02 +0000"  >&lt;p&gt;The work for this is completed in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-32126&quot; title=&quot;validate() should do basic sanity checks for UUIDs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-32126&quot;&gt;&lt;del&gt;SERVER-32126&lt;/del&gt;&lt;/a&gt;. The validate command now has UUID checks.&lt;/p&gt;</comment>
                            <comment id="1729270" author="max.hirschhorn@10gen.com" created="Fri, 17 Nov 2017 20:24:08 +0000"  >&lt;p&gt;I&apos;d recommend modifying &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.7.0/jstests/hooks/validate_collections.js&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;jstests/hooks/validate_collections.js&lt;/tt&gt;&lt;/a&gt; to add this assertion about the UUID because it&apos;s already wired up to run between tests and at shutdown.&lt;/p&gt;</comment>
                            <comment id="1717990" author="judah.schvimer" created="Mon, 6 Nov 2017 20:55:00 +0000"  >&lt;p&gt;CollMods during rollback will be tested with &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-31805&quot; title=&quot;rollbackViaRefetchNoUUID fails if rollback occurs during upgrade&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-31805&quot;&gt;&lt;del&gt;SERVER-31805&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="1717943" author="maria.vankeulen" created="Mon, 6 Nov 2017 20:20:51 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=esha.maharishi&quot; class=&quot;user-hover&quot; rel=&quot;esha.maharishi&quot;&gt;esha.maharishi&lt;/a&gt; and I discussed testing for &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-31792&quot; title=&quot;UUIDs should be generated for non-replicated collections on config servers when featureCompatibilityVersion = 3.6&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-31792&quot;&gt;&lt;del&gt;SERVER-31792&lt;/del&gt;&lt;/a&gt; and I will include the combinations enumerated in her bullet point list above in the testing for that ticket.&lt;/p&gt;</comment>
                            <comment id="1717824" author="max.hirschhorn@10gen.com" created="Mon, 6 Nov 2017 18:03:15 +0000"  >&lt;blockquote&gt;
&lt;p&gt;I think Max Hirschhorn&apos;s idea is to do this check in the OpObserver if possible.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;After discussing with &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=geert.bosch&quot; class=&quot;user-hover&quot; rel=&quot;geert.bosch&quot;&gt;geert.bosch&lt;/a&gt; in person, it doesn&apos;t seem viable because attempting to acquire the global S lock would be prone to deadlock since we&apos;d still be holding the lock on the &lt;tt&gt;admin.system.version&lt;/tt&gt; collection inside of the &lt;tt&gt;OpObserver&lt;/tt&gt;.&lt;/p&gt;</comment>
                            <comment id="1717732" author="max.hirschhorn@10gen.com" created="Mon, 6 Nov 2017 16:46:21 +0000"  >&lt;blockquote&gt;
&lt;p&gt;Max Hirschhorn, what&apos;s the negative of adding the hook everywhere? We already do this with validate which is a far more expensive check.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I don&apos;t think there&apos;s an issue with adding it everywhere, but I also don&apos;t think we should be relying on this check to test properties of the system that either (a) mongod could check itself, or (b) should have had a targeted test.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It&apos;s mainly because assigning UUIDs at startup is fairly complicated, since it differs depending on whether a node is a --shardsvr, --configsvr, or none, and whether it&apos;s a standalone or replica set.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;It if was known to be complicated, then why didn&apos;t we write more exhaustive tests for it? Are there other things around handling UUIDs during upgrade/downgrade that warrant further testing? I asked because I&apos;ve gotten an impression from the Replication team that we may be missing test cases around replication rollback of collMod operations during the upgrade/downgrade process.&lt;/p&gt;</comment>
                            <comment id="1717713" author="judah.schvimer" created="Mon, 6 Nov 2017 16:35:45 +0000"  >&lt;p&gt;Even if we don&apos;t call setFCV, every mongod inserts an &lt;tt&gt;fCV: 3.4, targetVersion: unset&lt;/tt&gt; or &lt;tt&gt;fCV:3.6, targetVersion: unset&lt;/tt&gt; document at some point, and in the former case expects no UUIDs and in the latter case expects UUIDs everywhere. I think &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=max.hirschhorn&quot; class=&quot;user-hover&quot; rel=&quot;max.hirschhorn&quot;&gt;max.hirschhorn&lt;/a&gt;&apos;s idea is to do this check in the OpObserver if possible. &lt;/p&gt;</comment>
                            <comment id="1717707" author="esha.maharishi@10gen.com" created="Mon, 6 Nov 2017 16:29:52 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=judah.schvimer&quot; class=&quot;user-hover&quot; rel=&quot;judah.schvimer&quot;&gt;judah.schvimer&lt;/a&gt;, what if setFCV is never called in the test, which is most tests?&lt;/p&gt;

&lt;p&gt;I think the important cases are:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;UUIDs assigned (or not) to admin, local, config, and user-created databases&lt;/li&gt;
	&lt;li&gt;--configsvr, --shardsvr, or none&lt;/li&gt;
	&lt;li&gt;standalone server or replica set&lt;/li&gt;
	&lt;li&gt;setFCV=3.6 called, setFCV=3.4 called, or setFCV never called&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;We can either explicitly test every legal combination of these (e.g., UUIDs are correctly assigned after startup to admin, local, config, and user databases for a standalone --shardsvr when setFCV never called), which becomes a finite set that someone will have to remember to update if we add/change configuration possibilities, or we can use a hook and assume our test coverage captures all cases and will continue to capture additional cases as they become possible?&lt;/p&gt;</comment>
                            <comment id="1717692" author="judah.schvimer" created="Mon, 6 Nov 2017 16:20:18 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=esha.maharishi&quot; class=&quot;user-hover&quot; rel=&quot;esha.maharishi&quot;&gt;esha.maharishi&lt;/a&gt;, would it not accomplish the same thing by mongod checking for UUIDs on upgrade completion or lack of UUIDs on downgrade completion? &lt;br/&gt;
&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=max.hirschhorn&quot; class=&quot;user-hover&quot; rel=&quot;max.hirschhorn&quot;&gt;max.hirschhorn&lt;/a&gt;, what&apos;s the negative of adding the hook everywhere? We already do this with &lt;tt&gt;validate&lt;/tt&gt; which is a far more expensive check.&lt;/p&gt;</comment>
                            <comment id="1717660" author="esha.maharishi@10gen.com" created="Mon, 6 Nov 2017 15:55:30 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=max.hirschhorn&quot; class=&quot;user-hover&quot; rel=&quot;max.hirschhorn&quot;&gt;max.hirschhorn&lt;/a&gt;, it could be a way to ensure UUIDs get assigned (or not) correctly in all configurations. It&apos;s mainly because assigning UUIDs at startup is fairly complicated, since it differs depending on whether a node is a --shardsvr, --configsvr, or none, and whether it&apos;s a standalone or replica set.&lt;/p&gt;

&lt;p&gt;Alternatively, we could add a test that explicitly checks every combination we can think of.&lt;/p&gt;</comment>
                            <comment id="1717654" author="max.hirschhorn@10gen.com" created="Mon, 6 Nov 2017 15:51:36 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=maria.vankeulen&quot; class=&quot;user-hover&quot; rel=&quot;maria.vankeulen&quot;&gt;maria.vankeulen&lt;/a&gt;, &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=geert.bosch&quot; class=&quot;user-hover&quot; rel=&quot;geert.bosch&quot;&gt;geert.bosch&lt;/a&gt;, is there a reason not to have mongod do this check itself upon fully-upgrading to featureCompatibilityVersion=3.6? Are there non-replicated collections that wouldn&apos;t exist upon fully-upgrading to featureCompatibilityVersion=3.6 that would exist at shutdown? I&apos;m not particularly convinced this check would be worth adding to test suites that don&apos;t modify the server&apos;s featureCompatibilityVersion.&lt;/p&gt;</comment>
                            <comment id="1715356" author="judah.schvimer" created="Thu, 2 Nov 2017 14:16:47 +0000"  >&lt;p&gt;This was the result of a discussion about how &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-31792&quot; title=&quot;UUIDs should be generated for non-replicated collections on config servers when featureCompatibilityVersion = 3.6&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-31792&quot;&gt;&lt;del&gt;SERVER-31792&lt;/del&gt;&lt;/a&gt; slipped through the cracks. Checking every node for UUIDs at shutdown would have caught this. I don&apos;t expect it to have a significant impact on shutdown time since it just runs listCollections on each database, but would make sense for every single node individually at shutdown. &lt;/p&gt;</comment>
                            <comment id="1715332" author="maria.vankeulen" created="Thu, 2 Nov 2017 13:46:31 +0000"  >&lt;p&gt;Apologies for the confusion; when &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=judah.schvimer&quot; class=&quot;user-hover&quot; rel=&quot;judah.schvimer&quot;&gt;judah.schvimer&lt;/a&gt;, &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=esha.maharishi&quot; class=&quot;user-hover&quot; rel=&quot;esha.maharishi&quot;&gt;esha.maharishi&lt;/a&gt;, and I were discussing this, I believe we wanted it to be run as part of shutting down the MongoDB deployment after each test.&lt;/p&gt;</comment>
                            <comment id="1715095" author="max.hirschhorn@10gen.com" created="Wed, 1 Nov 2017 23:14:00 +0000"  >&lt;blockquote&gt;
&lt;p&gt;The testing infrastructure should have a hook to ensure that all collections of all databases have UUIDs when featureCompatibilityVersion is 3.6 and no collections have UUIDs when featureCompatibilityVersion is 3.4.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=maria.vankeulen&quot; class=&quot;user-hover&quot; rel=&quot;maria.vankeulen&quot;&gt;maria.vankeulen&lt;/a&gt;, could you expand on when you&apos;d want such a hook to run? Is it something you&apos;d like to run after each test, e.g. as part of shutting down the MongoDB deployment? I&apos;d appreciate some more clarity since it seems like something that should either be (a) a library to use in UUID-related targeted tests, and/or (b) a hook to run with replication-related &lt;tt&gt;jstestfuzz*.yml&lt;/tt&gt; test suites after each test.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="453956">SERVER-31792</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="470615">SERVER-32255</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="465951">SERVER-32126</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>14.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>Wed, 1 Nov 2017 23:14:00 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        6 years, 8 weeks, 2 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_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>kevin.albertson@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            6 years, 8 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>esha.maharishi@mongodb.com</customfieldvalue>
            <customfieldvalue>judah.schvimer@mongodb.com</customfieldvalue>
            <customfieldvalue>kevin.albertson@mongodb.com</customfieldvalue>
            <customfieldvalue>maria.vankeulen@mongodb.com</customfieldvalue>
            <customfieldvalue>max.hirschhorn@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|htj6on:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|htczqf:</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="2060">TIG 2018-1-1</customfieldvalue>
    <customfieldvalue id="2061">TIG 2017-12-18</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|htissf:</customfieldvalue>

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