Switch to `Flux.flatMapSequential(…)` to prevent backpressure shaping.
We now use Flux.flatMapSequential(…) instead of concatMap as concatMap reduces the request size to 1. The change in backpressure/request size reduces parallelism and impacts the batch size by fetching 2 documents instead of considering the actual backpressure.
flatMapSequential doesn't tamper the requested amount while retaining the sequence order.
Closes: #4543
Original Pull Request: #4550
4.1.x
Mark Paluch2 years agocommitted byChristoph Strobl
@ -216,7 +216,7 @@ class DefaultReactiveBulkOperations extends BulkOperationsSupport implements Rea
@@ -216,7 +216,7 @@ class DefaultReactiveBulkOperations extends BulkOperationsSupport implements Rea
@ -1041,7 +1041,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
@@ -1041,7 +1041,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
@ -1088,7 +1088,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
@@ -1088,7 +1088,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
@ -1314,7 +1314,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
@@ -1314,7 +1314,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
Assert.notNull(batchToSave,"Batch to insert must not be null");
@ -1382,7 +1382,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
@@ -1382,7 +1382,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
@ -1433,7 +1433,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
@@ -1433,7 +1433,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
@ -1590,7 +1590,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
@@ -1590,7 +1590,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
returncollectionToUse.insertMany(documents);
}).flatMap(s->{
}).flatMapSequential(s->{
returnFlux.fromStream(documents.stream()//
.map(MappedDocument::of)//
@ -2147,7 +2147,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
@@ -2147,7 +2147,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
@ -2215,7 +2215,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
@@ -2215,7 +2215,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
@ -2674,7 +2674,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
@@ -2674,7 +2674,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
@ -109,7 +109,7 @@ public class SimpleReactiveMongoRepository<T, ID extends Serializable> implement
@@ -109,7 +109,7 @@ public class SimpleReactiveMongoRepository<T, ID extends Serializable> implement
Assert.notNull(entityStream,"The given Publisher of entities must not be null");
@ -167,7 +167,7 @@ public class SimpleReactiveMongoRepository<T, ID extends Serializable> implement
@@ -167,7 +167,7 @@ public class SimpleReactiveMongoRepository<T, ID extends Serializable> implement
Assert.notNull(ids,"The given Publisher of Id's must not be null");
@ -297,7 +297,8 @@ public class SimpleReactiveMongoRepository<T, ID extends Serializable> implement
@@ -297,7 +297,8 @@ public class SimpleReactiveMongoRepository<T, ID extends Serializable> implement
Assert.notNull(entities,"The given Publisher of entities must not be null");