<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:44:52 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-58570] Add a new field to config.collections/config.cache.collections representing whether a collection supports long names</title>
                <link>https://jira.mongodb.org/browse/SERVER-58570</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Add a new optional boolean field to config.collections and to config.cache.collections that represents whether a collection supports long names. As part of this work we should also expose methods to get/set this flag.&lt;/p&gt;

&lt;p&gt;The interesting part of this task is to think about the compatibility with previous versions. What happens if I  try to parse 5.0 metadata with a 5.1 binary? What does it mean if this field is not present? These are the type of questions we have to solve here. You can get some ideas from &lt;a href=&quot;https://github.com/mongodb/mongo/blob/41ce5b863fcf7387808b32bb9af6149afad7eb3b/src/mongo/s/catalog/type_collection.h#L154-L163&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;allowMigrations&lt;/tt&gt;&lt;/a&gt;.&lt;/p&gt;

</description>
                <environment></environment>
        <key id="1819978">SERVER-58570</key>
            <summary>Add a new field to config.collections/config.cache.collections representing whether a collection supports long names</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="antonio.fuschetto@mongodb.com">Antonio Fuschetto</assignee>
                                    <reporter username="sergi.mateo-bellido@mongodb.com">Sergi Mateo Bellido</reporter>
                        <labels>
                    </labels>
                <created>Thu, 15 Jul 2021 08:03:45 +0000</created>
                <updated>Sun, 29 Oct 2023 21:50:52 +0000</updated>
                            <resolved>Fri, 6 Aug 2021 12:36:13 +0000</resolved>
                                                    <fixVersion>5.1.0-rc0</fixVersion>
                                    <component>Sharding</component>
                                        <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="4107740" author="JIRAUSER1259052" created="Wed, 6 Oct 2021 18:34:59 +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="3984877" author="xgen-internal-githook" created="Fri, 6 Aug 2021 12:32:44 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Antonio Fuschetto&apos;, &apos;email&apos;: &apos;antonio.fuschetto@mongodb.com&apos;, &apos;username&apos;: &apos;afuschetto&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-58570&quot; title=&quot;Add a new field to config.collections/config.cache.collections representing whether a collection supports long names&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-58570&quot;&gt;&lt;del&gt;SERVER-58570&lt;/del&gt;&lt;/a&gt; Add a new field to config.collections/config.cache.collections representing whether a collection supports long names&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/400820d43452952cc12ae8690e3157840e7a51d2&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/400820d43452952cc12ae8690e3157840e7a51d2&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3975167" author="JIRAUSER1259062" created="Mon, 2 Aug 2021 12:48:50 +0000"  >&lt;h2&gt;&lt;a name=&quot;Analysis&quot;&gt;&lt;/a&gt;Analysis&lt;/h2&gt;

&lt;p&gt;The requirement is to have a state (a variable) that represents the current configuration of the feature supporting the long collection names.&lt;/p&gt;

&lt;p&gt;The actors involved in the story are:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Unpatched old branches that do not support the feature at all (i.e., from 4.0 up to 5.0).
	&lt;ul&gt;
		&lt;li&gt;The only possible configuration state is &lt;em&gt;disabled&lt;/em&gt;.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Patched old branches that support the feature (i.e., from 4.0+ up to 5.0+).
	&lt;ul&gt;
		&lt;li&gt;The possible configuration states are &lt;em&gt;disabled&lt;/em&gt; (default) or &lt;em&gt;explicitly enabled&lt;/em&gt; (which means that the user explicitly has enabled the feature using a dedicated command).&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;5.1 binary with FCV set to 5.0.
	&lt;ul&gt;
		&lt;li&gt;The possible configuration states are &lt;em&gt;disabled&lt;/em&gt; or &lt;em&gt;explicitly enabled&lt;/em&gt;.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;5.1 binary with FCV set to 5.1.
	&lt;ul&gt;
		&lt;li&gt;The possible configuration states are &lt;em&gt;explicitly enabled&lt;/em&gt; and &lt;em&gt;implicitly enabled&lt;/em&gt; (the feature was disabled, but setting FCV to 5.1 this has been implicitly enabled).&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The following table summarizes the involved actors, possible configuration status and allowed transactions:&lt;/p&gt;
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;Supporting feature&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;5.0 Binary / 5.0 FCV &lt;sup&gt;1&lt;/sup&gt;&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;5.1 Binary / 5.0 FCV&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;5.1 Binary / 5.1 FCV&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;No&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Disabled (unavailable)&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Disabled&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Implicitly enabled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Yes&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Disabled (unavailable)&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Disabled&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Implicitly enabled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Yes&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Explicitly enabled&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Explicitly enabled&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Explicitly enabled&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;


&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; Or older versions.&lt;/p&gt;

&lt;p&gt;The last two columns represent the allowed transactions for setting FCV from 5.0 to 5.1 and vice versa. This also highlights the need to have a three-state variable instead of a simpler binary state, i.e., downgrading from FCV 5.1 to 5.0 must know if the feature has been explicitly or implicitly enabled in order to disable or leave it enabled.&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;Solution&quot;&gt;&lt;/a&gt;Solution&lt;/h2&gt;

&lt;p&gt;&lt;b&gt;NOTE: The following is a speculative solution based on current knowledge of the problem and existing implementation.&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;A valid candidate as a variable name is &lt;tt&gt;LongCollectionNameSupport&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;From a technical perspective, this can be implemented using an optional boolean where the possible values correspond to:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;tt&gt;None&lt;/tt&gt;: Disabled&lt;/li&gt;
	&lt;li&gt;&lt;tt&gt;False&lt;/tt&gt;: Implicitly enabled&lt;/li&gt;
	&lt;li&gt;&lt;tt&gt;True&lt;/tt&gt;: Explicitly enabled&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Thus, the allows state transactions are:&lt;br/&gt;
 &lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;img src=&quot;https://jira.mongodb.org/secure/attachment/327955/327955_LongCollectionNameSupport+FSM.png&quot; style=&quot;border: 0px solid black&quot; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;Details&quot;&gt;&lt;/a&gt;Details&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Why cannot opt for an enumeration variable directly? Because we need to cover use cases where the new 5.1 binary must work with 5.0 metadata and must allow the downgrade from FCV 5.1 to 5.0. In this scenario, an optional Boolean seems to me the most suitable solution.&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="1819979">SERVER-58571</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1819983">SERVER-58572</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1819985">SERVER-58573</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1819988">SERVER-58574</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1819999">SERVER-58575</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="327955" name="LongCollectionNameSupport FSM.png" size="22761" author="antonio.fuschetto@mongodb.com" created="Mon, 2 Aug 2021 12:47:24 +0000"/>
                    </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>1.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, 2 Aug 2021 12:48:50 +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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-2384</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_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>antonio.fuschetto@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>sergi.mateo-bellido@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|hzsftz:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hzcoyv:</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="5178">Sharding EMEA 2021-08-09</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|hzs233:</customfieldvalue>

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