maintenance: define VictoriaMetrics label collisions - #4286
Conversation
|
Author remediation update: The collision policy is now explicit and shared by both VictoriaMetrics writers. Existing Prometheus-style job, instance, and ordinary custom labels are preserved exactly. HertzBeat-managed keys are rejected with a key-only diagnostic and no write; user labels are not silently discarded or renamed. The upgrade note identifies the four managed keys that must be renamed. Payload-continuity and no-write diagnostic tests passed (6 focused tests), and the full warehouse reactor passed (61 tests). Backend, E2E, license, and label checks are green. DOC CI failed only because an unchanged historical Gitee link returned HTTP 405; that failed job has been rerun. Maintainer review remains required. |
|
CI follow-up: the DOC CI rerun passed, including Dead Link Check and the documentation build. Backend, Maven E2E, image E2E, license, and label checks are also green; all current checks have completed successfully. |
Summary
jobandinstanceas ordinary Prometheus custom labels, preserving the exact label set and series identity used before this PR__name__,__monitor_id__,__metrics__, or__metric__Upgrade behavior
job,instance, or ordinary custom labels require no migration and continue writing the same label setValidation
job/instancevalues and silently accepted managed-key collisions./mvnw -pl hertzbeat-warehouse -Dtest=VictoriaMetricsDataStorageTest test -DskipITs -Dsurefire.failIfNoSpecifiedTests=false -DfailIfNoTests=false./mvnw -pl hertzbeat-warehouse -am test -DskipITshertzbeat-warehouseran 61 tests with 0 failures and 0 errorsgit diff --cached --checkAI assistance: used for draft implementation and test iteration.
Human validation: the serialized write payload retains existing custom
jobandinstancevalues, managed-key collisions produce a value-free diagnostic and no HTTP write, and the complete warehouse reactor passed locally.Risk notes: monitors that currently use a HertzBeat-managed custom-label key stop writing VictoriaMetrics batches until the key is renamed. This is intentional and documented so the upgrade cannot silently split or relabel an existing series.