<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:07:42 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-45039] Awaitable isMaster returns an error on reconfigs that change the SplitHorizon</title>
                <link>https://jira.mongodb.org/browse/SERVER-45039</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Consider the scenario:&lt;br/&gt;
 1. A client sends an isMaster request to the server over a specific horizon h.&lt;br/&gt;
 2. A reconfig happens, making horizon h no longer valid.&lt;br/&gt;
 3a. In the non-exhaust case, the next isMaster request will fail to find the host.&lt;br/&gt;
 3b. In the exhaust case, the connection will still be live because the connection is still open.&lt;/p&gt;

&lt;p&gt;We will respond with an error to all waiting isMasters for reconfigs that change the horizon. This terminates the exhaust stream, when exhaust is used.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1046554">SERVER-45039</key>
            <summary>Awaitable isMaster returns an error on reconfigs that change the SplitHorizon</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="jason.chan@mongodb.com">Jason Chan</assignee>
                                    <reporter username="jason.chan@mongodb.com">Jason Chan</reporter>
                        <labels>
                    </labels>
                <created>Tue, 10 Dec 2019 16:21:02 +0000</created>
                <updated>Mon, 8 Jan 2024 15:23:10 +0000</updated>
                            <resolved>Mon, 10 Feb 2020 13:24:24 +0000</resolved>
                                    <version>4.3 Required</version>
                                    <fixVersion>4.3.4</fixVersion>
                                    <component>Replication</component>
                                        <votes>0</votes>
                                    <watches>5</watches>
                                                                                                                <comments>
                            <comment id="2844248" author="xgen-internal-githook" created="Fri, 7 Feb 2020 23:54:03 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Jason Chan&apos;, &apos;username&apos;: &apos;jasonjhchan&apos;, &apos;email&apos;: &apos;jason.chan@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-45039&quot; title=&quot;Awaitable isMaster returns an error on reconfigs that change the SplitHorizon&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-45039&quot;&gt;&lt;del&gt;SERVER-45039&lt;/del&gt;&lt;/a&gt; Awaitable isMaster returns an error on reconfigs that change the SplitHorizon&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/80321ac758befea3afd579572575ab91f6bb9e9e&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/80321ac758befea3afd579572575ab91f6bb9e9e&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2767975" author="tess.avitabile" created="Tue, 28 Jan 2020 15:00:23 +0000"  >&lt;p&gt;I believe the next isMaster will fail with a network error.&lt;/p&gt;</comment>
                            <comment id="2766955" author="shane.harvey" created="Mon, 27 Jan 2020 23:15:05 +0000"  >&lt;blockquote&gt;&lt;p&gt;since the server will respond with an error message, which terminates the exhaust stream, the client would need to send a new isMaster request, at which point they would see the horizon is no longer valid. So it&apos;s not essential to close the connection.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I&apos;m trying to decide if it would make more sense for the client to simply close the connection after isMaster fails. Is the assumption that the next isMaster on that same connection will fail with a command error or fail with a network error?&lt;/p&gt;</comment>
                            <comment id="2731470" author="tess.avitabile" created="Wed, 15 Jan 2020 14:58:01 +0000"  >&lt;p&gt;Per in-person discussion, since the server will respond with an error message, which terminates the exhaust stream, the client would need to send a new isMaster request, at which point they would see the horizon is no longer valid. So it&apos;s not essential to close the connection. Any driver that is behavior correctly should eventually stop using the connection. &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=mira.carey%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;mira.carey@mongodb.com&quot;&gt;mira.carey@mongodb.com&lt;/a&gt; will follow up about whether it&apos;s desirable in general to close connections over a particular horizon when that horizon becomes invalid.&lt;/p&gt;</comment>
                            <comment id="2731351" author="jason.carey" created="Wed, 15 Jan 2020 14:32:12 +0000"  >&lt;p&gt;Per whether to close sockets on reconfig that changes horizon:&lt;/p&gt;

&lt;p&gt;My thought had been that in a non-exhaust mode, a reconfig that changed horizon such that you as a client could no longer reach the replica set would mean that you would no longer receive events for that host (because there would be no way to do a name lookup based on an ismaster response that would give you a valid socket).  With exhaust mode, you could receive that message and would have to yourself realize that the socket you have in hand isn&apos;t valid to communicate over.  Rather than put the onus on the driver to figure that out, erring on the side of closing monitoring sockets felt like the least mental overhead design-wise.&lt;/p&gt;

&lt;p&gt;In terms of why this would be relevant for this project (and not homed in the split horizon project):&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;without exhaust, there would be no way to have a correct view of the topology and be monitoring that cluster through an invalid channel&lt;/li&gt;
	&lt;li&gt;Non-monitoring sockets are less risky, in that they don&apos;t themselves feed into the machinery for deciding where to route requests&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;If you&apos;d rather tackle this by closing sockets when we perform horizon altering reconfigs, I can definitely see that angle.  But either way I think I&apos;d lean towards closing the socket (just to make it easier to reason about possible state transitions)&lt;/p&gt;</comment>
                            <comment id="2725070" author="tess.avitabile" created="Tue, 14 Jan 2020 19:15:56 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=mira.carey%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;mira.carey@mongodb.com&quot;&gt;mira.carey@mongodb.com&lt;/a&gt;, I just wanted to remind you about the above question.&lt;/p&gt;</comment>
                            <comment id="2715455" author="tess.avitabile" created="Thu, 9 Jan 2020 22:16:42 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=mira.carey%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;mira.carey@mongodb.com&quot;&gt;mira.carey@mongodb.com&lt;/a&gt;, I have a design question for you. We are planning to return an error on all waiting isMaster requests when a reconfig changes the horizon mapping. This will terminate exhaust streams for exhaust isMaster requests. We are wondering whether we also need to close the connection. &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=jason.chan&quot; class=&quot;user-hover&quot; rel=&quot;jason.chan&quot;&gt;jason.chan&lt;/a&gt; described that if the client connected over a horizon that has been removed, then it may be unsafe to allow the connection to remain open. However, this seems unrelated to awaitable/exhaust isMaster and it should have been part of the original Split Horizons project. We would also want to close the connection regardless of whether it has a currently running isMaster request. Do you know if it&apos;s a requirement that we close connections over removed horizons? If so, was this covered by the Split Horizons project? If not, I would like to handle this as a bug separate from this project.&lt;/p&gt;</comment>
                            <comment id="2638111" author="tess.avitabile" created="Tue, 17 Dec 2019 18:09:01 +0000"  >&lt;p&gt;As part of this work, we will add tests for streamable isMaster with split horizon:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;isMaster is waiting when a reconfig changes the horizons&lt;/li&gt;
	&lt;li&gt;Reconfig that changes the horizons followed by an isMaster&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>8.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, 17 Dec 2019 18:09:01 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        4 years, 5 days 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-1400</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>
                            4 years, 5 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>jason.chan@mongodb.com</customfieldvalue>
            <customfieldvalue>mira.carey@mongodb.com</customfieldvalue>
            <customfieldvalue>shane.harvey@mongodb.com</customfieldvalue>
            <customfieldvalue>tess.avitabile@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hw9thj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hvl7av:</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="3440">Repl 2020-01-27</customfieldvalue>
    <customfieldvalue id="3575">Repl 2020-02-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|hw9fqv:</customfieldvalue>

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