leonoel / missionary

A functional effect and streaming system for Clojure/Script
Eclipse Public License 2.0
620 stars 25 forks source link

m/sleep hangs indefinitely, scheduler thread seems blocked #67

Closed mjmeintjes closed 1 year ago

mjmeintjes commented 2 years ago

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.

mjmeintjes commented 2 years ago

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

leonoel commented 2 years ago

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.

leonoel commented 1 year ago

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