<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:28:45 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-31968] Refactor FCV component code in order to remove circular dependencies around feature_compatibility_version.h/cpp</title>
                <link>https://jira.mongodb.org/browse/SERVER-31968</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Right now, we define FeatureCompatibilityVersion::kCollection in feature_compatibility_version.h. It is problematic because:&lt;br/&gt;
1. It&apos;s a StringData but it really should be a NamespaceString (&quot;admin.system.version&quot;). Also the name is ambiguous: its name implies the string value should be &quot;system.version&quot; but the db name is in it.&lt;br/&gt;
2. feature_compatibility_version is pretty high-level since it makes calls to high-level functions such as _runUpdateCommand. Some lower-level code (such as op_observer_impl.cpp) refer to this constant (kCollection) so it causes an unnecessary circular dependency issue.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;&lt;br/&gt;
Further work required to successfully remove the circular dependencies and clean up the code. See below comment. Title has been updated.&lt;/p&gt;</description>
                <environment></environment>
        <key id="458430">SERVER-31968</key>
            <summary>Refactor FCV component code in order to remove circular dependencies around feature_compatibility_version.h/cpp</summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</type>
                                            <priority id="4" iconUrl="https://jira.mongodb.org/images/icons/priorities/minor.svg">Minor - P4</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="12300">Won&apos;t Do</resolution>
                                        <assignee username="backlog-server-execution">Backlog - Storage Execution Team</assignee>
                                    <reporter username="xiangyu.yao@mongodb.com">Xiangyu Yao</reporter>
                        <labels>
                            <label>neweng</label>
                            <label>todo_in_code</label>
                    </labels>
                <created>Tue, 14 Nov 2017 17:41:12 +0000</created>
                <updated>Tue, 6 Dec 2022 03:46:43 +0000</updated>
                            <resolved>Mon, 19 Aug 2019 20:34:29 +0000</resolved>
                                                                    <component>Upgrade/Downgrade</component>
                                        <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="1819236" author="dianna.hohensee" created="Wed, 28 Feb 2018 22:33:14 +0000"  >&lt;p&gt;Making this a master ticket.&lt;/p&gt;

&lt;p&gt;Created &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-33561&quot; title=&quot;Add a featureCompatibilityVersion document parser&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-33561&quot;&gt;&lt;del&gt;SERVER-33561&lt;/del&gt;&lt;/a&gt; and &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-33562&quot; title=&quot;Move FeatureCompatibilityVersion::kCollection and FeatureCompatibilityVersion::kDatabase into namespace_string.h and clean up file dependencies&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-33562&quot;&gt;&lt;del&gt;SERVER-33562&lt;/del&gt;&lt;/a&gt; to cover the work we want to be done as part of the 4.0 upgrade/downgrade project (PM-936). feature_compatibility_version.h/cpp is fairly high level file, so lower level code can&apos;t include it as a dependency. This work will move string constants and toString/parse helpers out of feature_compatibility_version.h/cpp into a light weight low dependency file, which can be included anywhere.&lt;/p&gt;</comment>
                            <comment id="1798616" author="dianna.hohensee" created="Wed, 7 Feb 2018 20:36:33 +0000"  >&lt;p&gt;So moving kCollection out of FeatureCompatibilityVersion doesn&apos;t suffice to remove the circular dependency issues. kParameter and kVersion are also used in various files in which kCollection is used .&lt;/p&gt;

&lt;p&gt;The issue appears to lie in FeatureCompatibilityVersion being simultaneously a FCV doc parser (should be an FCVType) and an OpObserver. Then there&apos;s FeatureCompatibilityVersionCommandParser and ServerGlobalParams::FeatureCompatibilityVersion off in left field. Need to rearrange the code.&lt;/p&gt;

&lt;p&gt;Initial, not completely verified or thought out, proposal&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;FeatureCompatibilityVersion::parse and FeatureCompatibilityVersionCommandParser::kVersion34, kVersion36, kVersionUpgradingTo36, etc., go into a new parse file. Maybe throw FeatureCompatibilityVersionCommandParser::extractVersionFromCommand functionality into the same file? FeatureCompatibilityVersionCommandParser is a light (low dependencies) file, so might be clean &amp;#8211; except commands.h is included... FeatureCompatibilityVersion::toString should probably go in here, too.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;FeatureCompatibilityVersion::setIfCleanStartup and isCleanStartUp should likely split off into its own file, because it has different dependencies than the OpObserver and parser functionality present in feature_compatibility_version.h/cpp? It has StorageInterface and StorageEngine uses.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;fcvLock should be usable from wherever FCV is checked, which lives in server_options.h, so maybe move that there? Consider putting internalValidateFeaturesAsMaster in server_options.h, too, but I&apos;m not sure what server_options.h logically encompasses, so there might be a better place for it &amp;#8211; or not, and it stays where it is.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;That leaves setTargetUpgrade/Downgrade and op oberserver code, which should all go together. Should consider moving setTargetUpgrade/Downgrade to the setFCV command, if it drags annoying dependencies somehow &amp;#8211; haven&apos;t looked.&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                            <outwardlinks description="depends on">
                                        <issuelink>
            <issuekey id="503767">SERVER-33561</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="503771">SERVER-33562</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="935554">SERVER-43447</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>2.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_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25136"><![CDATA[Storage Execution]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 7 Feb 2018 20:36:33 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        5 years, 50 weeks ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[<s><a href='https://jira.mongodb.org/browse/SERVER-33561'>SERVER-33561</a></s>, <s><a href='https://jira.mongodb.org/browse/SERVER-33562'>SERVER-33562</a></s>]]></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>alexander.golin@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            5 years, 50 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>backlog-server-execution</customfieldvalue>
            <customfieldvalue>dianna.hohensee@mongodb.com</customfieldvalue>
            <customfieldvalue>xiangyu.yao@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|htjy5r:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr6ohr:</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="2049">Storage 2018-01-01</customfieldvalue>
    <customfieldvalue id="2075">Storage 2018-01-15</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|htjk9j:</customfieldvalue>

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