clojurewerkz / meltdown

Clojure interface to Reactor, an event-driven programming and stream processing toolkit for the JVM
210 stars 13 forks source link

Reactor 2+ #12

Open AlBaker opened 6 years ago

AlBaker commented 6 years ago

Meltdown has at least one show stopper bug in it from Reactor v1:

https://github.com/reactor/reactor/issues/335

E.g.: running ~4k records through a basic reactor in meltdown, at some point it'll hit this exception

ERROR compass.reactor: {:data #error {
 :cause Index: 6396, Size: 3982
 :via
 [{:type java.lang.IllegalStateException
   :message Index: 6396, Size: 3982
   :at [reactor.event.dispatch.AbstractLifecycleDispatcher dispatch AbstractLifecycleDispatcher.java 150]}
  {:type java.lang.IndexOutOfBoundsException
   :message Index: 6396, Size: 3982
   :at [java.util.ArrayList rangeCheck ArrayList.java 657]}]
 :trace
 [[java.util.ArrayList rangeCheck ArrayList.java 657]
  [java.util.ArrayList get ArrayList.java 433]
  [reactor.event.dispatch.AbstractSingleThreadDispatcher allocateRecursiveTask AbstractSingleThreadDispatcher.java 42]
  [reactor.event.dispatch.AbstractLifecycleDispatcher dispatch AbstractLifecycleDispatcher.java 131]
  [reactor.core.Reactor notify Reactor.java 242]
  [clojurewerkz.meltdown.reactor$notify invokeStatic reactor.clj 73]
  [clojurewerkz.meltdown.reactor$notify invoke reactor.clj 68]
michaelklishin commented 6 years ago

Reactor 2+ is the only way forward but it will require major API changes.