пытаюсь понять проблему, почему на вполне корректный ask еликсировский продюсер ломается. причем где-то у себя внутри
3:30:04.917 [error] GenServer Producer terminating
* (FunctionClauseError) no function clause matching in GenStage.maybe_producer_cancel/2
(gen_stage 1.1.2) lib/gen_stage.ex:2236: GenStage.maybe_producer_cancel([], %GenStage{buffer: {{[], []}, 0, 10000}, buffer_keep: :last, consumers: %{}, dispa
cher_mod: GenStage.DemandDispatcher, dispatcher_state: {[], 0, nil, false}, events: :forward, mod: Producer, monitors: %{}, producers: %{}, state: 0, type: :pro
ucer})
(gen_stage 1.1.2) lib/gen_stage.ex:1938: GenStage.handle_info/2
(stdlib 3.17) gen_server.erl:695: :gen_server.try_dispatch/4
(stdlib 3.17) gen_server.erl:771: :gen_server.handle_msg/6
(stdlib 3.17) proc_lib.erl:226: :proc_lib.init_p_do_apply/3
ast message: {:"$gen_producer", {#PID<26758.1008.0>, #Reference<26758.0.23478.68204>}, {:subscribe, [], [min_demand: 1, max_demand: 5, cancel: 0, manual: false,
partition: 0]}}
tate: 0
roducer started
зарепортили багу https://github.com/ergo-services/ergo/issues/103
если в гошный consumer добавить колбек
func (c *Consumer) HandleCanceled(process *gen.StageProcess, subscription gen.StageSubscription, reason string) gen.StageStatus {
fmt.Println("canceled with reason", reason)
return gen.StageStatusOK
}
то принтует тот же бектрейс эликсировского no function clause matching. ну это не сильно помогает, просто показывает, что гошный консьюмер ловит смерть продьюсера и причину его смерти.
просто я с эликсиром даже не на «вы». буду признателен за советы как это можно полечить