<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:34:06 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>[GODRIVER-390] Getting a connection from a pool can be starved indefinitely</title>
                <link>https://jira.mongodb.org/browse/GODRIVER-390</link>
                <project id="14289" key="GODRIVER">Go Driver</project>
                    <description>&lt;p&gt;In an application where the maximum number of connections has been dialed and they are all in use, attempting to get a new connection will wait, attempting to acquire a semaphore. If the application has further heavy load and the idle pool is never filled, no connections will be closed, which will indefinitely starve the attempt to get a new connection.&lt;/p&gt;

&lt;p&gt;&lt;del&gt;To fix this problem:&lt;/del&gt;&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;&lt;del&gt;Refactor the code so that dialing a new connection is it&apos;s own function that takes a context and a channel.&lt;/del&gt;&lt;/li&gt;
	&lt;li&gt;&lt;del&gt;If we can acquire a permit from the semaphore, dial the connection and return it down the provided channel. If the context has been canceled, we close the connection, because the Get method received a connection from the idle pool or canceled the context for another reason.&lt;/del&gt;&lt;/li&gt;
	&lt;li&gt;&lt;del&gt;In the main Get method, attempt to first retrieve a connection from the idle pool, and if that cannot be done, then call the new connection method in a goroutine and block on either the new connection, an idle pool connection, or for the context&apos;s done channel. If either the context done channel or the idle pool connection channel unblock, cancel the new connection context.&lt;/del&gt;&lt;/li&gt;
&lt;/ol&gt;
</description>
                <environment></environment>
        <key id="535421">GODRIVER-390</key>
            <summary>Getting a connection from a pool can be starved indefinitely</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</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="kris.brandow@mongodb.com">Kristofer Brandow</assignee>
                                    <reporter username="kris.brandow@mongodb.com">Kristofer Brandow</reporter>
                        <labels>
                    </labels>
                <created>Fri, 27 Apr 2018 21:09:33 +0000</created>
                <updated>Sat, 28 Oct 2023 11:39:37 +0000</updated>
                            <resolved>Sat, 28 Apr 2018 19:01:08 +0000</resolved>
                                    <version>0.0.3</version>
                                    <fixVersion>0.0.4</fixVersion>
                                    <component>Connections</component>
                                        <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="1877082" author="xgen-internal-githook" created="Sat, 28 Apr 2018 19:00:12 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;email&apos;: &apos;kris@mongodb.com&apos;, &apos;username&apos;: &apos;skriptble&apos;, &apos;name&apos;: &apos;Kris Brandow&apos;}
&lt;p&gt;Message: Fix race conditions and leaks in connection pool&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/GODRIVER-388&quot; title=&quot;Creating a new connection may leak a semaphore permit&quot; class=&quot;issue-link&quot; data-issue-key=&quot;GODRIVER-388&quot;&gt;&lt;del&gt;GODRIVER-388&lt;/del&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://jira.mongodb.org/browse/GODRIVER-389&quot; title=&quot;Race condition when disconnecting a connection pool&quot; class=&quot;issue-link&quot; data-issue-key=&quot;GODRIVER-389&quot;&gt;&lt;del&gt;GODRIVER-389&lt;/del&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://jira.mongodb.org/browse/GODRIVER-390&quot; title=&quot;Getting a connection from a pool can be starved indefinitely&quot; class=&quot;issue-link&quot; data-issue-key=&quot;GODRIVER-390&quot;&gt;&lt;del&gt;GODRIVER-390&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Change-Id: I1390c184beb379d4cc775ba07b5d222342dc957e&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-go-driver/commit/98f5b78d43c7bf8cb246de3d102867ea26d3b49d&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-go-driver/commit/98f5b78d43c7bf8cb246de3d102867ea26d3b49d&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1876761" author="kris.brandow" created="Fri, 27 Apr 2018 22:09:45 +0000"  >&lt;p&gt;Code Review: &lt;a href=&quot;https://review.gerrithub.io/c/mongodb/mongo-go-driver/+/409354&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.gerrithub.io/c/mongodb/mongo-go-driver/+/409354&lt;/a&gt;.&lt;/p&gt;</comment>
                    </comments>
                    <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_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|htnq7b:</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>