<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:25:27 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>[DRIVERS-2386] Improve reliability of SDAM heartbeat error spec tests.</title>
                <link>https://jira.mongodb.org/browse/DRIVERS-2386</link>
                <project id="10980" key="DRIVERS">Drivers</project>
                    <description>&lt;div class=&quot;panel&quot; style=&quot;background-color: #fafbfc;border-color: #21313c;border-style: solid;border-width: 1px;&quot;&gt;&lt;div class=&quot;panelContent&quot; style=&quot;background-color: #fafbfc;&quot;&gt;
&lt;h3&gt;&lt;a name=&quot;Summary&quot;&gt;&lt;/a&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;/h3&gt;

&lt;p&gt;There are 3 SDAM spec tests that assert that the server monitor handles check (aka. heartbeat) errors after the initial handshake correctly:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/specifications/blob/00e244208cdad34ec8d16a4bcc3b41e9072ed106/source/server-discovery-and-monitoring/tests/integration/hello-command-error.yml#L73&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Command error on Monitor check&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/specifications/blob/00e244208cdad34ec8d16a4bcc3b41e9072ed106/source/server-discovery-and-monitoring/tests/integration/hello-network-error.yml#L72&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Network error on Monitor check&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/specifications/blob/00e244208cdad34ec8d16a4bcc3b41e9072ed106/source/server-discovery-and-monitoring/tests/integration/hello-timeout.yml#L73&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Network timeout on Monitor check&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Each of those tests registers a failpoint for &quot;hello&quot; that causes a specific type of error. The failpoint uses &quot;times: 2&quot; because both the server monitor and RTT monitor send &quot;hello&quot; operations to the server at roughly the same interval, so it&apos;s expected that both monitors may trigger a failpoint. However, sometimes the RTT monitor runs twice and triggers the failpoint 2 times before the server monitor runs again, leading to a test failure because the server monitor heartbeat never triggers a failpoint.&lt;/p&gt;

&lt;p&gt;That can happen because the server monitor and RTT monitor &lt;a href=&quot;https://github.com/mongodb/specifications/blob/00e244208cdad34ec8d16a4bcc3b41e9072ed106/source/server-discovery-and-monitoring/server-monitoring.rst#servers-are-monitored-in-parallel&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;run concurrently&lt;/a&gt; and use different timing mechanisms when awaitable &quot;hello&quot; is available. The server monitor using awaitable &quot;hello&quot; depends partially on server-side timing via &quot;maxAwaitTimeMS&quot; (see description &lt;a href=&quot;https://github.com/mongodb/specifications/blob/00e244208cdad34ec8d16a4bcc3b41e9072ed106/source/server-discovery-and-monitoring/server-monitoring.rst#heartbeat-frequency&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt;), while the RTT monitor timing is strictly driver-side (see description &lt;a href=&quot;https://github.com/mongodb/specifications/blob/00e244208cdad34ec8d16a4bcc3b41e9072ed106/source/server-discovery-and-monitoring/server-monitoring.rst#measuring-rtt&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt;). As a result, it&apos;s possible for the RTT monitor to run more than once before an in-progress awaitable &quot;hello&quot; returns and attempts to start a new &quot;hello&quot; that would trigger the failpoint.&lt;/p&gt;

&lt;p&gt;We can significantly reduce the probability of intermittent failures by increasing the number of times the failpoint can be triggered. If we do that, we also need to remove the assertion that exactly 1 &quot;ServerMarkedUnknownEvent&quot; and &quot;PoolClearedEvent&quot; events are fired (&lt;a href=&quot;https://github.com/mongodb/specifications/blob/00e244208cdad34ec8d16a4bcc3b41e9072ed106/source/server-discovery-and-monitoring/tests/integration/hello-network-error.yml#L118-L130&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;already done&lt;/a&gt; in the &quot;Network error on Monitor check&quot; spec test) because the server monitor would have a higher probability of triggering more than 1 failpoint.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;Motivation&quot;&gt;&lt;/a&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;/h3&gt;
&lt;h4&gt;&lt;a name=&quot;Whoistheaffectedenduser%3F&quot;&gt;&lt;/a&gt;Who is the affected end user?&lt;/h4&gt;
&lt;p&gt;DBX devs.&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;Howdoesthisaffecttheenduser%3F&quot;&gt;&lt;/a&gt;How does this affect the end user?&lt;/h4&gt;
&lt;p&gt;The SDAM &lt;a href=&quot;https://github.com/mongodb/specifications/blob/00e244208cdad34ec8d16a4bcc3b41e9072ed106/source/server-discovery-and-monitoring/tests/integration/hello-command-error.yml#L73&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Command error on Monitor check&lt;/a&gt;, &lt;a href=&quot;https://github.com/mongodb/specifications/blob/00e244208cdad34ec8d16a4bcc3b41e9072ed106/source/server-discovery-and-monitoring/tests/integration/hello-network-error.yml#L72&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Network error on Monitor check&lt;/a&gt;, or &lt;a href=&quot;https://github.com/mongodb/specifications/blob/00e244208cdad34ec8d16a4bcc3b41e9072ed106/source/server-discovery-and-monitoring/tests/integration/hello-timeout.yml#L73&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Network timeout on Monitor check&lt;/a&gt; spec tests fail intermittently.&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;Howlikelyisitthatthisproblemorusecasewilloccur%3F&quot;&gt;&lt;/a&gt;How likely is it that this problem or use case will occur?&lt;/h4&gt;
&lt;p&gt;The failure is caused by a race between the server monitor heartbeat loop and the RTT monitor loop. Depending on runtime conditions, the RTT monitor loop may run twice before the server monitor heartbeat loop runs once after the failpoint is registered. The observed failure rate in the Go Driver is around 5-10% if run individually, or around 1-2% if run with the rest of the test suite.&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;Iftheproblemdoesoccur%2Cwhataretheconsequencesandhowseverearethey%3F&quot;&gt;&lt;/a&gt;If the problem does occur, what are the consequences and how severe are they?&lt;/h4&gt;
&lt;p&gt;Pull request or waterfall Evergreen CI test runs may fail intermittently, leading to &quot;false positive&quot; test failures that create confusion, take time to troubleshoot, and possibly hide actual errors that are misinterpreted as errors due to a flaky test.&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;Isthisissueurgent%3F&quot;&gt;&lt;/a&gt;Is this issue urgent?&lt;/h4&gt;
&lt;p&gt;No.&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;Isthisticketrequiredbyadownstreamteam%3F&quot;&gt;&lt;/a&gt;Is this ticket required by a downstream team?&lt;/h4&gt;
&lt;p&gt;No.&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;Isthisticketonlyfortests%3F&quot;&gt;&lt;/a&gt;Is this ticket only for tests?&lt;/h4&gt;
&lt;p&gt;Yes.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="2086160">DRIVERS-2386</key>
            <summary>Improve reliability of SDAM heartbeat error spec tests.</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="10300" iconUrl="https://jira.mongodb.org/images/icons/priorities/medium.svg">Unknown</priority>
                        <status id="13453" iconUrl="https://jira.mongodb.org/images/icons/status_generic.gif" description="">Implementing</status>
                    <statusCategory id="4" key="indeterminate" colorName="inprogress"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="matt.dale@mongodb.com">Matt Dale</assignee>
                                    <reporter username="matt.dale@mongodb.com">Matt Dale</reporter>
                        <labels>
                    </labels>
                <created>Fri, 8 Jul 2022 23:07:59 +0000</created>
                <updated>Thu, 4 Aug 2022 17:58:57 +0000</updated>
                                                                <component>SDAM</component>
                                        <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="4677687" author="xgen-internal-githook" created="Wed, 13 Jul 2022 19:59:30 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Matt Dale&apos;, &apos;email&apos;: &apos;9760375+matthewdale@users.noreply.github.com&apos;, &apos;username&apos;: &apos;matthewdale&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-2386&quot; title=&quot;Improve reliability of SDAM heartbeat error spec tests.&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-2386&quot;&gt;DRIVERS-2386&lt;/a&gt; Improve reliability of SDAM heartbeat error spec tests. (#1272)&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/specifications/commit/98e20daa7e1bdf8f4acf391376531c477990bd3c&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/specifications/commit/98e20daa7e1bdf8f4acf391376531c477990bd3c&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4667580" author="JIRAUSER1259527" created="Fri, 8 Jul 2022 23:32:28 +0000"  >&lt;p&gt;Proposed test changes: &lt;a href=&quot;https://github.com/mongodb/specifications/pull/1272&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/specifications/pull/1272&lt;/a&gt;&lt;br/&gt;
Tested spec test changes in the Go Driver: &lt;a href=&quot;https://github.com/mongodb/mongo-go-driver/pull/1018&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-go-driver/pull/1018&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10620">
                    <name>Issue split</name>
                                            <outwardlinks description="split to">
                                        <issuelink>
            <issuekey id="2089233">CDRIVER-4426</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2089234">CXX-2544</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2105777">NODE-4504</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2089235">CSHARP-4252</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2089236">GODRIVER-2490</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2089237">JAVA-4677</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2089239">MOTOR-993</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2089238">NODE-4414</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2089241">PHPLIB-910</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2089240">PYTHON-3353</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2089242">RUBY-3050</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2089243">RUST-1407</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="2071783">GODRIVER-2464</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                            <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_17052" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Downstream Changes Summary</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>&lt;p&gt;Sync &lt;a href=&quot;https://github.com/mongodb/specifications/tree/98e20daa7e1bdf8f4acf391376531c477990bd3c/source/server-discovery-and-monitoring/tests/integration&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;SDAM integration spec tests&lt;/a&gt; at revision &lt;a href=&quot;https://github.com/mongodb/specifications/commit/98e20daa7e1bdf8f4acf391376531c477990bd3c&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;98e20daa&lt;/a&gt;.&lt;/p&gt;</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10951" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Driver Changes</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10748"><![CDATA[Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_23952" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Driver Compliance</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[<style type='text/css'>
         #scriptField, #scriptField *{
                border: 1px solid black;
            }

            #scriptField{
                border-collapse: collapse;
            }

            #scriptField td {
                text-align: center; /* Center-align text in table cells */
            }

            #scriptField td.key {
                text-align: left; /* Left-align text in the Key column */
            }

            #scriptField a {
                text-decoration: none; /* Remove underlines from links */
                border: none; /* Remove border from links */
            }
            
            /* Add green background color to cells with FixVersion */
            #scriptField td.hasFixVersion {
                background-color: #00FF00; /* Green color code */
            }

            /* Center-align the first row headers */
            #scriptField th {
                text-align: center;
            }
        </style>
<table id='scriptField'>
  <tr>
    <th>Key</th>
    <th>Status/Resolution</th>
    <th>FixVersion</th>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CDRIVER-4426'>CDRIVER-4426</a>
    </td>
    <td>Backlog</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CXX-2544'>CXX-2544</a>
    </td>
    <td>Backlog</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CSHARP-4252'>CSHARP-4252</a>
    </td>
    <td>Done</td>
    <td class='hasFixVersion'>2.18.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/GODRIVER-2490'>GODRIVER-2490</a>
    </td>
    <td>Done</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/JAVA-4677'>JAVA-4677</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>4.7.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/NODE-4414'>NODE-4414</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>4.9.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/MOTOR-993'>MOTOR-993</a>
    </td>
    <td>Duplicate</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/PYTHON-3353'>PYTHON-3353</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>4.2</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/PHPLIB-910'>PHPLIB-910</a>
    </td>
    <td>Won't Do</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/RUBY-3050'>RUBY-3050</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>2.18.1</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/RUST-1407'>RUST-1407</a>
    </td>
    <td>Duplicate</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/SWIFT-1601'>SWIFT-1601</a>
    </td>
    <td>Duplicate</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/NODE-4504'>NODE-4504</a>
    </td>
    <td>Backlog</td>
    <td class=''></td>
  </tr>
</table>]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i0kfs0:</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>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>