Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-14509

JdbcStringBasedStore bulk operations don't work when more than 128 segments worth of values are provided

XMLWordPrintable

      If you do a bulk write operation with the jdbc store when you have entries in that batch that map to more than 128 segments you get the following error:

      io.reactivex.rxjava3.exceptions.MissingBackpressureException: Unable to emit a new group (#128) due to lack of requests. Please make sure the downstream can always accept a new group as well as each group is consumed in order for the whole operator to be able to proceed.
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowableGroupBy$GroupBySubscriber.onNext(FlowableGroupBy.java:197)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowableDoOnEach$DoOnEachSubscriber.onNext(FlowableDoOnEach.java:92)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowableMap$MapSubscriber.onNext(FlowableMap.java:69)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowableFilter$FilterSubscriber.tryOnNext(FlowableFilter.java:75)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowableFilter$FilterSubscriber.onNext(FlowableFilter.java:53)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowablePublish$PublishConnection.drain(FlowablePublish.java:312)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowablePublish$PublishConnection.onNext(FlowablePublish.java:234)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.mixed.FlowableConcatMapMaybe$ConcatMapMaybeSubscriber.drain(FlowableConcatMapMaybe.java:238)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.mixed.FlowableConcatMapMaybe$ConcatMapMaybeSubscriber.request(FlowableConcatMapMaybe.java:108)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowablePublish$PublishConnection.onSubscribe(FlowablePublish.java:221)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.mixed.FlowableConcatMapMaybe$ConcatMapMaybeSubscriber.onSubscribeDownstream(FlowableConcatMapMaybe.java:102)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.mixed.ConcatMapXMainSubscriber.onSubscribe(ConcatMapXMainSubscriber.java:75)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowableFromIterable.subscribe(FlowableFromIterable.java:69)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowableFromIterable.subscribeActual(FlowableFromIterable.java:47)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15917)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.mixed.FlowableConcatMapMaybe.subscribeActual(FlowableConcatMapMaybe.java:59)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15917)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15863)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowablePublish.connect(FlowablePublish.java:93)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowableAutoConnect.subscribeActual(FlowableAutoConnect.java:50)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15917)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowableFilter.subscribeActual(FlowableFilter.java:38)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15917)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowableMap.subscribeActual(FlowableMap.java:38)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15917)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowableDoOnEach.subscribeActual(FlowableDoOnEach.java:50)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15917)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowableGroupBy.subscribeActual(FlowableGroupBy.java:73)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15917)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowableMap.subscribeActual(FlowableMap.java:38)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15917)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowableFlatMap.subscribeActual(FlowableFlatMap.java:51)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15917)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15863)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.internal.operators.flowable.FlowableLastMaybe.subscribeActual(FlowableLastMaybe.java:39)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5375)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.core.Maybe.blockingSubscribe(Maybe.java:2989)
          at io.reactivex.rxjava3.rxjava//io.reactivex.rxjava3.core.Maybe.blockingSubscribe(Maybe.java:2960)
          at org.infinispan.persistence.jdbc@13.0.10.Final//org.infinispan.persistence.jdbc.common.sql.BaseTableOperations.batchUpdates(BaseTableOperations.java:202)
          at org.infinispan.persistence.jdbc@13.0.10.Final//org.infinispan.persistence.jdbc.common.impl.BaseJdbcStore.lambda$batch$7(BaseJdbcStore.java:194)
          at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
          at org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
          at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
          at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
          at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
          at org.jboss.as.clustering.common@26.1.2.Final//org.jboss.as.clustering.context.ContextReferenceExecutor.execute(ContextReferenceExecutor.java:49)
          at org.jboss.as.clustering.common@26.1.2.Final//org.jboss.as.clustering.context.ContextualExecutor$1.run(ContextualExecutor.java:70)
          at java.base/java.lang.Thread.run(Thread.java:833)
      

      We should make sure that we test all stores that they don't have this issue as well.

              wburns@redhat.com Will Burns
              wburns@redhat.com Will Burns
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: