<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 09:00:44 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-3903] Replace internal use of callbacks with Reactor in mongodb-driver-core module</title>
                <link>https://jira.mongodb.org/browse/JAVA-3903</link>
                <project id="10006" key="JAVA">Java Driver</project>
                    <description>&lt;p&gt;Replace internal use of callbacks with Reactor in mongodb-driver-core module. This is internal and makes no change to the public API.&lt;/p&gt;

&lt;p&gt;The driver will however have a hard dependency on Project Reactor going forward&lt;/p&gt;</description>
                <environment></environment>
        <key id="1562643">JAVA-3903</key>
            <summary>Replace internal use of callbacks with Reactor in mongodb-driver-core module</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="10038" iconUrl="https://jira.mongodb.org/images/icons/subtask.gif" description="">Backlog</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="jeff.yemin@mongodb.com">Jeffrey Yemin</reporter>
                        <labels>
                            <label>tech-debt</label>
                    </labels>
                <created>Tue, 8 Dec 2020 17:04:11 +0000</created>
                <updated>Fri, 15 Sep 2023 00:18:21 +0000</updated>
                                                                            <component>Internal</component>
                                        <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="5356404" author="JIRAUSER1269643" created="Tue, 18 Apr 2023 17:23:51 +0000"  >&lt;p&gt;We should have a look at some existing code that we would like to improve with this approach, and consider what it looks like with the Reactor approach, versus potential alternatives.&lt;/p&gt;

&lt;p&gt;The underlying problems that I saw were:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;There is increasing drift between the sync and async variants of methods. It should be possible to compare these side by side, and see the same logic, in the same visual order, without redundant invocations of callbacks.&lt;/li&gt;
	&lt;li&gt;Furthermore, some parts of the logic are entirely extracted into separate methods (for example, a lengthy async method is broken up into smaller methods in a different way than the sync method is).&lt;/li&gt;
	&lt;li&gt;There is general redundancy in the code.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Some of this can be cleaned up with relatively small helper methods, or a helper class, without the need to introduce a dependency, and the associated complexity. It might also be possible to take this approach sooner and more incrementally than a large-scale conversion into Reactor.&lt;/p&gt;

&lt;p&gt;Are there other reasons to introduce Reactor, apart from code clarity? For example, I am unsure what the &quot;Reactor context&quot; comment above entails. Perhaps there are reasons related to closer integration with our async code, or something else?&lt;/p&gt;</comment>
                            <comment id="3766331" author="ross@10gen.com" created="Tue, 11 May 2021 13:58:53 +0000"  >&lt;p&gt;Request: If possible see if the Reactor context could be supplied to the Mongo Command Listeners.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="2394193">JAVA-5082</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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>JAVA-3703</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr3n4v:</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>