<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:21:01 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-29487] IdempotencyTest::validate() should also verify consistency of collection/index options</title>
                <link>https://jira.mongodb.org/browse/SERVER-29487</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;The &lt;tt&gt;IdempotencyTest::validate()&lt;/tt&gt; function currently performs &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.5.8/src/mongo/db/repl/sync_tail_test.cpp#L1030&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;collection validation&lt;/a&gt; and &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.5.8/src/mongo/db/repl/sync_tail_test.cpp#L1050-L1052&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;computes a hash of the collection&apos;s contents&lt;/a&gt; for later verification. We should additional check that re-applying the operations via &lt;tt&gt;runOps()&lt;/tt&gt; results in a collection with the same options as before and that any indexes on the collection have the same options as before. This can be viewed as the C++ analogue to some of the additional consistency checks for collection metadata performed in &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.5.8/src/mongo/shell/replsettest.js#L1332-L1377&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;ReplSetTest.prototype.checkReplicatedDataHashes()&lt;/tt&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;tt&gt;IdempotencyTest::validate()&lt;/tt&gt; function should probably return a struct that contains a &lt;tt&gt;std::string&lt;/tt&gt; for the collection&apos;s hash as well as &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.5.8/src/mongo/db/catalog/collection_options.h&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;a &lt;tt&gt;CollectionOptions&lt;/tt&gt; struct&lt;/a&gt; and a &lt;tt&gt;std::vector&amp;lt;BSONObj&amp;gt;&lt;/tt&gt; for the index specifications. See &lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.5.8/src/mongo/db/catalog/collection_catalog_entry.h&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;CollectionCatalogEntry::getCollectionOptions()&lt;/tt&gt; and &lt;tt&gt;CollectionCatalogEntry::getIndexSpec()&lt;/tt&gt;&lt;/a&gt; for how to retrieve this information from &lt;tt&gt;collection-&amp;gt;getCatalogEntry()&lt;/tt&gt;.&lt;/p&gt;</description>
                <environment></environment>
        <key id="390993">SERVER-29487</key>
            <summary>IdempotencyTest::validate() should also verify consistency of collection/index options</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="13201">Fixed</resolution>
                                        <assignee username="may.hoque@mongodb.com">May Hoque</assignee>
                                    <reporter username="max.hirschhorn@mongodb.com">Max Hirschhorn</reporter>
                        <labels>
                    </labels>
                <created>Wed, 7 Jun 2017 04:46:12 +0000</created>
                <updated>Mon, 30 Oct 2023 23:16:18 +0000</updated>
                            <resolved>Tue, 20 Jun 2017 17:25:53 +0000</resolved>
                                                    <fixVersion>3.5.9</fixVersion>
                                    <component>Replication</component>
                                        <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="1601887" author="xgen-internal-githook" created="Tue, 20 Jun 2017 17:21:36 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;Utagai&apos;, u&apos;name&apos;: u&apos;may&apos;, u&apos;email&apos;: u&apos;may.hoque@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-29487&quot; title=&quot;IdempotencyTest::validate() should also verify consistency of collection/index options&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-29487&quot;&gt;&lt;del&gt;SERVER-29487&lt;/del&gt;&lt;/a&gt; IdempotencyTest::validate() should also verify consistency of collection/index options&lt;/p&gt;

&lt;p&gt;Remove some excess end-of-line spaces.&lt;/p&gt;

&lt;p&gt;Clang format touched source file.&lt;/p&gt;

&lt;p&gt;Change hash variable names to state to reflect new validate().&lt;/p&gt;

&lt;p&gt;Add constructors to struct and utilize them in later code.&lt;/p&gt;

&lt;p&gt;Remove unnecessary struct declaration to CollectionOptions.&lt;/p&gt;

&lt;p&gt;Utilize constant instance of CollectionState struct.&lt;/p&gt;

&lt;p&gt;Reorder methods to come before members.&lt;/p&gt;

&lt;p&gt;Rename l and r iterators to thisIt and otherIt for clarity.&lt;/p&gt;

&lt;p&gt;Conform to style by changing multiline comments to use //&lt;/p&gt;

&lt;p&gt;Move iterator into for-loop scope instead of outside.&lt;/p&gt;

&lt;p&gt;Change Equals suffix to Equal to better reflect variable meaning.&lt;/p&gt;

&lt;p&gt;Add special case handling for nonexistence of collection in ==&lt;/p&gt;

&lt;p&gt;Add assertion to check that index spec set size is equal to the vector of all indices.&lt;/p&gt;

&lt;p&gt;Move dataHash string assignment nearer to md5 hash generation for conceptual locality.&lt;/p&gt;

&lt;p&gt;Add changes from clang-format.py.&lt;/p&gt;

&lt;p&gt;Convert toString() string generation from raw concat. to StringBuilder.&lt;/p&gt;

&lt;p&gt;Add spacing for readability in cmpIndexSpecs() and fix typo.&lt;/p&gt;

&lt;p&gt;Change colon to period in comment.&lt;/p&gt;

&lt;p&gt;Change newline printing to semicolon printing in toString() except for indexSpecs.&lt;/p&gt;

&lt;p&gt;Change constructor method to use more efficient one in validate() return.&lt;/p&gt;

&lt;p&gt;Add early check for exists field; if false return message about collection not existing.&lt;/p&gt;

&lt;p&gt;Change toStringBuilder naming of mongo::StringBuilder to sb.&lt;/p&gt;

&lt;p&gt;Move up lhs.exists == rhs.exists check up to beginning of operator== overload.&lt;/p&gt;

&lt;p&gt;Remove std::endl; from &amp;lt;&amp;lt; overload.&lt;/p&gt;

&lt;p&gt;Change for loop to use range-based for loop in toString().&lt;/p&gt;

&lt;p&gt;Change index options list to index specs array.&lt;/p&gt;

&lt;p&gt;Remove excess empty array printing for index specs in toString().&lt;/p&gt;

&lt;p&gt;Update documentaiton of toString() to reflect changes.&lt;/p&gt;

&lt;p&gt;Fix typo of Prints -&amp;gt; Returns in toString() docs.&lt;/p&gt;

&lt;p&gt;Add visual separation between beginning if statement in toString().&lt;/p&gt;

&lt;p&gt;Fix format issues in C++ file.&lt;/p&gt;

&lt;p&gt;Add visual separation between beginning if statement in operator==&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/9022c80626cc1316f83e657591f1f19f3db7237b&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/9022c80626cc1316f83e657591f1f19f3db7237b&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.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, 13 Jun 2017 14:24:40 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        6 years, 34 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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-825</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>
                            6 years, 34 weeks, 1 day ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>max.hirschhorn@mongodb.com</customfieldvalue>
            <customfieldvalue>may.hoque@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|ht8own:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hraix3:</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="1713">TIG 2017-06-19</customfieldvalue>
    <customfieldvalue id="1746">TIG 2017-07-10</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|ht8az3:</customfieldvalue>

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