#1009·websocket

[BUG] 群集名称混淆

作者: ghost创建于 2025年12月11日更新于 2026年3月11日
标签bug
  • 这个问题存在吗?

  • 我搜索了现有的问题

当前的行为

我发现了一种模式, 似乎将大猩猩/网球层脉冲用于实时UI更新。

具体地说,节点名称在加载一页(如企业2 (企业2))后立即出现正确,但当WebSocket连接初始化后,这些名称就被短取的IPv6变体(2001:67c:ae8:3),IPv4-被放大的片段(:ffff:10.)所静默地取而代之,或者在一例中,只是后面的空字符串(企业2).

这表明最初的REST响应包含正确的显示名称, 但被推到大猩猩/websocket之上的递增更新是用错了字段,

甚至陌生人:在极限配置屏幕上,两个节点在WebSocket重新连接时,瞬间会显示一个完全反向的PTR字符串(例如:b. 3.0....ip6.arpa),然后被另一个被截取的形式所覆盖. 这种闪光恰恰发生在大猩猩/websocket谈判新框架时,因此似乎与更新的管道而不是DNS本身捆绑在一起.

由于WebSocket流也驱动了排序更新,UI在WebSocket连接建立后对节点的排序不同. 因此,清单在初始渲染时被排序为一种方式,在直播更新启动后被排序为另一种方式,这取决于WebSocket有效载荷恰好使用时的mangled构成什么.

此时,Pulse似乎有可能从错误的大猩猩/websocket元数据字段中抽取一个地址,并将其作为犬科节点标识符处理.

• 预期行为

WebSocket更新不应该引入替代或衍生的标识符. 被推到大猩猩/websocket之上的节点名称必须与其他地方使用的内组节点名称相匹配,并且不得依赖于对等连接元数据,IP,DNS,或WebSocket握手.

  1. 配置带有双层IPv4/IPv6的两个集群.
  2. 在DNS不稳定期间添加节点。
  3. 在初始渲染时装入脉冲并观察正确名称。
  4. 等待大猩猩/websocket连接初始化。
  5. 随着现场更新的到来,静静地观察名称变换.
  6. 切换分页(概览-限制-细节),以查看不同的编织格式。

还有别的吗?

鉴于大猩猩/websocket在这里的行为,Pulse可能无意中将 conn.RemoteAddr()或类似信息串行。 即使这证明不是根源,症状只在WebSocket层活性后才会出现,因此互动绝对值得调查.

另见#1008和#1004.

内容来源: gorilla/websocket