Repository navigation
v0.7.1
修复 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,
把「按什么维度分批」与「缓存何时过期」两条规则固定下来