<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 09:01:05 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-4044] Exception when dropping a collection with changestream</title>
                <link>https://jira.mongodb.org/browse/JAVA-4044</link>
                <project id="10006" key="JAVA">Java Driver</project>
                    <description>&lt;p&gt;When I create a ChangeStream (using Collection.watch() ) and then drop the collection,&lt;/p&gt;

&lt;p&gt;I get this stacktrace in 4.2.1 &amp;amp; 4.2.2 - no exception is present in 4.2.0:&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;ERROR reactor.core.publisher.Operators - Operator called default onErrorDropped&lt;br/&gt;
reactor.core.Exceptions$ErrorCallbackNotImplemented: java.lang.IllegalStateException: state should be: open&lt;br/&gt;
Caused by: java.lang.IllegalStateException: state should be: open&lt;br/&gt;
 at com.mongodb.assertions.Assertions.isTrue(Assertions.java:72)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncQueryBatchCursor.setBatchSize(AsyncQueryBatchCursor.java:149)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor.setBatchSize(AsyncChangeStreamBatchCursor.java:105)&lt;br/&gt;
 at com.mongodb.reactivestreams.client.internal.BatchCursor.setBatchSize(BatchCursor.java:43)&lt;br/&gt;
 at com.mongodb.reactivestreams.client.internal.BatchCursorFlux.recurseCursor(BatchCursorFlux.java:82)&lt;br/&gt;
 at com.mongodb.reactivestreams.client.internal.BatchCursorFlux.lambda$recurseCursor$4(BatchCursorFlux.java:101)&lt;br/&gt;
 at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:289)&lt;br/&gt;
 at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299)&lt;br/&gt;
 at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onComplete(FluxPeekFuseable.java:940)&lt;br/&gt;
 at reactor.core.publisher.MonoCreate$DefaultMonoSink.success(MonoCreate.java:133)&lt;br/&gt;
 at com.mongodb.reactivestreams.client.internal.MongoOperationPublisher.lambda$sinkToCallback$30(MongoOperationPublisher.java:548)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$3.onResult(AsyncChangeStreamBatchCursor.java:169)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$3.onResult(AsyncChangeStreamBatchCursor.java:145)&lt;br/&gt;
 at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:48)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$4.onResult(AsyncChangeStreamBatchCursor.java:190)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$4.onResult(AsyncChangeStreamBatchCursor.java:186)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncQueryBatchCursor.next(AsyncQueryBatchCursor.java:213)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncQueryBatchCursor.next(AsyncQueryBatchCursor.java:138)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$1.apply(AsyncChangeStreamBatchCursor.java:74)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor.resumeableOperation(AsyncChangeStreamBatchCursor.java:186)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor.next(AsyncChangeStreamBatchCursor.java:70)&lt;br/&gt;
 at com.mongodb.reactivestreams.client.internal.BatchCursor.lambda$next$0(BatchCursor.java:35)&lt;br/&gt;
 at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:57)&lt;br/&gt;
 at reactor.core.publisher.Mono.subscribe(Mono.java:4046)&lt;br/&gt;
 at reactor.core.publisher.Mono.subscribeWith(Mono.java:4161)&lt;br/&gt;
 at reactor.core.publisher.Mono.subscribe(Mono.java:3878)&lt;br/&gt;
 at com.mongodb.reactivestreams.client.internal.BatchCursorFlux.recurseCursor(BatchCursorFlux.java:104)&lt;br/&gt;
 at com.mongodb.reactivestreams.client.internal.BatchCursorFlux.lambda$recurseCursor$4(BatchCursorFlux.java:101)&lt;br/&gt;
 at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:171)&lt;br/&gt;
 at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180)&lt;br/&gt;
 at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onNext(FluxPeekFuseable.java:854)&lt;br/&gt;
 at reactor.core.publisher.MonoCreate$DefaultMonoSink.success(MonoCreate.java:160)&lt;br/&gt;
 at com.mongodb.reactivestreams.client.internal.MongoOperationPublisher.lambda$sinkToCallback$30(MongoOperationPublisher.java:550)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$3.onResult(AsyncChangeStreamBatchCursor.java:167)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$3.onResult(AsyncChangeStreamBatchCursor.java:145)&lt;br/&gt;
 at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:48)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$4.onResult(AsyncChangeStreamBatchCursor.java:190)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$4.onResult(AsyncChangeStreamBatchCursor.java:186)&lt;br/&gt;
 at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:48)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncQueryBatchCursor.handleGetMoreQueryResult(AsyncQueryBatchCursor.java:367)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncQueryBatchCursor.access$600(AsyncQueryBatchCursor.java:56)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncQueryBatchCursor$CommandResultSingleResultCallback.onResult(AsyncQueryBatchCursor.java:399)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncQueryBatchCursor$CommandResultSingleResultCallback.onResult(AsyncQueryBatchCursor.java:372)&lt;br/&gt;
 at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:48)&lt;br/&gt;
 at com.mongodb.internal.connection.DefaultServer$DefaultServerProtocolExecutor$2.onResult(DefaultServer.java:286)&lt;br/&gt;
 at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:48)&lt;br/&gt;
 at com.mongodb.internal.connection.CommandProtocolImpl$1.onResult(CommandProtocolImpl.java:84)&lt;br/&gt;
 at com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection$2.onResult(DefaultConnectionPool.java:530)&lt;br/&gt;
 at com.mongodb.internal.connection.UsageTrackingInternalConnection$2.onResult(UsageTrackingInternalConnection.java:142)&lt;br/&gt;
 at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:48)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$2$1.onResult(InternalStreamConnection.java:462)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$2$1.onResult(InternalStreamConnection.java:439)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback$MessageCallback.onResult(InternalStreamConnection.java:744)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback$MessageCallback.onResult(InternalStreamConnection.java:711)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:581)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:578)&lt;br/&gt;
 at com.mongodb.internal.connection.AsynchronousChannelStream$BasicCompletionHandler.completed(AsynchronousChannelStream.java:250)&lt;br/&gt;
 at com.mongodb.internal.connection.AsynchronousChannelStream$BasicCompletionHandler.completed(AsynchronousChannelStream.java:233)&lt;br/&gt;
 at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)&lt;br/&gt;
 at sun.nio.ch.Invoker.invokeDirect(Invoker.java:157)&lt;br/&gt;
 at sun.nio.ch.UnixAsynchronousSocketChannelImpl.implRead(UnixAsynchronousSocketChannelImpl.java:553)&lt;br/&gt;
 at sun.nio.ch.AsynchronousSocketChannelImpl.read(AsynchronousSocketChannelImpl.java:276)&lt;br/&gt;
 at sun.nio.ch.AsynchronousSocketChannelImpl.read(AsynchronousSocketChannelImpl.java:297)&lt;br/&gt;
 at com.mongodb.internal.connection.AsynchronousSocketChannelStream$AsynchronousSocketChannelAdapter.read(AsynchronousSocketChannelStream.java:144)&lt;br/&gt;
 at com.mongodb.internal.connection.AsynchronousChannelStream.readAsync(AsynchronousChannelStream.java:118)&lt;br/&gt;
 at com.mongodb.internal.connection.AsynchronousChannelStream.readAsync(AsynchronousChannelStream.java:107)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection.readAsync(InternalStreamConnection.java:578)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection.access$1100(InternalStreamConnection.java:78)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback.onResult(InternalStreamConnection.java:701)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback.onResult(InternalStreamConnection.java:686)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:581)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:578)&lt;br/&gt;
 at com.mongodb.internal.connection.AsynchronousChannelStream$BasicCompletionHandler.completed(AsynchronousChannelStream.java:250)&lt;br/&gt;
 at com.mongodb.internal.connection.AsynchronousChannelStream$BasicCompletionHandler.completed(AsynchronousChannelStream.java:233)&lt;br/&gt;
 at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)&lt;br/&gt;
 at sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishRead(UnixAsynchronousSocketChannelImpl.java:430)&lt;br/&gt;
 at sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish(UnixAsynchronousSocketChannelImpl.java:191)&lt;br/&gt;
 at sun.nio.ch.UnixAsynchronousSocketChannelImpl.onEvent(UnixAsynchronousSocketChannelImpl.java:213)&lt;br/&gt;
 at sun.nio.ch.EPollPort$EventHandlerTask.run(EPollPort.java:293)&lt;br/&gt;
 at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)&lt;/p&gt;</description>
                <environment></environment>
        <key id="1647998">JAVA-4044</key>
            <summary>Exception when dropping a collection with changestream</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="valentin.kovalenko@mongodb.com">Valentin Kavalenka</assignee>
                                    <reporter username="jburet">Julien Buret</reporter>
                        <labels>
                    </labels>
                <created>Sun, 14 Mar 2021 19:46:16 +0000</created>
                <updated>Sat, 28 Oct 2023 11:21:21 +0000</updated>
                            <resolved>Wed, 24 Mar 2021 18:30:05 +0000</resolved>
                                    <version>4.2.1</version>
                    <version>4.2.2</version>
                                    <fixVersion>4.2.3</fixVersion>
                                    <component>Change Streams</component>
                                        <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="3702098" author="xgen-internal-githook" created="Mon, 5 Apr 2021 23:42:18 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Valentin Kovalenko&apos;, &apos;email&apos;: &apos;valentin.kovalenko@mongodb.com&apos;, &apos;username&apos;: &apos;stIncMale&apos;}
&lt;p&gt;Message: Backport to 4.2.x &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-4044&quot; title=&quot;Exception when dropping a collection with changestream&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-4044&quot;&gt;&lt;del&gt;JAVA-4044&lt;/del&gt;&lt;/a&gt;/PR#689 and the changes it depends on (&lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-3938&quot; title=&quot;Change stream connections not returned&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-3938&quot;&gt;&lt;del&gt;JAVA-3938&lt;/del&gt;&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-3907&quot; title=&quot;AsyncQueryBatchCursor does not release ConnectionSource when closed&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-3907&quot;&gt;&lt;del&gt;JAVA-3907&lt;/del&gt;&lt;/a&gt; / PR#661) (#691)&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Regression test for change stream cancellation (#661)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Ensures that all sessions are returned to the pool&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-3938&quot; title=&quot;Change stream connections not returned&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-3938&quot;&gt;&lt;del&gt;JAVA-3938&lt;/del&gt;&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-3907&quot; title=&quot;AsyncQueryBatchCursor does not release ConnectionSource when closed&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-3907&quot;&gt;&lt;del&gt;JAVA-3907&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Guarantee that ChangeStreamPublisher for a collection completes after dropping the collection (#689)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Before the changes made within &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-3973&quot; title=&quot;Regression in reactive streams implementation memory consumption&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-3973&quot;&gt;&lt;del&gt;JAVA-3973&lt;/del&gt;&lt;/a&gt;,&lt;br/&gt;
ChangeStreamPublisher had been terminating with onError.&lt;br/&gt;
After the changes in &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-3973&quot; title=&quot;Regression in reactive streams implementation memory consumption&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-3973&quot;&gt;&lt;del&gt;JAVA-3973&lt;/del&gt;&lt;/a&gt; neither onError nor onComplete is called,&lt;br/&gt;
but those changes allow us to terminated it with onComplete.&lt;br/&gt;
I could have specified only assertTerminalEvent()&lt;br/&gt;
without specifying assertNoErrors(), thus accepting either onComplete or onError&lt;br/&gt;
(the old behavior), but terminating with onComplete is nicer.&lt;/p&gt;

&lt;p&gt;The approach with using startAtOperationTime to ensure that&lt;br/&gt;
a change stream is guaranteed to observe collection.drop()&lt;br/&gt;
works only if there is no leader re-election that results in&lt;br/&gt;
rolling back the delete operation from which the operationTime&lt;br/&gt;
was extracted. While such rollback can be prevented by using&lt;br/&gt;
the &quot;majority&quot; write concern, the common approach in driver tests&lt;br/&gt;
is to not use it for efficiency and tolerate a tiny chance of&lt;br/&gt;
experiencing a rollback.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-4044&quot; title=&quot;Exception when dropping a collection with changestream&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-4044&quot;&gt;&lt;del&gt;JAVA-4044&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Co-authored-by: Ross Lawley &amp;lt;ross.lawley@gmail.com&amp;gt;&lt;br/&gt;
Branch: 4.2.x&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/77c8795eec482f909cfb658b46771b51c2ded7e0&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/77c8795eec482f909cfb658b46771b51c2ded7e0&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3682173" author="JIRAUSER1258163" created="Wed, 24 Mar 2021 18:30:05 +0000"  >&lt;p&gt;Hi &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=jburet&quot; class=&quot;user-hover&quot; rel=&quot;jburet&quot;&gt;jburet&lt;/a&gt;. Thanks again for reporting this problem. We fixed it and the next driver version should not have the problem.&lt;/p&gt;</comment>
                            <comment id="3682133" author="xgen-internal-githook" created="Wed, 24 Mar 2021 18:17:55 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Valentin Kovalenko&apos;, &apos;email&apos;: &apos;valentin.kovalenko@mongodb.com&apos;, &apos;username&apos;: &apos;stIncMale&apos;}
&lt;p&gt;Message: Guarantee that ChangeStreamPublisher for a collection completes after dropping the collection (#689)&lt;/p&gt;

&lt;p&gt;Before the changes made within &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-3973&quot; title=&quot;Regression in reactive streams implementation memory consumption&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-3973&quot;&gt;&lt;del&gt;JAVA-3973&lt;/del&gt;&lt;/a&gt;,&lt;br/&gt;
ChangeStreamPublisher had been terminating with onError.&lt;br/&gt;
After the changes in &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-3973&quot; title=&quot;Regression in reactive streams implementation memory consumption&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-3973&quot;&gt;&lt;del&gt;JAVA-3973&lt;/del&gt;&lt;/a&gt; neither onError nor onComplete is called,&lt;br/&gt;
but those changes allow us to terminated it with onComplete.&lt;br/&gt;
I could have specified only assertTerminalEvent()&lt;br/&gt;
without specifying assertNoErrors(), thus accepting either onComplete or onError&lt;br/&gt;
(the old behavior), but terminating with onComplete is nicer.&lt;/p&gt;

&lt;p&gt;The approach with using startAtOperationTime to ensure that&lt;br/&gt;
a change stream is guaranteed to observe collection.drop()&lt;br/&gt;
works only if there is no leader re-election that results in&lt;br/&gt;
rolling back the delete operation from which the operationTime&lt;br/&gt;
was extracted. While such rollback can be prevented by using&lt;br/&gt;
the &quot;majority&quot; write concern, the common approach in driver tests&lt;br/&gt;
is to not use it for efficiency and tolerate a tiny chance of&lt;br/&gt;
experiencing a rollback.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-4044&quot; title=&quot;Exception when dropping a collection with changestream&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-4044&quot;&gt;&lt;del&gt;JAVA-4044&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/b3698be5d218af6c3ee94aca2a5cccbf7a853e3a&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/b3698be5d218af6c3ee94aca2a5cccbf7a853e3a&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3665907" author="JIRAUSER1258163" created="Tue, 16 Mar 2021 02:13:58 +0000"  >&lt;p&gt;Hi &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=jburet&quot; class=&quot;user-hover&quot; rel=&quot;jburet&quot;&gt;jburet&lt;/a&gt;,&lt;/p&gt;

&lt;p&gt;Thank you for reporting this change in behavior you observed. We will investigate it and come back to you with more details.&lt;/p&gt;</comment>
                            <comment id="3663430" author="jburet" created="Sun, 14 Mar 2021 20:14:19 +0000"  >&lt;p&gt;digging a bit further, there is an exception in 4.2.0, but it is not the same. The real issue is that Subscriber.onError is called in 4.2.0 but not anymore in 4.2.1 &amp;amp; 4.2.2 . May be this is WAD?&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;The exception in 4.2.0:&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;ERROR reactor.core.publisher.Operators - Operator called default onErrorDropped&lt;br/&gt;
 reactor.core.Exceptions$ErrorCallbackNotImplemented: com.mongodb.MongoException: next() called after the cursor was closed.&lt;br/&gt;
 Caused by: com.mongodb.MongoException: next() called after the cursor was closed.&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncQueryBatchCursor.next(AsyncQueryBatchCursor.java:191)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncQueryBatchCursor.next(AsyncQueryBatchCursor.java:138)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$1.apply(AsyncChangeStreamBatchCursor.java:77)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor.resumeableOperation(AsyncChangeStreamBatchCursor.java:214)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor.next(AsyncChangeStreamBatchCursor.java:73)&lt;br/&gt;
 at com.mongodb.reactivestreams.client.internal.BatchCursor.lambda$next$0(BatchCursor.java:35)&lt;br/&gt;
 at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:57)&lt;br/&gt;
 at reactor.core.publisher.Mono.subscribe(Mono.java:4046)&lt;br/&gt;
 at reactor.core.publisher.Mono.subscribeWith(Mono.java:4161)&lt;br/&gt;
 at reactor.core.publisher.Mono.subscribe(Mono.java:3878)&lt;br/&gt;
 at com.mongodb.reactivestreams.client.internal.BatchCursorPublisher.recurseCursor(BatchCursorPublisher.java:154)&lt;br/&gt;
 at com.mongodb.reactivestreams.client.internal.BatchCursorPublisher.lambda$recurseCursor$7(BatchCursorPublisher.java:151)&lt;br/&gt;
 at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:289)&lt;br/&gt;
 at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299)&lt;br/&gt;
 at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onComplete(FluxPeekFuseable.java:940)&lt;br/&gt;
 at reactor.core.publisher.MonoCreate$DefaultMonoSink.success(MonoCreate.java:133)&lt;br/&gt;
 at com.mongodb.reactivestreams.client.internal.MongoOperationPublisher.lambda$sinkToCallback$30(MongoOperationPublisher.java:548)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$3.onResult(AsyncChangeStreamBatchCursor.java:194)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$3.onResult(AsyncChangeStreamBatchCursor.java:170)&lt;br/&gt;
 at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:48)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$4.onResult(AsyncChangeStreamBatchCursor.java:219)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$4.onResult(AsyncChangeStreamBatchCursor.java:214)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncQueryBatchCursor.next(AsyncQueryBatchCursor.java:213)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncQueryBatchCursor.next(AsyncQueryBatchCursor.java:138)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$1.apply(AsyncChangeStreamBatchCursor.java:77)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor.resumeableOperation(AsyncChangeStreamBatchCursor.java:214)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor.next(AsyncChangeStreamBatchCursor.java:73)&lt;br/&gt;
 at com.mongodb.reactivestreams.client.internal.BatchCursor.lambda$next$0(BatchCursor.java:35)&lt;br/&gt;
 at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:57)&lt;br/&gt;
 at reactor.core.publisher.Mono.subscribe(Mono.java:4046)&lt;br/&gt;
 at reactor.core.publisher.Mono.subscribeWith(Mono.java:4161)&lt;br/&gt;
 at reactor.core.publisher.Mono.subscribe(Mono.java:3878)&lt;br/&gt;
 at com.mongodb.reactivestreams.client.internal.BatchCursorPublisher.recurseCursor(BatchCursorPublisher.java:154)&lt;br/&gt;
 at com.mongodb.reactivestreams.client.internal.BatchCursorPublisher.lambda$recurseCursor$7(BatchCursorPublisher.java:151)&lt;br/&gt;
 at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:171)&lt;br/&gt;
 at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180)&lt;br/&gt;
 at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onNext(FluxPeekFuseable.java:854)&lt;br/&gt;
 at reactor.core.publisher.MonoCreate$DefaultMonoSink.success(MonoCreate.java:160)&lt;br/&gt;
 at com.mongodb.reactivestreams.client.internal.MongoOperationPublisher.lambda$sinkToCallback$30(MongoOperationPublisher.java:550)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$3.onResult(AsyncChangeStreamBatchCursor.java:192)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$3.onResult(AsyncChangeStreamBatchCursor.java:170)&lt;br/&gt;
 at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:48)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$4.onResult(AsyncChangeStreamBatchCursor.java:219)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncChangeStreamBatchCursor$4.onResult(AsyncChangeStreamBatchCursor.java:214)&lt;br/&gt;
 at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:48)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncQueryBatchCursor.handleGetMoreQueryResult(AsyncQueryBatchCursor.java:357)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncQueryBatchCursor.access$600(AsyncQueryBatchCursor.java:56)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncQueryBatchCursor$CommandResultSingleResultCallback.onResult(AsyncQueryBatchCursor.java:389)&lt;br/&gt;
 at com.mongodb.internal.operation.AsyncQueryBatchCursor$CommandResultSingleResultCallback.onResult(AsyncQueryBatchCursor.java:362)&lt;br/&gt;
 at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:48)&lt;br/&gt;
 at com.mongodb.internal.connection.DefaultServer$DefaultServerProtocolExecutor$2.onResult(DefaultServer.java:286)&lt;br/&gt;
 at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:48)&lt;br/&gt;
 at com.mongodb.internal.connection.CommandProtocolImpl$1.onResult(CommandProtocolImpl.java:84)&lt;br/&gt;
 at com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection$2.onResult(DefaultConnectionPool.java:530)&lt;br/&gt;
 at com.mongodb.internal.connection.UsageTrackingInternalConnection$2.onResult(UsageTrackingInternalConnection.java:142)&lt;br/&gt;
 at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:48)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$2$1.onResult(InternalStreamConnection.java:462)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$2$1.onResult(InternalStreamConnection.java:439)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback$MessageCallback.onResult(InternalStreamConnection.java:744)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback$MessageCallback.onResult(InternalStreamConnection.java:711)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:581)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:578)&lt;br/&gt;
 at com.mongodb.internal.connection.AsynchronousChannelStream$BasicCompletionHandler.completed(AsynchronousChannelStream.java:250)&lt;br/&gt;
 at com.mongodb.internal.connection.AsynchronousChannelStream$BasicCompletionHandler.completed(AsynchronousChannelStream.java:233)&lt;br/&gt;
 at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)&lt;br/&gt;
 at sun.nio.ch.Invoker.invokeDirect(Invoker.java:157)&lt;br/&gt;
 at sun.nio.ch.UnixAsynchronousSocketChannelImpl.implRead(UnixAsynchronousSocketChannelImpl.java:553)&lt;br/&gt;
 at sun.nio.ch.AsynchronousSocketChannelImpl.read(AsynchronousSocketChannelImpl.java:276)&lt;br/&gt;
 at sun.nio.ch.AsynchronousSocketChannelImpl.read(AsynchronousSocketChannelImpl.java:297)&lt;br/&gt;
 at com.mongodb.internal.connection.AsynchronousSocketChannelStream$AsynchronousSocketChannelAdapter.read(AsynchronousSocketChannelStream.java:144)&lt;br/&gt;
 at com.mongodb.internal.connection.AsynchronousChannelStream.readAsync(AsynchronousChannelStream.java:118)&lt;br/&gt;
 at com.mongodb.internal.connection.AsynchronousChannelStream.readAsync(AsynchronousChannelStream.java:107)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection.readAsync(InternalStreamConnection.java:578)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection.access$1100(InternalStreamConnection.java:78)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback.onResult(InternalStreamConnection.java:701)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback.onResult(InternalStreamConnection.java:686)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:581)&lt;br/&gt;
 at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:578)&lt;br/&gt;
 at com.mongodb.internal.connection.AsynchronousChannelStream$BasicCompletionHandler.completed(AsynchronousChannelStream.java:250)&lt;br/&gt;
 at com.mongodb.internal.connection.AsynchronousChannelStream$BasicCompletionHandler.completed(AsynchronousChannelStream.java:233)&lt;br/&gt;
 at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)&lt;br/&gt;
 at sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishRead(UnixAsynchronousSocketChannelImpl.java:430)&lt;br/&gt;
 at sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish(UnixAsynchronousSocketChannelImpl.java:191)&lt;br/&gt;
 at sun.nio.ch.UnixAsynchronousSocketChannelImpl.onEvent(UnixAsynchronousSocketChannelImpl.java:213)&lt;br/&gt;
 at sun.nio.ch.EPollPort$EventHandlerTask.run(EPollPort.java:293)&lt;br/&gt;
 at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)&lt;br/&gt;
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)&lt;br/&gt;
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)&lt;br/&gt;
 at java.lang.Thread.run(Thread.java:745)&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10520">
                    <name>Problem/Incident</name>
                                                                <inwardlinks description="is caused by">
                                        <issuelink>
            <issuekey id="1603168">JAVA-3973</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                        <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_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10257" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Documentation Changes</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="11861"><![CDATA[Not Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hykkb3:</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>