leonoel/missionary

m/sleep hangs indefinitely, scheduler thread seems blocked

Closed this issue · 3 comments

Every now and again, I get into a situation where (m/? (m/sleep 10)) just hangs indefinitely.

The only fix that I've found is to restart my repl.

This is on b.26, JVM.

I did some investigation the last time this happened (not sure if this is any help, as I don't really understand how Sleep works):
Using reflection, I inspected the pending field in the Scheduler/INSTANCE, it looks like there are several thousand entries (4380), removing the empty entries there are several hundred (859). Not sure if that means anything.

When I create a new sleep task, it increases those numbers by 1 (4381, 860), so it looks like the new task gets added to the queue:

(def cancel
    ((m/sleep 1000)
     #(println %)
     #(println %)))

Calling (cancel) reduces the pending numbers by 1 again (4381, 859).

The Scheduler/INSTANCE thread has the following properties:

  :contextClassLoader = clojure.lang.DynamicClassLoader@75267430
  :daemon = true
  :threadGroup = java.lang.ThreadGroup[name=main,maxpri=10]
  :name = "missionary scheduler"
  :alive = true
  :state = BLOCKED
  :uncaughtExceptionHandler = java.lang.ThreadGroup[name=main,maxpri=10]
  :priority = 5
  :id = 279
  :class = missionary.impl.Sleep$Scheduler
  :interrupted = false
Thread stacktrace

[missionary.impl.GroupBy cancel GroupBy.java 127]
[missionary.impl.GroupBy$Group invoke GroupBy.java 50]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 328]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Reduce$Process invoke Reduce.java 25]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.Ambiguous$1 invoke Ambiguous.java 60]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.GroupBy transfer GroupBy.java 170]
[missionary.impl.GroupBy consume GroupBy.java 149]
[missionary.impl.GroupBy$Group deref GroupBy.java 55]
[missionary.impl.Transform pull Transform.java 74]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.GroupBy transfer GroupBy.java 170]
[missionary.impl.GroupBy consume GroupBy.java 149]
[missionary.impl.GroupBy$Group deref GroupBy.java 55]
[missionary.impl.Transform pull Transform.java 74]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.GroupBy transfer GroupBy.java 170]
[missionary.impl.GroupBy$2 invoke GroupBy.java 193]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Ambiguous$3 invoke Ambiguous.java 116]
[missionary.impl.Ambiguous$5 invoke Ambiguous.java 178]
[cloroutine.impl$coroutine$fn__45585 invoke impl.cljc 65]
[missionary.impl.Ambiguous more Ambiguous.java 43]
[missionary.impl.Ambiguous$1 invoke Ambiguous.java 60]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Watch$1 invoke Watch.java 23]
[lentes.core.RWFocus$run_watchers__101824$fn__101826 invoke core.cljc 188]
[clojure.core$run_BANG_$fn__8813 invoke core.clj 7717]
[clojure.core.protocols$iter_reduce invokeStatic protocols.clj 49]
[clojure.core.protocols$fn__8162 invokeStatic protocols.clj 75]
[clojure.core.protocols$fn__8162 invoke protocols.clj 75]
[clojure.core.protocols$fn__8110$G__8105__8123 invoke protocols.clj 13]
[clojure.core$reduce invokeStatic core.clj 6830]
[clojure.core$run_BANG_ invokeStatic core.clj 7712]
[clojure.core$run_BANG_ invoke core.clj 7712]
[lentes.core.RWFocus$run_watchers__101824 invoke core.cljc 188]
[lentes.core.RWFocus$main_watcher__101832 invoke core.cljc 198]
[clojure.lang.ARef notifyWatches ARef.java 81]
[clojure.lang.Atom swap Atom.java 55]
[clojure.core$swap_BANG_ invokeStatic core.clj 2357]
[clojure.core$swap_BANG_ invoke core.clj 2349]
[mattsum.app_state$remove_state invokeStatic NO_SOURCE_FILE 29]
[mattsum.app_state$remove_state invoke NO_SOURCE_FILE 28]
[mattsum.form_fields.data_load$dissoc_session_data invokeStatic NO_SOURCE_FILE 109]
[mattsum.form_fields.data_load$dissoc_session_data invoke NO_SOURCE_FILE 108]
[mattsum.form_fields.field_types_flow$set_entity_attr_data$$cr108337_block_4__108354 invoke field_types_flow.clj 260]
[cloroutine.impl$coroutine$fn__45585 invoke impl.cljc 60]
[missionary.impl.Sequential step Sequential.java 50]
[missionary.impl.Sequential$1 invoke Sequential.java 33]
[missionary.impl.Reduce ready Reduce.java 50]
[missionary.impl.Reduce$2 invoke Reduce.java 78]
[missionary.impl.Ambiguous terminate Ambiguous.java 25]
[missionary.impl.Ambiguous more Ambiguous.java 32]
[missionary.impl.Ambiguous$2 invoke Ambiguous.java 68]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Ambiguous terminate Ambiguous.java 25]
[missionary.impl.Ambiguous more Ambiguous.java 32]
[missionary.impl.Ambiguous$2 invoke Ambiguous.java 68]
[missionary.impl.Latest terminate Latest.java 85]
[missionary.impl.Latest$1 invoke Latest.java 103]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Watch invoke Watch.java 54]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Latest$Process invoke Latest.java 29]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 328]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 328]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Reduce$Process invoke Reduce.java 25]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.Ambiguous$1 invoke Ambiguous.java 60]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.GroupBy transfer GroupBy.java 170]
[missionary.impl.GroupBy$2 invoke GroupBy.java 193]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Ambiguous$3 invoke Ambiguous.java 116]
[missionary.impl.Ambiguous$5 invoke Ambiguous.java 178]
[cloroutine.impl$coroutine$fn__45585 invoke impl.cljc 65]
[missionary.impl.Ambiguous more Ambiguous.java 43]
[missionary.impl.Ambiguous$1 invoke Ambiguous.java 60]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Watch$1 invoke Watch.java 23]
[lentes.core.RWFocus$run_watchers__101824$fn__101826 invoke core.cljc 188]
[clojure.core$run_BANG_$fn__8813 invoke core.clj 7717]
[clojure.core.protocols$iter_reduce invokeStatic protocols.clj 49]
[clojure.core.protocols$fn__8162 invokeStatic protocols.clj 75]
[clojure.core.protocols$fn__8162 invoke protocols.clj 75]
[clojure.core.protocols$fn__8110$G__8105__8123 invoke protocols.clj 13]
[clojure.core$reduce invokeStatic core.clj 6830]
[clojure.core$run_BANG_ invokeStatic core.clj 7712]
[clojure.core$run_BANG_ invoke core.clj 7712]
[lentes.core.RWFocus$run_watchers__101824 invoke core.cljc 188]
[lentes.core.RWFocus$main_watcher__101832 invoke core.cljc 198]
[clojure.lang.ARef notifyWatches ARef.java 81]
[clojure.lang.Atom swap Atom.java 55]
[clojure.core$swap_BANG_ invokeStatic core.clj 2357]
[clojure.core$swap_BANG_ invoke core.clj 2349]
[mattsum.app_state$remove_state invokeStatic NO_SOURCE_FILE 29]
[mattsum.app_state$remove_state invoke NO_SOURCE_FILE 28]
[mattsum.form_fields.data_load$dissoc_session_data invokeStatic NO_SOURCE_FILE 109]
[mattsum.form_fields.data_load$dissoc_session_data invoke NO_SOURCE_FILE 108]
[mattsum.form_fields.field_types_flow$set_entity_attr_data$$cr108337_block_4__108354 invoke field_types_flow.clj 260]
[cloroutine.impl$coroutine$fn__45585 invoke impl.cljc 60]
[missionary.impl.Sequential step Sequential.java 50]
[missionary.impl.Sequential$1 invoke Sequential.java 33]
[missionary.impl.Reduce ready Reduce.java 50]
[missionary.impl.Reduce$2 invoke Reduce.java 78]
[missionary.impl.Ambiguous terminate Ambiguous.java 25]
[missionary.impl.Ambiguous more Ambiguous.java 32]
[missionary.impl.Ambiguous$2 invoke Ambiguous.java 68]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Ambiguous terminate Ambiguous.java 25]
[missionary.impl.Ambiguous more Ambiguous.java 32]
[missionary.impl.Ambiguous$2 invoke Ambiguous.java 68]
[missionary.impl.Latest terminate Latest.java 85]
[missionary.impl.Latest$1 invoke Latest.java 103]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Watch invoke Watch.java 54]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Latest$Process invoke Latest.java 29]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 328]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 328]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Reduce$Process invoke Reduce.java 25]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.Ambiguous$1 invoke Ambiguous.java 60]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.GroupBy transfer GroupBy.java 170]
[missionary.impl.GroupBy consume GroupBy.java 149]
[missionary.impl.GroupBy$Group deref GroupBy.java 55]
[missionary.impl.Transform pull Transform.java 74]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.GroupBy transfer GroupBy.java 170]
[missionary.impl.GroupBy consume GroupBy.java 149]
[missionary.impl.GroupBy$Group deref GroupBy.java 55]
[missionary.impl.Transform pull Transform.java 74]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.GroupBy transfer GroupBy.java 170]
[missionary.impl.GroupBy consume GroupBy.java 149]
[missionary.impl.GroupBy$Group deref GroupBy.java 55]
[missionary.impl.Transform pull Transform.java 74]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.GroupBy transfer GroupBy.java 170]
[missionary.impl.GroupBy$2 invoke GroupBy.java 193]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Ambiguous$3 invoke Ambiguous.java 116]
[missionary.impl.Ambiguous$5 invoke Ambiguous.java 178]
[cloroutine.impl$coroutine$fn__45585 invoke impl.cljc 65]
[missionary.impl.Ambiguous more Ambiguous.java 43]
[missionary.impl.Ambiguous$1 invoke Ambiguous.java 60]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Watch$1 invoke Watch.java 23]
[lentes.core.RWFocus$run_watchers__101824$fn__101826 invoke core.cljc 188]
[clojure.core$run_BANG_$fn__8813 invoke core.clj 7717]
[clojure.core.protocols$iter_reduce invokeStatic protocols.clj 49]
[clojure.core.protocols$fn__8162 invokeStatic protocols.clj 75]
[clojure.core.protocols$fn__8162 invoke protocols.clj 75]
[clojure.core.protocols$fn__8110$G__8105__8123 invoke protocols.clj 13]
[clojure.core$reduce invokeStatic core.clj 6830]
[clojure.core$run_BANG_ invokeStatic core.clj 7712]
[clojure.core$run_BANG_ invoke core.clj 7712]
[lentes.core.RWFocus$run_watchers__101824 invoke core.cljc 188]
[lentes.core.RWFocus$main_watcher__101832 invoke core.cljc 198]
[clojure.lang.ARef notifyWatches ARef.java 81]
[clojure.lang.Atom swap Atom.java 55]
[clojure.core$swap_BANG_ invokeStatic core.clj 2357]
[clojure.core$swap_BANG_ invoke core.clj 2349]
[mattsum.app_state$remove_state invokeStatic NO_SOURCE_FILE 29]
[mattsum.app_state$remove_state invoke NO_SOURCE_FILE 28]
[mattsum.form_fields.data_load$dissoc_session_data invokeStatic NO_SOURCE_FILE 109]
[mattsum.form_fields.data_load$dissoc_session_data invoke NO_SOURCE_FILE 108]
[mattsum.form_fields.field_types_flow$set_entity_attr_data$$cr108337_block_4__108354 invoke field_types_flow.clj 260]
[cloroutine.impl$coroutine$fn__45585 invoke impl.cljc 60]
[missionary.impl.Sequential step Sequential.java 50]
[missionary.impl.Sequential$1 invoke Sequential.java 33]
[missionary.impl.Reduce ready Reduce.java 50]
[missionary.impl.Reduce$2 invoke Reduce.java 78]
[missionary.impl.Ambiguous terminate Ambiguous.java 25]
[missionary.impl.Ambiguous more Ambiguous.java 32]
[missionary.impl.Ambiguous$2 invoke Ambiguous.java 68]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Ambiguous terminate Ambiguous.java 25]
[missionary.impl.Ambiguous more Ambiguous.java 32]
[missionary.impl.Ambiguous$2 invoke Ambiguous.java 68]
[missionary.impl.Latest terminate Latest.java 85]
[missionary.impl.Latest$1 invoke Latest.java 103]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Watch invoke Watch.java 54]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Latest$Process invoke Latest.java 29]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 328]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 328]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Reduce$Process invoke Reduce.java 25]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.Ambiguous$1 invoke Ambiguous.java 60]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.GroupBy transfer GroupBy.java 170]
[missionary.impl.GroupBy consume GroupBy.java 149]
[missionary.impl.GroupBy$Group deref GroupBy.java 55]
[missionary.impl.Transform pull Transform.java 74]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.GroupBy transfer GroupBy.java 170]
[missionary.impl.GroupBy consume GroupBy.java 149]
[missionary.impl.GroupBy$Group deref GroupBy.java 55]
[missionary.impl.Transform pull Transform.java 74]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.GroupBy transfer GroupBy.java 170]
[missionary.impl.GroupBy consume GroupBy.java 149]
[missionary.impl.GroupBy$Group deref GroupBy.java 55]
[missionary.impl.Transform pull Transform.java 74]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.GroupBy transfer GroupBy.java 170]
[missionary.impl.GroupBy consume GroupBy.java 149]
[missionary.impl.GroupBy$Group deref GroupBy.java 55]
[missionary.impl.Transform pull Transform.java 74]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.GroupBy transfer GroupBy.java 170]
[missionary.impl.GroupBy consume GroupBy.java 149]
[missionary.impl.GroupBy$Group deref GroupBy.java 55]
[missionary.impl.Transform pull Transform.java 74]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.GroupBy transfer GroupBy.java 170]
[missionary.impl.GroupBy$2 invoke GroupBy.java 193]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Ambiguous$3 invoke Ambiguous.java 116]
[missionary.impl.Ambiguous$5 invoke Ambiguous.java 178]
[cloroutine.impl$coroutine$fn__45585 invoke impl.cljc 65]
[missionary.impl.Ambiguous more Ambiguous.java 43]
[missionary.impl.Ambiguous$1 invoke Ambiguous.java 60]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Watch$1 invoke Watch.java 23]
[lentes.core.RWFocus$run_watchers__101824$fn__101826 invoke core.cljc 188]
[clojure.core$run_BANG_$fn__8813 invoke core.clj 7717]
[clojure.core.protocols$iter_reduce invokeStatic protocols.clj 49]
[clojure.core.protocols$fn__8162 invokeStatic protocols.clj 75]
[clojure.core.protocols$fn__8162 invoke protocols.clj 75]
[clojure.core.protocols$fn__8110$G__8105__8123 invoke protocols.clj 13]
[clojure.core$reduce invokeStatic core.clj 6830]
[clojure.core$run_BANG_ invokeStatic core.clj 7712]
[clojure.core$run_BANG_ invoke core.clj 7712]
[lentes.core.RWFocus$run_watchers__101824 invoke core.cljc 188]
[lentes.core.RWFocus$main_watcher__101832 invoke core.cljc 198]
[clojure.lang.ARef notifyWatches ARef.java 81]
[clojure.lang.Atom swap Atom.java 55]
[clojure.core$swap_BANG_ invokeStatic core.clj 2357]
[clojure.core$swap_BANG_ invoke core.clj 2349]
[mattsum.app_state$remove_state invokeStatic NO_SOURCE_FILE 29]
[mattsum.app_state$remove_state invoke NO_SOURCE_FILE 28]
[mattsum.form_fields.data_load$dissoc_session_data invokeStatic NO_SOURCE_FILE 109]
[mattsum.form_fields.data_load$dissoc_session_data invoke NO_SOURCE_FILE 108]
[mattsum.form_fields.field_types_flow$set_entity_attr_data$$cr108337_block_4__108354 invoke field_types_flow.clj 260]
[cloroutine.impl$coroutine$fn__45585 invoke impl.cljc 60]
[missionary.impl.Sequential step Sequential.java 50]
[missionary.impl.Sequential$1 invoke Sequential.java 33]
[missionary.impl.Reduce ready Reduce.java 50]
[missionary.impl.Reduce$2 invoke Reduce.java 78]
[missionary.impl.Ambiguous terminate Ambiguous.java 25]
[missionary.impl.Ambiguous more Ambiguous.java 32]
[missionary.impl.Ambiguous$2 invoke Ambiguous.java 68]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Ambiguous terminate Ambiguous.java 25]
[missionary.impl.Ambiguous more Ambiguous.java 32]
[missionary.impl.Ambiguous$2 invoke Ambiguous.java 68]
[missionary.impl.Latest terminate Latest.java 85]
[missionary.impl.Latest$1 invoke Latest.java 103]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Watch invoke Watch.java 54]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Latest$Process invoke Latest.java 29]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 328]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 328]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Reduce$Process invoke Reduce.java 25]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Ambiguous$1 invoke Ambiguous.java 60]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Watch$1 invoke Watch.java 23]
[lentes.core.RWFocus$run_watchers__101824$fn__101826 invoke core.cljc 188]
[clojure.core$run_BANG_$fn__8813 invoke core.clj 7717]
[clojure.core.protocols$iter_reduce invokeStatic protocols.clj 49]
[clojure.core.protocols$fn__8162 invokeStatic protocols.clj 75]
[clojure.core.protocols$fn__8162 invoke protocols.clj 75]
[clojure.core.protocols$fn__8110$G__8105__8123 invoke protocols.clj 13]
[clojure.core$reduce invokeStatic core.clj 6830]
[clojure.core$run_BANG_ invokeStatic core.clj 7712]
[clojure.core$run_BANG_ invoke core.clj 7712]
[lentes.core.RWFocus$run_watchers__101824 invoke core.cljc 188]
[lentes.core.RWFocus$main_watcher__101832 invoke core.cljc 198]
[clojure.lang.ARef notifyWatches ARef.java 81]
[clojure.lang.Atom swap Atom.java 55]
[clojure.core$swap_BANG_ invokeStatic core.clj 2357]
[clojure.core$swap_BANG_ invoke core.clj 2349]
[mattsum.app_state$remove_state invokeStatic NO_SOURCE_FILE 29]
[mattsum.app_state$remove_state invoke NO_SOURCE_FILE 28]
[mattsum.form_fields.data_load$dissoc_session_data invokeStatic NO_SOURCE_FILE 109]
[mattsum.form_fields.data_load$dissoc_session_data invoke NO_SOURCE_FILE 108]
[mattsum.form_fields.field_types_flow$set_entity_attr_data$$cr108337_block_4__108354 invoke field_types_flow.clj 260]
[cloroutine.impl$coroutine$fn__45585 invoke impl.cljc 60]
[missionary.impl.Sequential step Sequential.java 50]
[missionary.impl.Sequential$1 invoke Sequential.java 33]
[missionary.impl.Reduce ready Reduce.java 50]
[missionary.impl.Reduce$2 invoke Reduce.java 78]
[missionary.impl.Ambiguous terminate Ambiguous.java 25]
[missionary.impl.Ambiguous more Ambiguous.java 32]
[missionary.impl.Ambiguous$2 invoke Ambiguous.java 68]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Ambiguous terminate Ambiguous.java 25]
[missionary.impl.Ambiguous more Ambiguous.java 32]
[missionary.impl.Ambiguous$2 invoke Ambiguous.java 68]
[missionary.impl.Latest terminate Latest.java 85]
[missionary.impl.Latest$1 invoke Latest.java 103]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Watch invoke Watch.java 54]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Latest$Process invoke Latest.java 29]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 328]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 328]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Reduce$Process invoke Reduce.java 25]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.Ambiguous$1 invoke Ambiguous.java 60]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.GroupBy transfer GroupBy.java 170]
[missionary.impl.GroupBy$2 invoke GroupBy.java 193]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Ambiguous$3 invoke Ambiguous.java 116]
[missionary.impl.Ambiguous$5 invoke Ambiguous.java 178]
[cloroutine.impl$coroutine$fn__45585 invoke impl.cljc 65]
[missionary.impl.Ambiguous more Ambiguous.java 43]
[missionary.impl.Ambiguous$1 invoke Ambiguous.java 60]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.Watch$1 invoke Watch.java 23]
[lentes.core.RWFocus$run_watchers__101824$fn__101826 invoke core.cljc 188]
[clojure.core$run_BANG_$fn__8813 invoke core.clj 7717]
[clojure.core.protocols$iter_reduce invokeStatic protocols.clj 49]
[clojure.core.protocols$fn__8162 invokeStatic protocols.clj 75]
[clojure.core.protocols$fn__8162 invoke protocols.clj 75]
[clojure.core.protocols$fn__8110$G__8105__8123 invoke protocols.clj 13]
[clojure.core$reduce invokeStatic core.clj 6830]
[clojure.core$run_BANG_ invokeStatic core.clj 7712]
[clojure.core$run_BANG_ invoke core.clj 7712]
[lentes.core.RWFocus$run_watchers__101824 invoke core.cljc 188]
[lentes.core.RWFocus$main_watcher__101832 invoke core.cljc 198]
[clojure.lang.ARef notifyWatches ARef.java 81]
[clojure.lang.Atom swap Atom.java 55]
[clojure.core$swap_BANG_ invokeStatic core.clj 2357]
[clojure.core$swap_BANG_ invoke core.clj 2349]
[mattsum.app_state$remove_state invokeStatic NO_SOURCE_FILE 29]
[mattsum.app_state$remove_state invoke NO_SOURCE_FILE 28]
[mattsum.form_fields.data_load$dissoc_session_data invokeStatic NO_SOURCE_FILE 109]
[mattsum.form_fields.data_load$dissoc_session_data invoke NO_SOURCE_FILE 108]
[mattsum.form_fields.field_types_flow$set_entity_attr_data$$cr108337_block_4__108354 invoke field_types_flow.clj 260]
[cloroutine.impl$coroutine$fn__45585 invoke impl.cljc 60]
[missionary.impl.Sequential step Sequential.java 50]
[missionary.impl.Sequential$1 invoke Sequential.java 33]
[missionary.impl.Reduce ready Reduce.java 50]
[missionary.impl.Reduce$2 invoke Reduce.java 78]
[missionary.impl.Ambiguous terminate Ambiguous.java 25]
[missionary.impl.Ambiguous more Ambiguous.java 32]
[missionary.impl.Ambiguous$2 invoke Ambiguous.java 68]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Ambiguous terminate Ambiguous.java 25]
[missionary.impl.Ambiguous more Ambiguous.java 32]
[missionary.impl.Ambiguous$2 invoke Ambiguous.java 68]
[missionary.impl.Latest terminate Latest.java 85]
[missionary.impl.Latest$1 invoke Latest.java 103]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Transform pull Transform.java 47]
[missionary.impl.Transform$3 invoke Transform.java 110]
[missionary.impl.Watch invoke Watch.java 54]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Latest$Process invoke Latest.java 29]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 328]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 328]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Reduce$Process invoke Reduce.java 25]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.Ambiguous$1 invoke Ambiguous.java 60]
[missionary.impl.Transform pull Transform.java 86]
[missionary.impl.Transform$2 invoke Transform.java 102]
[missionary.impl.GroupBy cancel GroupBy.java 135]
[missionary.impl.GroupBy$Group invoke GroupBy.java 50]
[missionary.impl.Transform invoke Transform.java 120]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 328]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Reduce$Process invoke Reduce.java 25]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 329]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Reduce$Process invoke Reduce.java 25]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 329]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Reduce$Process invoke Reduce.java 25]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.Ambiguous$Choice invoke Ambiguous.java 329]
[missionary.impl.Ambiguous cancel Ambiguous.java 142]
[missionary.impl.Ambiguous$Process invoke Ambiguous.java 203]
[missionary.impl.Reduce$Process invoke Reduce.java 25]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.Sequential invoke Sequential.java 71]
[missionary.impl.RaceJoin invoke RaceJoin.java 80]
[missionary.impl.RaceJoin$2 invoke RaceJoin.java 63]
[missionary.impl.Reduce ready Reduce.java 50]
[missionary.impl.Reduce$1 invoke Reduce.java 69]
[missionary.impl.Ambiguous$3 invoke Ambiguous.java 116]
[missionary.impl.Ambiguous$5 invoke Ambiguous.java 178]
[cloroutine.impl$coroutine$fn__45585 invoke impl.cljc 65]
[missionary.impl.Ambiguous more Ambiguous.java 43]
[missionary.impl.Ambiguous$1 invoke Ambiguous.java 60]
[missionary.impl.Ambiguous$3 invoke Ambiguous.java 116]
[missionary.impl.Sleep$Scheduler trigger Sleep.java 60]
[missionary.impl.Sleep$Scheduler run Sleep.java 74]

Please let me know if there is any way to provide additional information about what is causing this.

This seems to happen in cases where I an infinite loop and then interrupted the execution.

Thank you for reporting.
The fact that the scheduler thread stays indefinitely blocked at the beginning of a synchronized block (GroupBy.java 127) is a good hint for a deadlock. Although I can't say for sure what happens in this specific case (which doesn't seem trivial), I have experienced deadlocks in other situations, I'm pretty sure group-by synchronization strategy is too aggressive and I'm currently working on a fix.

Should be fixed in b.27, feel free to reopen if you still observe a similar problem.