<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:38:41 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-56217] PoolForHost::_maxInUse is init to &lt;int&gt;::max and cannot be changed, and when connections are maxed DBConnectionPool::get() always throws</title>
                <link>https://jira.mongodb.org/browse/SERVER-56217</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;PoolForHost::_maxInUse is init to &amp;lt;int&amp;gt;::max and cannot be changed, and when connections are maxed using the DBConnectionPool::_maxInUse DBConnectionPool::get() always throws, immediately.&lt;/p&gt;

&lt;p&gt;To understand this bug first pay attention that there is &lt;a href=&quot;https://github.com/mongodb/mongo/blob/9df1b3a80f39cf7e7ccd6264a207518426a524f6/src/mongo/client/connpool.h#L226&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;PoolForHost::_maxInUse here&lt;/a&gt; and &lt;a href=&quot;https://github.com/mongodb/mongo/blob/9df1b3a80f39cf7e7ccd6264a207518426a524f6/src/mongo/client/connpool.h#L405&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;DBConnectionPool::_maxInUse here&lt;/a&gt;. They are not synchronized in any way.&lt;/p&gt;

&lt;p&gt;The DBConnectionPool::_maxInUse can be set with public method &lt;a href=&quot;https://github.com/mongodb/mongo/blob/9df1b3a80f39cf7e7ccd6264a207518426a524f6/src/mongo/client/connpool.h#L304-L306&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;setMaxInUse() here&lt;/a&gt;. The PoolForHost::_maxInUse is initialized in constructor to std::numeric_limits&amp;lt;int&amp;gt;::max() and there is no code path that changes it, it remains MAX_INT for every host for the lifetime of the pool.&lt;/p&gt;

&lt;p&gt;The PoolForHost::_maxInUse &lt;a href=&quot;https://github.com/mongodb/mongo/blob/9df1b3a80f39cf7e7ccd6264a207518426a524f6/src/mongo/client/connpool.cpp#L224-L232&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;is used only here, in waitForFreeConnection()&lt;/a&gt;. The logic is that waitForFreeConnection() is invoked from &lt;a href=&quot;https://github.com/mongodb/mongo/blob/9df1b3a80f39cf7e7ccd6264a207518426a524f6/src/mongo/client/connpool.cpp#L275&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;DBConnectionPool::Detail::get() here&lt;/a&gt; when the DBConnectionPool::_maxInUse is exhausted. &lt;/p&gt;

&lt;p&gt;However, this code fragment in waitForFreeConnection() always throws:&lt;/p&gt;

&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    auto condition = [&amp;amp;] { &lt;/span&gt;&lt;span style=&quot;color: #006699; font-weight: bold; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; (numInUse() &amp;lt; _maxInUse || _inShutdown.load()); };&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #006699; font-weight: bold; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; (timeout &amp;gt; 0) {&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;        stdx::chrono::seconds timeoutSeconds{timeout};&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #008200; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;// If we timed out waiting without getting a new connection, throw.&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;        uassert(ErrorCodes::ExceededTimeLimit,&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;                str::stream() &amp;lt;&amp;lt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;too many connections to &quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; &amp;lt;&amp;lt; _hostName &amp;lt;&amp;lt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;:&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt; &amp;lt;&amp;lt; timeout,&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;                !_cv.wait_for(lk, timeoutSeconds, condition));&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;because the &apos;condition&apos; &quot;numInUse() &amp;lt; _maxInUse&quot; is always true because _maxInUse is MAX_INT. Thus the &quot;_cv.wait_for()&quot; never blocks because the condition is always true when it&apos;s invoked. However the assertion &quot;!_cv.wait_for(...)&quot; always throws because wait_for() always returns true and its negation is asserted.&lt;/p&gt;

&lt;p&gt;As a result of this bug the behavior of DBConnectionPool is that once the connection count reaches the limit the get() always throws, immediately. The code actually expects that it should block for specified timeout, throwing without blocking should create very tight loops somewhere up the stack, if the caller logic retries whatever it needs the connection pool for.&lt;/p&gt;

&lt;h2&gt;&lt;a name=&quot;Theproposedfixactuallycontains4bugfixesinonechange%2CCRpending&quot;&gt;&lt;/a&gt;The proposed fix actually contains 4 bugfixes in one change, CR pending&lt;/h2&gt;

&lt;p&gt;1. PoolForHost::_maxInUse is removed as there is a similar field in DBConnectionPool and it was never set properly&lt;/p&gt;

&lt;p&gt;2. PoolKey::timeout is changed from double to int64. The reason is that it is dangerous to make a double key for a container, container lookup may become non-deterministic because of double precision ops errors&lt;/p&gt;

&lt;p&gt;3. In PoolForHost::waitForFreeConnection(), &quot;!_cv.wait_for(...)&quot; is changed to &quot;_cv.wait_for()&quot;. The inversion of the wait return value for assertion is a bug, in case of timeout wait() returns false and we should assert it without inversion&lt;/p&gt;

&lt;p&gt;4. DBConnectionPool::decrementEgress() must notify waiters. This is &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56147&quot; title=&quot;In connection PoolForHost, a thread blocked waiting for free connection may be never notified&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56147&quot;&gt;&lt;del&gt;SERVER-56147&lt;/del&gt;&lt;/a&gt;, the CV is never notified if the connection is released using this method.&lt;/p&gt;
</description>
                <environment></environment>
        <key id="1684563">SERVER-56217</key>
            <summary>PoolForHost::_maxInUse is init to &lt;int&gt;::max and cannot be changed, and when connections are maxed DBConnectionPool::get() always throws</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</type>
                                            <priority id="2" iconUrl="https://jira.mongodb.org/images/icons/priorities/critical.svg">Critical - P2</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="andrew.shuvalov@mongodb.com">Andrew Shuvalov</assignee>
                                    <reporter username="andrew.shuvalov@mongodb.com">Andrew Shuvalov</reporter>
                        <labels>
                    </labels>
                <created>Tue, 20 Apr 2021 23:05:30 +0000</created>
                <updated>Sun, 29 Oct 2023 21:54:44 +0000</updated>
                            <resolved>Fri, 23 Apr 2021 19:30:37 +0000</resolved>
                                    <version>4.0.24</version>
                                    <fixVersion>4.0.25</fixVersion>
                                                        <votes>0</votes>
                                    <watches>10</watches>
                                                                                                                <comments>
                            <comment id="3739842" author="xgen-internal-githook" created="Mon, 26 Apr 2021 20:45:34 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Andrew Shuvalov&apos;, &apos;email&apos;: &apos;andrew.shuvalov@mongodb.com&apos;, &apos;username&apos;: &apos;shuvalov-mdb&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56217&quot; title=&quot;PoolForHost::_maxInUse is init to &amp;lt;int&amp;gt;::max and cannot be changed, and when connections are maxed DBConnectionPool::get() always throws&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56217&quot;&gt;&lt;del&gt;SERVER-56217&lt;/del&gt;&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56147&quot; title=&quot;In connection PoolForHost, a thread blocked waiting for free connection may be never notified&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56147&quot;&gt;&lt;del&gt;SERVER-56147&lt;/del&gt;&lt;/a&gt;: maxed out connection pool should respect get() timeout and CV should be notified on connection release&lt;br/&gt;
Branch: v4.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/3d8730be2c747dfe869614e215808ceddafa8516&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/3d8730be2c747dfe869614e215808ceddafa8516&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3739837" author="xgen-internal-githook" created="Mon, 26 Apr 2021 20:45:26 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Andrew Shuvalov&apos;, &apos;email&apos;: &apos;andrew.shuvalov@mongodb.com&apos;, &apos;username&apos;: &apos;shuvalov-mdb&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56217&quot; title=&quot;PoolForHost::_maxInUse is init to &amp;lt;int&amp;gt;::max and cannot be changed, and when connections are maxed DBConnectionPool::get() always throws&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56217&quot;&gt;&lt;del&gt;SERVER-56217&lt;/del&gt;&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56147&quot; title=&quot;In connection PoolForHost, a thread blocked waiting for free connection may be never notified&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56147&quot;&gt;&lt;del&gt;SERVER-56147&lt;/del&gt;&lt;/a&gt;: maxed out connection pool should respect get() timeout and CV should be notified on connection release&lt;br/&gt;
Branch: v4.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/1d5cbc113d4318b79831113790c3abd09ba25098&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/1d5cbc113d4318b79831113790c3abd09ba25098&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3739835" author="xgen-internal-githook" created="Mon, 26 Apr 2021 20:45:23 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Andrew Shuvalov&apos;, &apos;email&apos;: &apos;andrew.shuvalov@mongodb.com&apos;, &apos;username&apos;: &apos;shuvalov-mdb&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56217&quot; title=&quot;PoolForHost::_maxInUse is init to &amp;lt;int&amp;gt;::max and cannot be changed, and when connections are maxed DBConnectionPool::get() always throws&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56217&quot;&gt;&lt;del&gt;SERVER-56217&lt;/del&gt;&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56147&quot; title=&quot;In connection PoolForHost, a thread blocked waiting for free connection may be never notified&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56147&quot;&gt;&lt;del&gt;SERVER-56147&lt;/del&gt;&lt;/a&gt;: maxed out connection pool should respect get() timeout and CV should be notified on connection release&lt;br/&gt;
Branch: v4.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/5c8ec91022cd185490fb960a5a7fdaf1c58f94d7&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/5c8ec91022cd185490fb960a5a7fdaf1c58f94d7&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3736535" author="JIRAUSER1256988" created="Fri, 23 Apr 2021 19:39:37 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=bruce.lucas&quot; class=&quot;user-hover&quot; rel=&quot;bruce.lucas&quot;&gt;bruce.lucas&lt;/a&gt;, as we use two different implementations of connection pool: src/mongo/client/connpool.h (this is the older one) and src/mongo/executor/connection_pool.h, I was surprised to find that the old one usage is limited to:&lt;/p&gt;

&lt;p&gt;1. src/mongo/client/global_conn_pool.cpp &quot;globalConnPool&quot;&lt;br/&gt;
2. src/mongo/s/client/shard_connection.cpp &quot;shardConnectionPool&quot;&lt;/p&gt;

&lt;p&gt;Thus the errors I am fixing are not expected to affect the production at all, this is why nobody fixed them in 5 years. However, I think the DBConnectionPool should be either deprecated or fixed, keeping definitely broken code is dangerous, as one unrelated change can actually expose the bugs. There is no TODO for anyone else except me.&lt;/p&gt;</comment>
                            <comment id="3736501" author="xgen-internal-githook" created="Fri, 23 Apr 2021 19:23:24 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Andrew Shuvalov&apos;, &apos;email&apos;: &apos;andrew.shuvalov@mongodb.com&apos;, &apos;username&apos;: &apos;shuvalov-mdb&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56217&quot; title=&quot;PoolForHost::_maxInUse is init to &amp;lt;int&amp;gt;::max and cannot be changed, and when connections are maxed DBConnectionPool::get() always throws&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56217&quot;&gt;&lt;del&gt;SERVER-56217&lt;/del&gt;&lt;/a&gt;: PoolForHost::_maxInUse is init to &amp;lt;int&amp;gt;::max and cannot be changed, and when connections are maxed DBConnectionPool::get() always throws&lt;br/&gt;
Branch: v4.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/7d39fbc97a721752fce1c94f37ad4dea3dd5307c&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/7d39fbc97a721752fce1c94f37ad4dea3dd5307c&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3731827" author="JIRAUSER1256988" created="Wed, 21 Apr 2021 23:28:48 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=bruce.lucas&quot; class=&quot;user-hover&quot; rel=&quot;bruce.lucas&quot;&gt;bruce.lucas&lt;/a&gt; please allow me several days to answer this. In short the client requests should timeout immediately when connection pool at mongos is full, however I do not know how exactly it will show up in the logs before targeting this in repro. I&apos;m working on all code fixes accumulated for HELP ticket and only after I&apos;ll get back to stress tests.&lt;/p&gt;</comment>
                            <comment id="3731078" author="bruce.lucas@10gen.com" created="Wed, 21 Apr 2021 17:58:52 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=andrew.shuvalov&quot; class=&quot;user-hover&quot; rel=&quot;andrew.shuvalov&quot;&gt;andrew.shuvalov&lt;/a&gt; thanks for finding this. Can you add to the description the signature that would be seen in the logs - exception message, invariant, stack trace, or whatever? This will help us find this issue if we encounter it in the future.&lt;/p&gt;</comment>
                            <comment id="3730135" author="JIRAUSER1256988" created="Wed, 21 Apr 2021 13:35:24 +0000"  >&lt;p&gt;Filed &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56229&quot; title=&quot;Forward-port SERVER-56217 bug in connection pool to head&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56229&quot;&gt;SERVER-56229&lt;/a&gt; to port this to head, will file backports from 5.0 when it&apos;s done.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="1685635">SERVER-56229</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>8.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.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>Wed, 21 Apr 2021 01:16:14 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        2 years, 41 weeks, 2 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_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>
                            2 years, 41 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10032" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Operating System</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10026"><![CDATA[ALL]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>andrew.shuvalov@mongodb.com</customfieldvalue>
            <customfieldvalue>bruce.lucas@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hz5ihj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hyqh47:</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="4516">Sharding 2021-05-03</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|hz54qn:</customfieldvalue>

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