<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:30:18 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-53231] Generate V1 commands&apos; base classes in separate .h/.cpp files</title>
                <link>https://jira.mongodb.org/browse/SERVER-53231</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Today we generate C++ base classes from IDL for all API Version 1 commands (&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-51862&quot; title=&quot;Generate a C++ base class for each V1 command&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-51862&quot;&gt;&lt;del&gt;SERVER-51862&lt;/del&gt;&lt;/a&gt;). The generated files required the TypedCommand definition so they include commands.h. This tends to produce include-cycles as we convert more V1 commands to IDL: commands.h includes many headers, if one of those headers includes an IDL-generated file that defines a V1 command, a cycle forms.&lt;/p&gt;

&lt;p&gt;Let&apos;s give ourselves some flexibility in how we choose to break include-cycles, by generating V1 commands into separate files.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1559505">SERVER-53231</key>
            <summary>Generate V1 commands&apos; base classes in separate .h/.cpp files</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="13202">Works as Designed</resolution>
                                        <assignee username="backlog-server-repl">Backlog - Replication Team</assignee>
                                    <reporter username="jesse@mongodb.com">A. Jesse Jiryu Davis</reporter>
                        <labels>
                    </labels>
                <created>Fri, 4 Dec 2020 13:12:06 +0000</created>
                <updated>Fri, 27 Oct 2023 13:52:34 +0000</updated>
                            <resolved>Tue, 22 Dec 2020 15:29:55 +0000</resolved>
                                                                    <component>Replication</component>
                                        <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="3539625" author="jesse" created="Tue, 22 Dec 2020 15:29:55 +0000"  >&lt;p&gt;So far, our alternative approach has worked well, I don&apos;t think we need to do this ticket.&lt;/p&gt;</comment>
                            <comment id="3516046" author="jesse" created="Fri, 4 Dec 2020 13:25:31 +0000"  >&lt;p&gt;For example, say we generate a C++ base class for the &quot;create&quot; command, which is defined in create.idl and generated in create_gen.h.&lt;/p&gt;

&lt;p&gt;collection_options.h includes create_gen.h because it needs a few &lt;b&gt;other&lt;/b&gt; types defined in create.idl. This leads to an include cycle:&lt;/p&gt;

&lt;p&gt;src/mongo/db/commands.h includes&lt;br/&gt;
src/mongo/db/query/explain.h includes&lt;br/&gt;
src/mongo/db/query/plan_cache.h includes&lt;br/&gt;
src/mongo/db/query/canonical_query.h includes&lt;br/&gt;
src/mongo/db/matcher/extensions_callback_noop.h includes&lt;br/&gt;
src/mongo/db/matcher/extensions_callback.h includes&lt;br/&gt;
src/mongo/db/pipeline/expression_context.h includes&lt;br/&gt;
src/mongo/db/pipeline/process_interface/mongo_process_interface.h includes&lt;br/&gt;
src/mongo/db/repl/oplog_entry.h includes&lt;br/&gt;
src/mongo/db/catalog/collection_options.h includes&lt;br/&gt;
build/ninja/mongo/db/commands/create_gen.h includes&lt;br/&gt;
src/mongo/db/commands.h&lt;/p&gt;

&lt;p&gt;If we generate separate files just for the base class, say &quot;create_bases_gen.h&quot; and &quot;create_bases_gen.cpp&quot;, then only those files would need to include commands.h, and the existing create_gen.h would not include commands.h. (Update&#160;idlc_emitter() in idl_tool.py to emit the additional .h/.cpp files, and generate.py to generate them.)&lt;/p&gt;

&lt;p&gt;Alternatively, each time we add apiVersion: &quot;1&quot; to a command&apos;s IDL definition, if its IDL file includes additional types that are used in other header files, then we may need to split the IDL file into two: one for the command, one for the additional types. This could require delicate surgery, but would avoid the change to the code generator.&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>2.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25128"><![CDATA[Replication]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        3 years, 7 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-1804</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>false</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>
                            3 years, 7 weeks, 1 day ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>jesse@mongodb.com</customfieldvalue>
            <customfieldvalue>backlog-server-repl</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hykc6f:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hy68xj:</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_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|hyjyfr:</customfieldvalue>

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