<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:53:54 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-1155] Support Netty for I/O</title>
                <link>https://jira.mongodb.org/browse/JAVA-1155</link>
                <project id="10006" key="JAVA">Java Driver</project>
                    <description>&lt;p&gt;We will still leverage AIO and have no plans currently to remove &lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/blob/3.0.x/driver/src/main/org/mongodb/connection/AsynchronousSocketChannelStream.java&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;AsynchronousSocketChannelStream&lt;/a&gt;.  This is the default implementation that the driver uses for async.&lt;br/&gt;
Furthermore, there is not a hard dependency on Netty.  It&apos;s opt-in (via a system property, though that may change), and if you don&apos;t opt-in, Netty does not need to be on the classpath.&lt;/p&gt;

&lt;p&gt;But Netty gives us some advantages.&lt;/p&gt;

&lt;p&gt;1. AsynchronousSocketChannel was introduced in Java 7, and we would like a solution for our Java 6 users.  Netty is supported on Java 6 and up.&lt;br/&gt;
2. Our AsynchronousSocketChannel-based implementation does not support SSL, and adding that support is non-trivial.  With Netty, it&apos;s just a few lines of code.&lt;br/&gt;
3. For applications that already use Netty for the rest of their I/O needs, a Netty-based driver for MongoDB may integrate better.  For example, they could share an instance of an &lt;a href=&quot;http://netty.io/4.0/api/io/netty/channel/nio/NioEventLoopGroup.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;NioEventLoopGroup&lt;/a&gt;.&lt;/p&gt;</description>
                <environment></environment>
        <key id="127509">JAVA-1155</key>
            <summary>Support Netty for I/O</summary>
                <type id="2" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14711&amp;avatarType=issuetype">New Feature</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="9">Done</resolution>
                                        <assignee username="ross@mongodb.com">Ross Lawley</assignee>
                                    <reporter username="jeff.yemin@mongodb.com">Jeffrey Yemin</reporter>
                        <labels>
                    </labels>
                <created>Tue, 25 Mar 2014 16:22:42 +0000</created>
                <updated>Tue, 31 Mar 2015 20:10:12 +0000</updated>
                            <resolved>Wed, 11 Jun 2014 11:50:30 +0000</resolved>
                                                    <fixVersion>3.0.0</fixVersion>
                                    <component>Async</component>
                                        <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="869557" author="jeff.yemin" created="Tue, 31 Mar 2015 20:10:12 +0000"  >&lt;p&gt;Closing all resolved 3.0.0 issues, as 3.0.0 has been tagged and released.&lt;/p&gt;</comment>
                            <comment id="817715" author="xgen-internal-githook" created="Fri, 30 Jan 2015 18:37:36 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;rozza&apos;, u&apos;name&apos;: u&apos;Ross Lawley&apos;, u&apos;email&apos;: u&apos;ross.lawley@gmail.com&apos;}
&lt;p&gt;Message: Async Stream updates&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Applied socket settings to NettyStream and AsynchronousSocketChannelStream&lt;/li&gt;
	&lt;li&gt;Bumped Netty version and made NettyStream connection fully Async&lt;/li&gt;
	&lt;li&gt;Made AsynchronousSocketChannelStream inline with other streams&lt;br/&gt;
  so it now throws a MongoSocketOpenException if connection fails&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Refs &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-1155&quot; title=&quot;Support Netty for I/O&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-1155&quot;&gt;&lt;del&gt;JAVA-1155&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/82be2f734ac11bdee2e0a920d872aed0b4a77c83&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/82be2f734ac11bdee2e0a920d872aed0b4a77c83&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="616711" author="xgen-internal-githook" created="Wed, 11 Jun 2014 09:23:56 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;rozza&apos;, u&apos;name&apos;: u&apos;Ross Lawley&apos;, u&apos;email&apos;: u&apos;ross.lawley@gmail.com&apos;}
&lt;p&gt;Message: Async Stream updates&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Applied socket settings to NettyStream and AsynchronousSocketChannelStream&lt;/li&gt;
	&lt;li&gt;Bumped Netty version and made NettyStream connection fully Async&lt;/li&gt;
	&lt;li&gt;Made AsynchronousSocketChannelStream inline with other streams&lt;br/&gt;
  so it now throws a MongoSocketOpenException if connection fails&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Refs &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-1155&quot; title=&quot;Support Netty for I/O&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-1155&quot;&gt;&lt;del&gt;JAVA-1155&lt;/del&gt;&lt;/a&gt;&lt;br/&gt;
Branch: 3.0.x&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/82be2f734ac11bdee2e0a920d872aed0b4a77c83&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/82be2f734ac11bdee2e0a920d872aed0b4a77c83&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="532478" author="xgen-internal-githook" created="Wed, 2 Apr 2014 12:59:13 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;rozza&apos;, u&apos;name&apos;: u&apos;Ross Lawley&apos;, u&apos;email&apos;: u&apos;ross.lawley@gmail.com&apos;}
&lt;p&gt;Message: Bumped Netty to 4.0.18.Final&lt;/p&gt;

&lt;p&gt;See: &lt;a href=&quot;http://netty.io/news/2014/04/01/4-0-18-Final.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://netty.io/news/2014/04/01/4-0-18-Final.html&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-1155&quot; title=&quot;Support Netty for I/O&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-1155&quot;&gt;&lt;del&gt;JAVA-1155&lt;/del&gt;&lt;/a&gt;&lt;br/&gt;
Branch: 3.0.x&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/1b74a374386f30a38143891b599b234290f20eb2&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/1b74a374386f30a38143891b599b234290f20eb2&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="523837" author="xgen-internal-githook" created="Wed, 26 Mar 2014 17:58:27 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;jyemin&apos;, u&apos;name&apos;: u&apos;Jeff Yemin&apos;, u&apos;email&apos;: u&apos;jeff.yemin@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-1155&quot; title=&quot;Support Netty for I/O&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-1155&quot;&gt;&lt;del&gt;JAVA-1155&lt;/del&gt;&lt;/a&gt;: Making Netty optional.  By default the NIO2 implementation of Stream will be used if async is enabled.  Set the system property org.mongodb.async.type to &quot;netty&quot; to enable Netty.&lt;br/&gt;
Branch: 3.0.x&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/dcb942d35d6a5a7365a79c15348e9361cf45c035&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/dcb942d35d6a5a7365a79c15348e9361cf45c035&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="523836" author="xgen-internal-githook" created="Wed, 26 Mar 2014 17:58:25 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;jyemin&apos;, u&apos;name&apos;: u&apos;Jeff Yemin&apos;, u&apos;email&apos;: u&apos;jeff.yemin@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-1155&quot; title=&quot;Support Netty for I/O&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-1155&quot;&gt;&lt;del&gt;JAVA-1155&lt;/del&gt;&lt;/a&gt;: Changed Stream interface so that it&apos;s the Stream&apos;s responsibility to allocate the ByteBuf returned from read or readAsync.  This allows for zero-copy reads with Netty.&lt;br/&gt;
Branch: 3.0.x&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/610281ed5df9826ecf50c92f1fbc8662f13fa0cb&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/610281ed5df9826ecf50c92f1fbc8662f13fa0cb&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="523834" author="xgen-internal-githook" created="Wed, 26 Mar 2014 17:58:23 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;jyemin&apos;, u&apos;name&apos;: u&apos;Jeff Yemin&apos;, u&apos;email&apos;: u&apos;jeff.yemin@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-1155&quot; title=&quot;Support Netty for I/O&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-1155&quot;&gt;&lt;del&gt;JAVA-1155&lt;/del&gt;&lt;/a&gt;: StreamFactory and InternalStreamConnectionFactory now also determine the BufferProvider that must be used with Stream instances that are handed out.  This is so that&lt;br/&gt;
the Stream can be optimized for use with a particular implementation of ByteBuf.&lt;br/&gt;
Branch: 3.0.x&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/ce1e9d31a218e3a20128bcc01febc33351d85ab4&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/ce1e9d31a218e3a20128bcc01febc33351d85ab4&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="523832" author="xgen-internal-githook" created="Wed, 26 Mar 2014 17:58:21 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;jyemin&apos;, u&apos;name&apos;: u&apos;Jeff Yemin&apos;, u&apos;email&apos;: u&apos;jeff.yemin@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-1155&quot; title=&quot;Support Netty for I/O&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-1155&quot;&gt;&lt;del&gt;JAVA-1155&lt;/del&gt;&lt;/a&gt;: NettyStream now works only with NettyByteBuf and is optimized for it.&lt;br/&gt;
Branch: 3.0.x&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/ec42d67eb783b1e904d258cb06bd1f71161efc70&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/ec42d67eb783b1e904d258cb06bd1f71161efc70&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="523831" author="xgen-internal-githook" created="Wed, 26 Mar 2014 17:58:19 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;jyemin&apos;, u&apos;name&apos;: u&apos;Jeff Yemin&apos;, u&apos;email&apos;: u&apos;jeff.yemin@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-1155&quot; title=&quot;Support Netty for I/O&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-1155&quot;&gt;&lt;del&gt;JAVA-1155&lt;/del&gt;&lt;/a&gt;: Created new implementation of org.bson.ByteBuf that wraps an io.netty.buffer.ByteBuf, and an implementation of BufferProvider which uses it.&lt;br/&gt;
Branch: 3.0.x&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/3a8207172dc1b9a9d78be6d39880afc9f9418566&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/3a8207172dc1b9a9d78be6d39880afc9f9418566&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="523830" author="xgen-internal-githook" created="Wed, 26 Mar 2014 17:58:17 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;jyemin&apos;, u&apos;name&apos;: u&apos;Jeff Yemin&apos;, u&apos;email&apos;: u&apos;jeff.yemin@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-1155&quot; title=&quot;Support Netty for I/O&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-1155&quot;&gt;&lt;del&gt;JAVA-1155&lt;/del&gt;&lt;/a&gt;: A working implementation of the Stream interface based on Netty 4.0.  While it works, it shows a lot of problems with the Stream abstraction.  The fact that Netty has it&apos;s own ByteBuf class means we have to copy from Netty&apos;s ByteBuf to our own.  And the fact that reads are separated from writes in the Stream API means that there has to be a ping-pong between readAsync and the read handler that we give to Netty.&lt;br/&gt;
Branch: 3.0.x&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/346008e01509efad6efc8c7b51dc4920d551c0c9&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/346008e01509efad6efc8c7b51dc4920d551c0c9&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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>JAVA-774</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hrfd1z:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1988</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="185">Sprint 3 - May 27 - June 13</customfieldvalue>

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