apache / apache/cloudstack

False positive in UsageSanityChecker

オープン
#13,446 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
component:usage-server
主要言語
Java
スター
3.1k
フォーク
1.4k
平均マージ
6日 19時間
マージ済み PR(30日)
32

説明

The bug we're hitting is in a different subsystem: the Usage Sanity Check (UsageSanityChecker.java). Specifically the "snapshot after removed" check, whose query is roughly:


SELECT count(*)

FROM cloud_usage.cloud_usage cu
JOIN cloud.snapshots s ON cu.usage_id = s.id
WHERE cu.usage_type = 9
AND cu.start_date > s.removed;

i.e. usage records in cloud_usage.cloud_usage with a start_date AFTER the snapshot was already soft-deleted in cloud.snapshots. This drives the Usage Sanity Check failed mailer and feeds our Prometheus exporter.


On the running 4.22.1.0 (which includes 83ce006) we still see:

check | count
-- | --
snapshot_after_removed | 160
volume_after_removed | 36
template_after_removed | 0
vm_after_destroyed | 0

_Originally posted by @PPisz in https://github.com/apache/cloudstack/discussions/13398#discussioncomment-17321658_

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

UsageSanityChecker.java から始めて、「snapshot after removed」チェックと、cloud_usage.cloud_usage および cloud.snapshots に対するその SQL クエリを追跡します。実行中の 4.22.1.0 インスタンスが 160 件のレコードを報告する理由を調査し、その後、Usage Sanity Check メーラーや Prometheus エクスポーターの出力を壊すことなく、False Positive の件数が解消されていることを確認します。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java, sql
領域
backend, cloud, databases, observability
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
説明が足りない
初心者へのやさしさ
38/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。