Skip to content

Jync v1.3.2

Choose a tag to compare

@vfaner vfaner released this 06 Oct 09:48
· 579 commits to main since this release

Jync v1.3.2

本版主题是同步链路性能与升级稳定性。

本次更新

同步性能

  • 跳过注定失败的 CREATE:每周期开始取一次目标端表清单,命中的表跳过那轮必被「已存在」拒绝的 CREATE;清单获取失败自动回退老的逐表幂等 CREATE 路径,行为不回归
  • 快照稳态零 LOB 读:元数据快照服务新增内存缓存(内容哈希 + 已解析对象),每周期只读 (object_name, content_hash) 投影,仅哈希不一致的行才回读整行解析;空闲数据库上轮询既不重写也不重读元数据库
  • COUNT(*) 兜底带 TTL:统计信息不可用时的行数估算兜底(全表 COUNT)结果 5 分钟内复用,大表不再每隔几秒被全扫一次;不报告 JDBC URL 的驱动不走缓存,避免跨服务器 key 相撞

升级与运行稳定性

  • 修复跨版本升级必挂:content_hash 列自 v1.3.0 才有,从 ≤v1.2.1 升级且开启结构同步后,旧行空哈希使缓存比较每轮 NPE、重启不能自愈。现在空哈希有 null 防护、无哈希行不进缓存,并由下一次保存自动补齐
  • 项目删除竞争同步锁:删除运行中的项目时,未跑完的轮次原本会在删除后「复活」progress/snapshot 孤儿行;现在删除先持同步锁,拿不到锁(有轮次在飞或锁被其他实例持有)即拒绝并提示待本轮结束重试;enabled 但空闲的项目仍可一步删除
  • 批量删除:目标端删除同步改 JDBC 批量提交,大表删除吞吐量不再受往返次数限制
  • 补跑竞态修复:手动同步排队后的补跑改在锁释放后发起,消除排队条目落空的窗口
  • 内存条目驱逐:删除项目时同步驱逐该行数审计缓存与 JVM 锁表等内存条目,长运行进程不再随项目建删累积

界面与信息页

  • QQ 群:系统信息页「项目与作者」栏新增 QQ 群(426669837)展示行
  • 官网与微信同排:官网行不再通栏垫底,与微信在双列网格中配对成第三行
  • snapshotDir 行下线:设置页不再展示快照目录(该目录从未被实际读写),配置项与 i18n 键一并移除

打包与内部清理(行为不变)

  • jar 体积再减:静态资源目录移除冗余图片、只保留产品图标,截图移至 docs/
  • 500 文案收敛:意外 API 错误不再回显原始异常(SQL 错误、文件路径属内部信息),统一返回 i18n 键 error.unexpected,原文留在服务端日志
  • 死代码下线:无效 activeNav 赋值、Pager.slice()、冗余 success 字段、重复 logging 配置等;ChangeLog 分页/清空抽取为 ChangeLogService;app.js 提炼 busyLabel 消除重复加载态片段
  • 单元测试增至 464 个

升级

换 jar、重启即可,配置无需改动,元数据库与已存加密口令不受影响。Thymeleaf 模板缓存恢复默认开启:开发期直接改模板需重启生效,生产无感。

完整文档

README(中文) · README (English)