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

   ## Why
   
   Operational tuning — how hard the BFF fans metric queries out to OAP, and 
the caps that protect storage — was scattered in two wrong places: **hardcoded 
constants** in the query routes, and a **`pipeline` block inside the 3D 
dashboard template** (which is published to OAP, editable in the admin UI, and 
travels with export/import — none of which fits per-deployment fan-out tuning). 
Operators had no single, documented place to tune it, and couldn't tune it 
per-instance at all.
   
   This consolidates all of it into one operator-owned, hot-reloaded 
`performance` section in `horizon.yaml`, next to the existing 
`query.landingServiceCap` / `oap.timeoutMs` knobs.
   
   ## What
   
   **New `performance` section** (defaults equal today's built-ins, so it's 
optional and behavior-preserving):
   - `performance.bulk` — per-route bulk (request) size + concurrency for the 
**topology / 3D-map / landing / dashboard** OAP fan-outs.
   - `performance.limits` — the **service-map render valve** 
(`topologyMaxNodes` 5000 / `topologyMaxEdges` 15000) and per-request **record 
caps** (`maxPageSize.{traces,logs,browserLogs}` = 100). Every value clamps to a 
hard ceiling (config can lower, never exceed).
   
   **3D pipeline relocation** — the 3D map's metric fan-out moved out of the 
OAP-published template into `performance.bulk.infra3d`. The BFF injects it into 
the config response, so the UI is unchanged; a stale template still carrying 
the old `pipeline` block is **accept-and-ignored** (no breakage on upgrade).
   
   **Unified page-size pickers** — Traces, Logs, and Browser Logs now share a 
`20 / 30 / 50 / 100` dropdown. Browser Logs **gains a picker it never had** (it 
was a fixed 100); the trace cap drops `200 → 100` to match the dropdown. Each 
picker's max equals the server-side cap.
   
   **Memory** — the image sets a default `NODE_OPTIONS=--max-old-space-size`, 
with docs on sizing the Node heap against the in-memory source-map budget. 
(It's a process flag, not a config field — V8 reads it before `horizon.yaml` 
loads.)
   
   **Drift guard** — a new test (`schema.test.ts`) asserts 
`configSchema.parse({})` succeeds (every field has a default) **and** that 
`horizon.example.yaml` is byte-identical to the schema defaults — so the 
example can't silently drift again. (It already had: the rbac roles were 
missing `infra-3d:read`; fixed here.)
   
   ## Validation
   
   - BFF + UI **type-check**, **lint**, **124 BFF + 113 UI tests** (+the new 
drift test), both **builds**, **license-eye** 0 invalid.
   - Behavior-preserving by construction (defaults == prior literals) and 
enforced by the drift test.
   - **Live demo-OAP smoke**: topology renders 6 nodes / 5 calls (fan-out + 
caps path) and traces returns through the new `maxPageSize` path — unchanged.
   
   ## Stays put (deliberately)
   
   The **alarm page-setup** (pinned layers / default window / overview fetch 
cap), and the overview/layer templates — those are *authored, admin-editable* 
dashboard content (they have a structured editor + Save to OAP), not 
operational tuning, so they correctly remain templates.


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to