Skip to content

fix[zwatch]: add hidden column to AlarmVO/EventSubscriptionVO#3675

Open
zstack-robot-1 wants to merge 1 commit into5.5.12from
sync/chao.he/fix/ZSTAC-83966@@2
Open

fix[zwatch]: add hidden column to AlarmVO/EventSubscriptionVO#3675
zstack-robot-1 wants to merge 1 commit into5.5.12from
sync/chao.he/fix/ZSTAC-83966@@2

Conversation

@zstack-robot-1
Copy link
Copy Markdown
Collaborator

ZSTAC-83966 Plan D — SQL migration V5.5.13

CALL ADD_COLUMN for AlarmVO.hidden and EventSubscriptionVO.hidden.

sync from gitlab !9535

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 3, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: http://open.zstack.ai:20001/code-reviews/zstack-cloud.yaml (via .coderabbit.yaml)

Review profile: CHILL

Plan: Pro

Run ID: 5cd1ce82-63e1-4d29-936c-bf4fab63a6d5

📥 Commits

Reviewing files that changed from the base of the PR and between 60c6f16 and 195e6a0.

📒 Files selected for processing (1)
  • conf/db/upgrade/V5.5.12__schema.sql
🚧 Files skipped from review as they are similar to previous changes (1)
  • conf/db/upgrade/V5.5.12__schema.sql

Walkthrough

在数据库升级脚本 conf/db/upgrade/V5.5.12__schema.sql 中,为 AlarmVOEventSubscriptionVOActiveAlarmVO 三个表各新增了一个名为 hidden 的列,类型为 TINYINT(1),默认值为 '0',非必填,通过 CALL ADD_COLUMN(...) 引入。(50字以内)

Changes

Cohort / File(s) Summary
数据库 schema 升级
conf/db/upgrade/V5.5.12__schema.sql
AlarmVOEventSubscriptionVOActiveAlarmVO 三个表各添加 hidden 列(TINYINT(1),默认 '0',非必填),通过 CALL ADD_COLUMN(...) 执行。

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

🐰✨ 新列悄然钻土,
三处藏身初成形,
默默为零守旧序,
小变动,心里暖融融。

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title follows the required [scope]: format and is 61 characters, well under the 72-character limit.
Description check ✅ Passed The description is directly related to the changeset, referencing the SQL migration V5.5.13, the JIRA issue ZSTAC-83966, and the specific columns being added.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch sync/chao.he/fix/ZSTAC-83966@@2

Comment @coderabbitai help to get the list of available commands and usage tips.

@MatheMatrix MatheMatrix force-pushed the sync/chao.he/fix/ZSTAC-83966@@2 branch from dc75a52 to 60c6f16 Compare April 3, 2026 10:11
@MatheMatrix
Copy link
Copy Markdown
Owner

Comment from chao.he:

风险评估与解决方案(补充)

  1. 全局 schema 变更风险(AlarmVO/EventSubscriptionVO 增加 hidden 列)
  • 风险:覆盖所有查询路径,需要确保 migration 与查询行为一致。
  • 方案:
    • 迁移后校验:hidden=1 仅出现在 AI UUID 白名单;非 AI 告警/订阅查询结果与改造前一致。
    • 回归矩阵:queryAlarm/queryEventSubscription/queryActiveAlarm 三条链路全覆盖。
  1. syncHiddenState 触发时机风险(仅启动+license变更)
  • 风险:license 自然过期未触发变更事件时,hidden 状态可能存在窗口期。
  • 方案:
    • 增加周期性 reconcile(定时调用 syncHiddenState)以收敛窗口期;
    • 保留现有查询过滤兜底,保障展示层面安全。
  1. 现状说明
  • 当前 check 已复用 LicenseManager.checkAddonAvailability(MaaSBase);
  • migration 采用 ADD_COLUMN 幂等方式,重跑安全。

下一步:按上述方案补充周期性同步并补充覆盖验证。

Resolves: ZSTAC-83966

Change-Id: Ic660df81e306f8cb64348289604810c27dd63ae0
@MatheMatrix MatheMatrix force-pushed the sync/chao.he/fix/ZSTAC-83966@@2 branch from 60c6f16 to 195e6a0 Compare April 3, 2026 13:25
@ZStack-Robot
Copy link
Copy Markdown
Collaborator

Comment from chao.he:

补充同步说明:本次已将 ZSTAC-83966 的模型级方案扩展到 ActiveAlarm,schema migration 增加:\nCALL ADD_COLUMN('ActiveAlarmVO', 'hidden', 'TINYINT(1)', 0, '0');\n\n沿用现有 ADD_COLUMN 幂等机制,可重复执行且无副作用。

@zstack-robot-2
Copy link
Copy Markdown
Collaborator

Comment from ye.zou:

Code Review

LGTM ✅ 这个 MR 里的 schema 变更本身没问题:CALL ADD_COLUMN(...) 走现有幂等路径,默认值 0 也兼容老数据,当前 HEAD 没看到这边的阻断项。

结论: APPROVE ✅
回归风险: 低
说明: 当前这一轮 Jira 仍是 BLOCK,是因为配套 premium MR !13418 还有阻断项,不是这个 schema MR 自身的问题。


Review Tracker: ZSTAC-83966

Rounds: R1=block

Findings

1. CRIT | 正确性 | premium

  • File: zwatch/src/main/java/org/zstack/zwatch/alarm/AlarmHiddenQueryFilter.java:24
  • Finding: hidden 方案当前只覆盖 AlarmVO/EventSubscriptionVO,没有覆盖 ActiveAlarm 链路。APIQueryActiveAlarmMsg 没有额外过滤,ActiveAlarmVO/ActiveAlarmVO_ 没有 hidden 字段,AISystemAlarmManagerImpl.syncHiddenState() 也不更新 ActiveAlarmVO,但测试却断言 queryActiveAlarm 会隐藏 AI active alarms。当前实现与测试预期、以及 zstack schema 新增的 ActiveAlarmVO.hidden 不一致,license 关闭后 AI active alarms 仍会从查询结果漏出来。
  • Suggestion: 给 ActiveAlarmVO/ActiveAlarmVO_ 补 hidden 字段,在 syncHiddenState() 同步 ActiveAlarmVO.hidden,并给 APIQueryActiveAlarmMsg 补 AddExtraConditionToQueryExtensionPoint;随后补一条验证 license 变更前后 queryActiveAlarm 行为的回归测试。

Progress Table

# Sev Cat Repo File R1
1 CRIT 正确性 premium AlarmHiddenQueryFilter.java 🔴

Progress: ░░░░░░░░░░ 0/1 resolved (0%)
1 critical issue(s) still open

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants