Skip to content

v0.7.1

Choose a tag to compare

@github-actions github-actions released this 21 Oct 02:41
· 1 commit to main since this release

修复 0.7.0 上两处让基本使用失效的问题,并给元数据缓存加上有效期。

修复

  • 配置了驱动目录却报 “JDBC driver ... is not loaded”:合并时 refreshAll 命令被注册了两次,
    registerCommand 对重复 id 抛异常,整个 activate 在注册命令这一步中断 —— 后面「把驱动 jar
    交给桥」根本没执行。桥能起来、连接菜单也能点,但驱动一个都没加载。删掉重复注册,并让
    check-docs.mjs 校验「同一条命令不得注册两次」,以后这类问题在 npm test 就会失败
  • 桥自动重启后驱动全部丢失:驱动活在桥 JVM 里,而崩溃重启不经过「重启桥」命令。现在桥每次
    进入 ready 都会重新加载驱动;桥一进入 starting/stopped,DriverManager 就丢弃旧列表,
    连接前发现驱动类不在会先重载,桥在连接途中被替换时也会重载并重试一次
  • 驱动注册不再能让激活卡死:driver.register 加 120 秒超时,并在 info 级别留下
    「正在加载 N 个驱动 jar」
  • 大库上的元数据预取会把桥撑爆:整库一次 getTables 的结果会被驱动整个读进堆内存,
    超大 catalog 上足以耗尽堆。补全预取改为按 schema(或按 catalog)分批,并设 20000 张表
    的总预算;每次读取和缓存占用因此都有界
  • metadata.queries 的表规则在预取路径上恢复了作用:分批后每次读取都带 schema,
    规则不再因「${schema} 填不出来」被拒绝而回落到驱动
  • OOM 后不再半死不活:JVM 加 -XX:+ExitOnOutOfMemoryError,堆耗尽时直接退出,
    由已有的自动重启换一个新进程(驱动会随之重新加载)

新增

  • metadata.cacheMinutes(默认 5):树与补全的元数据缓存多少分钟后重新读取;0 表示直到
    断开连接或手动刷新。手动刷新总是立即清空

新增(仅开发)

  • check-docs.mjs 增加重复命令注册校验;新增 prefetchPlan.test.ts、cacheAge.test.ts,
    把「按什么维度分批」与「缓存何时过期」两条规则固定下来