Skip to content

[Bug]: redis闪退 #424

Closed
Closed

Description

@594495520

发生了什么?/ What happened?

1.连接redis,打开该数据库,点击刷新按钮会崩溃;
2.永远只能看到db0;

如何复现?/ How can we reproduce it?

按我说的步骤复现率百分百;

版本与系统 / Version and system

windows11 /Navop 0.20.3以及之前版本

截图、日志或其他信息 / Screenshots, logs, or anything else

No response

Activity

  1. feigeCode commented on Oct 19, 2026

    @feigeCode
    Owner

    两个症状分别说明:

    1. 点击刷新按钮闪退 —— 已定位并修复(dev 分支 2aad25a7d)。

    根因:树行内的加载中/错误图标是条件插入的元素,刷新时它们的出现/消失改变了相邻文本元素的位置编号,导致布局缓存对不上号,渲染层拿到未测量的文本布局直接崩溃。修复后这些文本容器使用稳定标识,不再漂移。已加回归测试覆盖「打开数据库 → 点刷新」完整路径。

    2. 永远只能看到 db0 —— 这是当前设计:连接节点下只挂当前选中的库,切换库的入口是连接行右侧的 db0 下拉按钮(点开可列出 db0-db15 及各自键数)。不是 bug。

    如果你的环境是 Redis Cluster,集群确实只有 db0,无法切换其他库。

    闪退修复会随下个版本发布。如果切库按钮不好找,欢迎再反馈,我们会考虑改进入口的可见性。

  2. feigeCode commented on Oct 28, 2026

    @feigeCode
    Owner

    闪退问题已在 dev 修复(提交 2aad25a7d),首次随 v0.20.4(2026-10-20)发布,v0.22.0 也包含;本单可以关闭。

    根因:树行右侧的加载中 spinner / 错误图标是按条件插入的无 id 子元素,它们的出现与否会改变后续兄弟元素的位置序号;gpui-fast 的布局 key 由「路径 + 位置序号」派生,序号一漂移,计数/徽章文本元素的 key 就帧间变化,测量保留缓存对不上号,prepaint 拿到未测量布局直接 panic(release panic=abort → 整进程退出)。所以是"点刷新必崩",而不是数据问题。

    修复:给行内动态文本容器(类型徽章 / 名称 / 键计数)加稳定 id,不随兄弟元素的条件插入漂移。这与 #410 的行级 node_id 修复同族:那次修行 id,这次修行内元素 id。

    验证:新增 refreshing_a_loaded_database_does_not_crash,走「打开数据库 → 点刷新」完整路径。

    另:连接下只看得到 db0 是当前设计——切库入口在连接行右侧的 db0 下拉按钮,点开可列 db0-db15;Redis Cluster 本身只有 db0,无法切库。如果这个入口不好找,可以另开一单提可见性改进。

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

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions