<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 09:01:03 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>[JAVA-4027] Mono#doOnTerminate does not guarantee execution prior to Subscriber notification</title>
                <link>https://jira.mongodb.org/browse/JAVA-4027</link>
                <project id="10006" key="JAVA">Java Driver</project>
                    <description>&lt;p&gt;The sessions specification requires that an implicit session is available for re-use after the previous operation that is using it completes.  Currently, we rely on the use of &lt;tt&gt;Mono:doOnTerminate&lt;/tt&gt; to help provide that guarantee, as in current versions of Project Reactor there is a documented guarantee that the termination code will execute prior to Subscriber notification.&lt;/p&gt;

&lt;p&gt;But that guarantee is not included, and is violated, in the current minimum release of Project Reactor that we support (Californium).  Therefore, until we update our minimum supported Project Reactor release, we should ensure that the driver behaves consistently and as expected when using that release. This is easy to do: instead of releasing the binding via &lt;tt&gt;Mono#doOnTerminate&lt;/tt&gt;, wrap the sinkToCallback in another callback that releases the binding before notifying the &lt;tt&gt;Sink&lt;/tt&gt; of completion.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1636397">JAVA-4027</key>
            <summary>Mono#doOnTerminate does not guarantee execution prior to Subscriber notification</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</type>
                                            <priority id="4" iconUrl="https://jira.mongodb.org/images/icons/priorities/minor.svg">Minor - P4</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="jeff.yemin@mongodb.com">Jeffrey Yemin</assignee>
                                    <reporter username="jeff.yemin@mongodb.com">Jeffrey Yemin</reporter>
                        <labels>
                    </labels>
                <created>Mon, 1 Mar 2021 22:28:48 +0000</created>
                <updated>Sat, 28 Oct 2023 11:21:23 +0000</updated>
                            <resolved>Tue, 2 Mar 2021 21:52:47 +0000</resolved>
                                    <version>4.2.0</version>
                                    <fixVersion>4.2.2</fixVersion>
                                    <component>Reactive Streams</component>
                                        <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="3643189" author="xgen-internal-githook" created="Tue, 2 Mar 2021 21:51:33 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Jeff Yemin&apos;, &apos;email&apos;: &apos;jeff.yemin@mongodb.com&apos;, &apos;username&apos;: &apos;jyemin&apos;}
&lt;p&gt;Message: Ensure that AsyncReadWriteBinding is released prior to subscriber notification (#676)&lt;/p&gt;

&lt;p&gt;Previously the driver assumed that Mono#doOnTerminate is executed&lt;br/&gt;
prior to the subscriber being notified of completion.  But it turns&lt;br/&gt;
out that behavior is not guaranteed in the Californium release of&lt;br/&gt;
Project Reactor (though it is in later releases).  So instead,&lt;br/&gt;
now the SingleResultCallback that is used to notify the Mongo of&lt;br/&gt;
completion is wrapped by one that first releases the binding, and&lt;br/&gt;
Mono#doOnTerminate is no longer used.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-4027&quot; title=&quot;Mono#doOnTerminate does not guarantee execution prior to Subscriber notification&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-4027&quot;&gt;&lt;del&gt;JAVA-4027&lt;/del&gt;&lt;/a&gt;&lt;br/&gt;
Branch: 4.2.x&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/44b1e8987c71a1caf1e444b83049b4d4a22c17a4&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/44b1e8987c71a1caf1e444b83049b4d4a22c17a4&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3643186" author="xgen-internal-githook" created="Tue, 2 Mar 2021 21:50:50 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Jeff Yemin&apos;, &apos;email&apos;: &apos;jeff.yemin@mongodb.com&apos;, &apos;username&apos;: &apos;jyemin&apos;}
&lt;p&gt;Message: Ensure that AsyncReadWriteBinding is released prior to subscriber notification (#676)&lt;/p&gt;

&lt;p&gt;Previously the driver assumed that Mono#doOnTerminate is executed&lt;br/&gt;
prior to the subscriber being notified of completion.  But it turns&lt;br/&gt;
out that behavior is not guaranteed in the Californium release of&lt;br/&gt;
Project Reactor (though it is in later releases).  So instead,&lt;br/&gt;
now the SingleResultCallback that is used to notify the Mongo of&lt;br/&gt;
completion is wrapped by one that first releases the binding, and&lt;br/&gt;
Mono#doOnTerminate is no longer used.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-4027&quot; title=&quot;Mono#doOnTerminate does not guarantee execution prior to Subscriber notification&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-4027&quot;&gt;&lt;del&gt;JAVA-4027&lt;/del&gt;&lt;/a&gt;&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/dfff51f4f805e6c2c798216df1878d0b0c27018c&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/dfff51f4f805e6c2c798216df1878d0b0c27018c&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="1601463">JAVA-3969</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </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_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr3nqv:</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>