<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:37:16 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-78026] Make ClusterServerParameter base class explicitly aware of OperationContext </title>
                <link>https://jira.mongodb.org/browse/SERVER-78026</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Cluster parameters need an operation context since they do writes and to take locks.&lt;br/&gt;
Things which touch on-disk state should always accept an OperationContext in their arguments to indicate they do possibly blocking yet interruptible work&lt;/p&gt;</description>
                <environment></environment>
        <key id="2366687">SERVER-78026</key>
            <summary>Make ClusterServerParameter base class explicitly aware of OperationContext </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="1" iconUrl="https://jira.mongodb.org/images/icons/statuses/open.png" description="">Open</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="backlog-server-catalog-and-routing">Backlog - Catalog and Routing</assignee>
                                    <reporter username="judah.schvimer@mongodb.com">Judah Schvimer</reporter>
                        <labels>
                            <label>car-qw</label>
                            <label>oldshardingemea</label>
                    </labels>
                <created>Tue, 13 Jun 2023 14:03:13 +0000</created>
                <updated>Thu, 26 Oct 2023 10:04:18 +0000</updated>
                                                                                                <votes>0</votes>
                                    <watches>5</watches>
                                                                                                                <comments>
                            <comment id="5785514" author="varun.ravichandran" created="Tue, 17 Oct 2023 17:01:21 +0000"  >&lt;p&gt;Since Sharding EMEA now owns cluster server parameters, I&apos;m reassigning this over to their backlog.&lt;/p&gt;

&lt;p&gt;I think the rationale for this ticket is certainly valid for cluster server parameters, specifically. However, startup server parameters would be a harder case to tackle since &lt;tt&gt;OperationContext&lt;/tt&gt; is often not available at that the time that those parameters are initialized. Since cluster server parameters are built on top of existing server parameters, we are forced to consider the implications of passing &lt;tt&gt;OperationContext&lt;/tt&gt; to all kinds of server parameters even though CSPs are the only ones that would benefit from this.&lt;/p&gt;

&lt;p&gt;I&apos;ll defer to Sharding EMEA to make a decision on cost/benefit analysis and determine the best way forward.&lt;/p&gt;

&lt;p&gt;cc: &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=sergi.mateo-bellido%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;sergi.mateo-bellido@mongodb.com&quot;&gt;sergi.mateo-bellido@mongodb.com&lt;/a&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="5515128" author="max.hirschhorn@10gen.com" created="Wed, 21 Jun 2023 13:33:10 +0000"  >&lt;blockquote&gt;
&lt;p&gt;Since these are in-memory updates and executed within an &lt;tt&gt;OpObserver&lt;/tt&gt;, they should not take database locks or perform any additional writes.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;The QuerySettingsManager is &lt;a href=&quot;https://github.com/mongodb/mongo/blob/a9be8ca874700611d017d28ccc486de2d87823ff/src/mongo/db/query/query_settings_manager.cpp#L129-L131&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;written to be using a Lock::ResourceMutex as an interruptible reader&amp;#45;writer lock&lt;/a&gt;. It currently &lt;a href=&quot;https://github.com/mongodb/mongo/blob/a9be8ca874700611d017d28ccc486de2d87823ff/src/mongo/db/query/query_settings_manager.cpp#L192&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;relies on calling &lt;tt&gt;Client::getCurrent()&amp;#45;&amp;gt;getOperationContext()&lt;/tt&gt;&lt;/a&gt; in append(), set(), and reset(). Either we should make the contract explicit ClusterServerParameters may depend on an OperationContext to synchronize the in&amp;#45;memory state or we need to develop a different style for writing such ClusterServerParameters.&lt;/p&gt;</comment>
                            <comment id="5514029" author="varun.ravichandran" created="Tue, 20 Jun 2023 22:43:29 +0000"  >&lt;p&gt;Cluster server parameters derive from the server parameter interface, causing them to have the same &lt;tt&gt;append()&lt;/tt&gt;, &lt;tt&gt;set()&lt;/tt&gt;, &lt;tt&gt;reset()&lt;/tt&gt;, and &lt;tt&gt;validate()&lt;/tt&gt; methods. Although CSPs involve writing data to disk, this is not expected to occur when any of those methods are called. The expected flow is the following:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;&lt;tt&gt;setClusterParameter&lt;/tt&gt; is executed for some parameter. This directly calls &lt;tt&gt;ServerParameter::validate&lt;/tt&gt; for the parameter being updated, which is not expected to take locks or be a blocking operation. If run on a mongos, it then calls &lt;tt&gt;_configsvrSetClusterParameter&lt;/tt&gt;, which coordinates the writes across all shards and itself. These commands all have &lt;tt&gt;OperationContext&lt;/tt&gt; available so that they can be interrupted.&lt;/li&gt;
	&lt;li&gt;After the write is applied on a given node, the &lt;tt&gt;ClusterServerParameterOpObserver&lt;/tt&gt; fires to perform the appropriate in-memory updates. At this stage, &lt;tt&gt;ServerParameter::set()&lt;/tt&gt; and/or &lt;tt&gt;ServerParameter::reset()&lt;/tt&gt; is expected to be called. Since these are in-memory updates and executed within an &lt;tt&gt;OpObserver&lt;/tt&gt;, they should not take database locks or perform any additional writes.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Based on the above, I don&apos;t anticipate gaining significant value from introducing &lt;tt&gt;OperationContext*&lt;/tt&gt; to the server parameter API. The blocking and interruptible portion of cluster parameter propagation is contained within &lt;tt&gt;setClusterParameter&lt;/tt&gt; and &lt;tt&gt;_configsvrSetClusterParameter&lt;/tt&gt;, and those have the &lt;tt&gt;OperationContexts&lt;/tt&gt; available to be killed.&#160;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="2382846">SERVER-78632</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="2366690">SERVER-78027</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </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>8.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="26387"><![CDATA[Catalog and Routing]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_23577" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>CAR Impact</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25715"><![CDATA[2 Medium  (users + team) or (team + external teams)]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 20 Jun 2023 22:43:29 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        16 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_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>dbeng-pm-bot</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            16 weeks, 1 day ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>backlog-server-catalog-and-routing</customfieldvalue>
            <customfieldvalue>judah.schvimer@mongodb.com</customfieldvalue>
            <customfieldvalue>max.hirschhorn@mongodb.com</customfieldvalue>
            <customfieldvalue>varun.ravichandran@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i2dltz:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i1vths:</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="7325">Security 2023-07-10</customfieldvalue>
    <customfieldvalue id="7326">Security 2023-07-24</customfieldvalue>
    <customfieldvalue id="7403">Security 2023-08-07</customfieldvalue>
    <customfieldvalue id="7404">Security 2023-08-21</customfieldvalue>
    <customfieldvalue id="7702">Security 2023-09-04</customfieldvalue>
    <customfieldvalue id="7703">Security 2023-09-18</customfieldvalue>
    <customfieldvalue id="7704">Security 2023-10-02</customfieldvalue>
    <customfieldvalue id="7705">Security 2023-10-16</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10555" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.0</customfieldvalue>
                        </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|i2d7zb:</customfieldvalue>

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