Elixir / Horde : DynamicSupervisor.start_child() 被一条神秘的警告消息阻止

Elixir / Horde : DynamicSupervisor.start_child() gets blocked with a cryptic warning message

我使用 Elixir 1.10.1 和 Horde 0.8.3 作为移动和网络应用程序的后端 API。基本上,用户由 UserAgent,简称 UA(用 GenServer 实现)表示,它在集群中是唯一的,只要存在来自客户端应用程序的至少一个实时连接,它就存在.客户端可以多次连接(phone、平板电脑、网络、家中、工作等);每个连接都用一个ConnectionAgent表示,简称CA,是唯一的。只要用户没有注销或会话没有过期,CA 就一直存在。基本上,我只有一个唯一的 UA,但我可以有多个 CA。

login 程序需要三个步骤

  1. 收到 HTTP 登录请求(JSON 内容)后,将调用 login() 控制器。经过一些检查后,它调用 Horde.DynamicSupervisor.start_child(...) 创建并注册一个新的 CA。
  2. 主管调用 ConnectionAgent.start_link(),然后用适当的参数调用 GenServer.start_link(),最终 ConnectionAgent.init() 被调用
  3. CA 应该创建一个新的 UA 或连接到现有的 UA,因此它调用 `Horde.DynamicSupervisor.start_child(...)

在那一刻,程序冻结,我在控制台中永远收到以下警告消息,我绝对不知道如何处理它们:

[warn] Exit while fetching metrics from AlaaarmApi.DSup.
Skip poll action. Reason: {:timeout, {GenServer, :call, [AlaaarmApi.DSup, :get_telemetry, 5000]}}.

我只是卡住了,所以任何提示都会有所帮助...

您是否检查过 Horde 图书馆中当前和过去的问题?

这似乎是与部落有关的问题。这至少是 Horde 0.8.2 中的一个已知问题,应该在 0.8.3 中解决(参见 here and here too)。

在GitHub中打开一个问题,maintainers/users一定会帮助你!