Skip to content

置顶重排陷入死循环,刷爆 insertSessionBefore 直到 net::ERR_INSUFFICIENT_RESOURCES #4

Description

@kevin-zx

现象

默认配置(reorderOnLoad: true)且存在至少一个已置顶会话时,打开 web 界面后客户端会无限循环调用 POST /api/workspace/insertSessionBefore。短短几秒内产生数万条请求,且全部以 net::ERR_INSUFFICIENT_RESOURCES 失败。

复现步骤

  1. dsh web profile 中安装 dsh-session-pin(保持默认配置)。
  2. 置顶至少一个会话。
  3. 打开 web 界面(无需任何操作),观察 Network:
    insertSessionBefore 无限重复且全部失败(net::ERR_INSUFFICIENT_RESOURCES)。

原因分析

lib/client.js 监听会话/工作区列表变化,触发 reapplyOrder()moveToTop()workspaces.insertSessionBefore()
服务端把重排结果持久化后,会向客户端广播一次列表变化事件,客户端收到后再次进入 reapplyOrder() → 形成无限乒乓。
仅靠 reorderOnLoad 门控无法阻止:该开关只跳过首次加载,之后的任意列表变化仍会再次进入重排。

预期行为

仅在置顶顺序确实发生变化时才发起重排;并且不应被"自己刚发起的、已被服务端确认的重排"再次触发(例如:调用前先比较当前顺序,或忽略与本次移动对应的顺序回显事件)。

临时规避

reorderOnLoad 设为 false 可停止循环(关闭自动重排后,置顶仅保留标记功能)。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions