From 63accdeb5dd2297d439eb71718ab9aac93599db9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Basl=C3=A9?= Date: Tue, 8 Nov 2022 10:26:12 +0100 Subject: [PATCH] release hotfix: Adapt to MonoSubscriber not fusing by default In reactor-core, `Operators.MonoSubscriber` has stopped implementing ASYNC fusion as a base. It continues to be compatible with Fuseable publishers but now by default only negotiates `Fuseable.NONE`. Some RxJava adapter classes don't really have a way of propagating the fusion up to RxJava and used to rely on the default ASYNC capability of MonoSubscriber, testing that `requestFusion` would indeed negotiate that. Now that it negotiates NONE, said tests fail. This commit removes the tests and adds a FIXME as a more in depth follow up to this issue (where we can evaluate if it makes sense to keep the publishers Fuseable). See reactor/reactor-core#3245. --- .../adapter/rxjava/RxJava3Adapter.java | 1 + .../adapter/rxjava/RxJava2AdapterTest.java | 23 ++--------------- .../adapter/rxjava/RxJava3AdapterTest.java | 25 ++----------------- 3 files changed, 5 insertions(+), 44 deletions(-) diff --git a/reactor-adapter/src/main/java/reactor/adapter/rxjava/RxJava3Adapter.java b/reactor-adapter/src/main/java/reactor/adapter/rxjava/RxJava3Adapter.java index 1bb0a97ad..2a46fcbaf 100644 --- a/reactor-adapter/src/main/java/reactor/adapter/rxjava/RxJava3Adapter.java +++ b/reactor-adapter/src/main/java/reactor/adapter/rxjava/RxJava3Adapter.java @@ -776,6 +776,7 @@ public void subscribe(CoreSubscriber s) { source.subscribe(new MaybeAsMonoObserver<>(s)); } + //FIXME this and all other MonoSubscriber-extending classes are fake-fuseable: requestFusion will always reply NONE unless overridden static final class MaybeAsMonoObserver extends MonoSubscriber implements MaybeObserver { io.reactivex.rxjava3.disposables.Disposable d; diff --git a/reactor-adapter/src/test/java/reactor/adapter/rxjava/RxJava2AdapterTest.java b/reactor-adapter/src/test/java/reactor/adapter/rxjava/RxJava2AdapterTest.java index 7e517439a..3d06f573c 100644 --- a/reactor-adapter/src/test/java/reactor/adapter/rxjava/RxJava2AdapterTest.java +++ b/reactor-adapter/src/test/java/reactor/adapter/rxjava/RxJava2AdapterTest.java @@ -117,19 +117,8 @@ public void singleToMono() { .expectComplete() .verify(); } + //NB: MonoSubscribers like SingleToMonoSubscriber are not fuseable anymore - @Test - public void singleToMonoFused() { - Mono m = Single.just(1) - .to(RxJava2Adapter::singleToMono); - - StepVerifier.create(m) - .expectFusion(Fuseable.ANY, Fuseable.ASYNC) - .expectNext(1) - .expectComplete() - .verify(); - } - @Test public void monoToSingle() { Mono.just(1) @@ -233,14 +222,6 @@ public void maybeToMonoError() { .expectErrorMessage("Forced failure") .verify(); } + //NB: MonoSubscribers like MaybeToMonoSubscriber are not fuseable anymore - @Test - public void maybeToMonoEmptyFused() { - Mono m = Maybe.empty().to(RxJava2Adapter::maybeToMono); - - StepVerifier.create(m) - .expectFusion(Fuseable.ANY, Fuseable.ASYNC) - .expectComplete() - .verify(); - } } diff --git a/reactor-adapter/src/test/java/reactor/adapter/rxjava/RxJava3AdapterTest.java b/reactor-adapter/src/test/java/reactor/adapter/rxjava/RxJava3AdapterTest.java index 31356e0e3..0dc35eef6 100644 --- a/reactor-adapter/src/test/java/reactor/adapter/rxjava/RxJava3AdapterTest.java +++ b/reactor-adapter/src/test/java/reactor/adapter/rxjava/RxJava3AdapterTest.java @@ -204,16 +204,7 @@ public void maybeToMonoEmpty() { .expectComplete() .verify(); } - - @Test - public void maybeToMonoEmptyFused() { - Mono m = Maybe.empty().to(RxJava3Adapter::maybeToMono); - - StepVerifier.create(m) - .expectFusion(Fuseable.ANY, Fuseable.ASYNC) - .expectComplete() - .verify(); - } + //NB: MonoSubscribers like MaybeToMonoSubscriber are not fuseable anymore @Test public void maybeToMonoError() { @@ -312,19 +303,7 @@ public void singleToMono() { .expectComplete() .verify(); } - - @Test - public void singleToMonoFused() { - Mono m = Single.just(1) - .to(RxJava3Adapter::singleToMono); - - StepVerifier.create(m) - .expectFusion(Fuseable.ANY, Fuseable.ASYNC) - .expectNext(1) - .expectComplete() - .verify(); - } - + //NB: MonoSubscribers like SingleToMonoSubscriber are not fuseable anymore @Test public void scheduler() {