问题标签 [gen-server]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
75 浏览

erlang - error_logger 打印的服务器状态,是处理“Last message in was”时的状态?

原谅我糟糕的英语,

我的意思是当 gen_server 崩溃时,error_logger 打印"Last message in was""When Server State",服务器状态值是处理最后一条消息之前的状态?

0 投票
1 回答
156 浏览

erlang - 关于 abcast 函数和 gen_server 名称唯一性的混淆

来自erlang.org/doc的 gen_server 部分:

start_link(ServerName, Module, Args, Options) -> 结果

如果已经存在指定ServerName的进程,则函数返回 {error,{already_started,Pid}}

显然,Erlang 不允许多个进程具有相同的名称。

好,现在让我们看看另一个函数

abcast(名称,请求)-> abcast

向在指定节点本地注册的gen_servers发送异步请求。Name

注意复数形式的使用。

既然 Erlang 要求 gen_server 进程的名称是唯一的,为什么该函数会实现向多个同名进程abcast发送异步消息呢?

我错过了什么?

0 投票
1 回答
436 浏览

erlang - Gen_tcp over gen_server socket 监听立即关闭

我想在 gen_server 上使用 gen_tcp,代码如下:

好吧,tcp_listener之前立即关闭waitConnetion,我真的不明白为什么。

如果我handle_cast在 init 部分移动代码,它可以正常工作。

为什么连接被关闭?我花了很多时间没有成功。

任何帮助表示赞赏。

编辑

如果我在听众之后移动演员代码:

我发布的代码:

0 投票
1 回答
137 浏览

multithreading - 什么代码将从**删除(超时)连接**中恢复?

我在一个系统上有一个 gen_server,在其他 4 个系统上有 4 个客户端。当 gen_server 报告“** Removing (timedout) connection **”时,代码按预期运行 3 或 4 天。因为客户端可以在 gen_server 启动之前或之后变为活动状态,所以客户端在每次调用 gen_server 之前执行此代码:

在以任何顺序启动服务器或客户端时,这可以按预期工作。当在服务器上执行时,它们都连接并显示在 nodes() 中。

这是问题所在。在“** Removing (timedout) connection **”错误之后的某个时间,nodes() 显示了所有节点,这意味着客户端没有挂起并且已经执行了上面的代码。然而,与超时节点的通信尚未恢复。如果不重新启动客户端,如何重新建立连接?顺便说一句,重新启动客户端确实解决了这个问题。

任何帮助,不胜感激。

0 投票
1 回答
146 浏览

erlang - 由 Erlang 中的主管杀死所有 gen_server

在 Erlang 中,我有一个主管 (my_sup) 模块来启动和监控 gen_server 进程 (my_gen)。当 my_gen 被修改、编译和加载时,我需要重新启动应用程序。

有没有更好的方法来杀死主管(my_sup)的所有进程(gen_server)并再次重新启动进程(gen_server)?

0 投票
1 回答
136 浏览

erlang - Erlang 和 OTP in Action:为什么不能在 telnet 中调用 get_count?

“Erlang and OTP in Action”一书的第 3 章中,有一个tr_server例子。我对此有一些疑问:

  1. 为什么我们不能tr_server:get_count().在 telnet 中调用?该书指出该handle_info/2函数将同步调用gen_server:call/2. 任何人都可以提供有关问题的更多详细信息吗?

  2. tr_server而且,gen_server,erl console和之间的关系是什么telnet

0 投票
1 回答
870 浏览

emacs - Erlang supervisor/gen_server 异常退出:noproc

我现在要疯了,试图弄清楚这是什么问题。

基本上我只想用 1 个服务器和 1 个 gen_event-behaviour 模块设置一个简单的主管。

现在的问题是我无法再启动它了,就是主管。

无论我做什么,我都会收到此错误:**异常退出:noproc

并且当使用文本跟踪器时,它显示它发生在 sRPG_supervisor:init/1 中。有了这个,您认为代码有问题,但是当我运行其他人的示例时,我得到了完全相同的结果(我已经下载了 Joe Armstrongs 示例并以相同的结果测试了 sellaprime_supervisor)。

当我在我的虚拟 Ubuntu 安装中运行它时,它曾经启动良好。然后我设置了它,这样我就可以在 Windows 中编码,但我什至从未测试过这种最简单的形式是否有效,而且显然出于某种原因它不起作用。

因此,如果有人遇到类似的问题,找到解决方案会很棒!我使用 erl6.3 作为带有 OTP 17 的 Erlang 版本。

这是我正在使用的代码,只是从 Emacs 生成的骨架中构建的:sRPG_supervisor.erl

sRPG_server.erl

sRPG_event_handler.erl

以下是发生情况的示例:

如您所见,在没有主管的情况下调用服务器时服务器可以正常工作。

我仔细研究了其他人遇到的类似问题,但无济于事。

0 投票
1 回答
247 浏览

erlang - 在这种情况下我应该使用哪种 Erlang 行为,即 gen_server 或 gen_fsm

我正在开发一种解决方案,用于查询特定事务的 SOAP Web 服务。一旦检索到,这些事务将被保存在数据库中,然后调用回调 url 将一些数据发送到另一台服务器。您将如何最好地设计解决此问题的方案。我的困惑是是否应该使用 gen_server 或 gen_fsm ,如果是,解决方案的哪个组件去哪里,即如果 gen_server 什么任务去服务器哪个任务去客户端。

0 投票
2 回答
395 浏览

erlang - 如何禁用 gen_server 的故障转储

  • 有一个 gen_server 可以在其状态下保留一些敏感信息(密码等)

  • 延迟启用,

    因此,如果发生崩溃,gen_server 的状态将转储到崩溃日志中,例如:

结果,明智的信息被写入日志文件。

有什么方法可以防止将 gen_server 的状态写入日志文件/崩溃转储中?

0 投票
1 回答
601 浏览

macos - Erlang gen_server eaddrnotavail 后 16358 gen_tcp:connect 调用

我正在用 Erlang 编写服务器,并想打开大量连接。问题是我在 16358 次调用后收到{error, eaddrnotavail}gen_tcp:connect/3。正如您在下面看到的,服务器非常简单。

我修改了我的 MacOS Yosemite 限制;ulimit -n输出为 6553600。

我开始:

服务器:

客户端: