You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by "wu-sheng (via GitHub)" <gi...@apache.org> on 2026/04/28 07:16:39 UTC

[PR] Runtime rule hot-update for MAL and LAL [skywalking]

wu-sheng opened a new pull request, #13851:
URL: https://github.com/apache/skywalking/pull/13851

   ### Runtime rule hot-update for MAL and LAL
   
   Operators can now hot-update OTEL MAL, log MAL, telegraf MAL, and LAL rule files
   without restarting OAP. A new admin REST endpoint on port 17128 (off by default)
   persists rule changes to management storage; every node in the cluster converges
   on the new content within ~30 s. Engine state, cluster Suspend/Resume, BanyanDB
   schema-watch fence, and per-backend dropTable lifecycle make the apply
   end-to-end safe across structural cutovers.
   
   - [ ] If this is non-trivial feature, paste the links/URLs to the design doc.
     - Concept doc: [docs/en/concepts-and-designs/runtime-rule-hot-update.md](docs/en/concepts-and-designs/runtime-rule-hot-update.md)
   - [x] Update the documentation to include this new feature.
     - REST API: [docs/en/setup/backend/backend-runtime-rule-api.md](docs/en/setup/backend/backend-runtime-rule-api.md)
     - Architecture: [docs/en/concepts-and-designs/runtime-rule-hot-update.md](docs/en/concepts-and-designs/runtime-rule-hot-update.md)
     - Security notice: [docs/en/security/README.md](docs/en/security/README.md)
   - [x] Tests(including UT, IT, E2E) are added to verify the new feature.
     - UTs across the new receiver plugin (engine / cluster / state / apply / rest)
     - E2E under `test/e2e-v2/cases/runtime-rule/`:
       - `mal-storage/{banyandb,elasticsearch,postgresql}` — full 10-phase lifecycle
         (CREATE → FILTER_ONLY → STRUCTURAL → DUMP → 4× ILLEGAL → SHAPE-BREAK →
         INACTIVATE → ACTIVATE → DELETE → DUMP) with a per-phase \`step\` label
       - `lal` — LAL hot-swap with a log-mal aggregation rule, swctl asserts that
         the extracted metric carries the swap-flipped step label
       - `cluster` — 2-OAP convergence over ZooKeeper
   - [ ] If it's UI related, attach the screenshots below.
   
   - [ ] If this pull request closes/resolves/fixes an existing issue, replace the issue number.
   - [x] Update the [\`CHANGES\` log](https://github.com/apache/skywalking/blob/master/docs/en/changes/changes.md).
   
   #### Highlights
   
   - **REST surface** — addOrUpdate / inactivate / delete / get / bundled / list
     / dump on port 17128, raw YAML body for writes, NDJSON / tar.gz for reads.
   - **Cluster-aware** — Suspend/Resume RPC over the cluster bus pauses dispatch
     on every peer for structural cutovers; Forward RPC routes off-main pushes
     through the cluster main; periodic scan (~30 s) self-heals missed updates,
     60 s backstop catches missed Resumes.
   - **Storage-safe** — StorageModels.remove + per-backend dropTable so a runtime
     delete drops the BanyanDB measure (and the model on every backend) without
     restarting. ES/JDBC dropTable is intentionally a no-op (append-only),
     documented per-backend.
   - **BanyanDB schema-watch fence** — schema mutations wait (best-effort,
     bounded 2 s) for every data node to apply the new revision before
     unparking dispatch. Typical case: a 200 OK marks the moment the cluster's
     data boundary moves.
   - **Override SPI** — \`RuntimeRuleOverrideResolver\` lets operator-side overrides
     thread into bundle resolution without rewriting static rule files.
   - **Bundled vs runtime overlay** — at boot, OAP merges bundled rule files with
     persisted runtime rules, so the cluster never silently regresses to
     bundled defaults after a restart.
   
   #### Security
   
   The admin port has no built-in authentication; the module is disabled by
   default. Operators MUST gateway-protect with IP allow-lists, audit every
   request, and keep the port off the cluster-external interface — the security
   notice in \`docs/en/security/README.md\` documents the duty.
   
   #### Dependency bumps
   
   Driven by the new BanyanDB schema-consistency RPCs whose generated validation
   code requires the protobuf-java 4.x runtime:
   
   - gRPC \`1.70.0\` → \`1.80.0\`
   - protobuf-java \`3.25.5\` → \`4.33.1\`
   - pgv (protoc-gen-validate) \`1.2.1\` → \`1.3.0\`
   - Netty \`4.2.10.Final\` → \`4.2.12.Final\`
   - Netty-tcnative \`2.0.75\` → \`2.0.77\`


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Runtime rule hot-update for MAL and LAL [skywalking]

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng merged PR #13851:
URL: https://github.com/apache/skywalking/pull/13851


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org