#2050·iii

在处理函数突发后,引擎会为同一连接分配第二个工作者身份;清除被遗留的身份会取消所有按名称注册的函数

作者: robbierobs创建于 2026年8月8日更新于 2026年8月11日

□ 总结

当一个工人过程由发动机自己的"iii-exec"模块启动时,一般在发动机工人WebSocket的收听者接受连接之前先出靴. 如果应用程序在SDK仍然被断开时登记其功能,两个缺陷结合在启动后数秒或数十秒内擦去每次注册——永久在配置中不使用"监视":

** SDK (节点): 已断开的注册发送两次。 ** 已断开的“ registerFunction( ) ” 记录了“ this. unctions” 中的功能, 并将信件排入“ messages ToSend” 。 在Socket Open上 ' 重放这个.功能 ' ,然后冲出Messages ToSend ' ,所以每个登记册功能在同一套接字上两次出动(我们测出534个发送的267个功能),排队的REGISTER WORKER ' 从RegisterWorkerMetata()'中引用的“registerMetata()”同样被onSocket Open'结尾的新呼号所重复。

  1. 工程:一种连接的第二个工人身份+代名清理。 ** 当连接被接受时,引擎会指定临时工人身份;功能会在其下爆炸. 当REGISTER-WORKER ' 发动机功能引用在以后处理(在后置负荷下为~2s)时,该发动机为相同的活接线创建了第二个工人身份,并将每个函数重新归属,每个函数记录:两个活接线工人之间转移的功能所有权——可能的跨工人覆盖'. 被搁浅的第一身份随后被清理出,而该清理则不登记函数由名称**,去除继任者的注册和每条HTTP路由. 不涉及`工人断接 ' 活动,因此,所有者 -- -- 意识不清的未登记者从1796年的 " 永不起火 " 中跳出 -- -- 该警卫只负责清理死路一条。

□再现.

  • 发动机0.19.7或0.22.1,节点SDK0.19.7或0.22.1(所有四个组合复制)
  • 配置: " 三执行 " 工人,没有 " 监视 " 钥匙, " 执行:[节点工人.mjs] " ,该工人在单元装货时登记几百项功能
  • 启动发动机;通过t+40,工人的路线为404,而工人的过程是活的,它的插座是相连的

发动机日志签名:N×所有权转让 ' ,N×[UNREGISTERED]',比工人流程多一个工人登记 ' 活动,零工人断接 ' ,零`未登记 " 。

在 " watch " 出现后,文件表重发恰好是为了恢复路径,这在大多数真正的配置中掩盖了错误。

QQA 有线级 SDK 跟踪( 在连接/ 在Socket Open/ sendMessageRaw 上附加FileSync 钩子) 证实: 一个套接字到达 OPEN, 客户端发送零 UnregisterFunction 消息 —— 未注册是引擎侧. QX

□ 影响

  • 任何不戴手表的`iii-exec ' 工人,在干净的靴子后,可以永久地失去其全部功能:过程保持活力并连接起来,因此,除了404路以外,没有任何外部通知。
  • `iii-exec ' 不重新雇用一个退出过程的工人,因此这种地形没有自我恢复的途径。

□ 建议的方向

  • 发动机:保持一个工人身份 . . . . . . .