Himanshu Maurya created AMBARI-26636:
----------------------------------------
Summary: Ambari Web React: Consolidate ServiceContext polling
loops and fix stale UI state, stuck test-connection requests
Key: AMBARI-26636
URL: https://issues.apache.org/jira/browse/AMBARI-26636
Project: Ambari
Issue Type: Story
Reporter: Himanshu Maurya
Assignee: Himanshu Maurya
Fix For: 3.1.0
Several React UI components independently fetch or poll data that is already
available elsewhere in the app, causing duplicate/redundant network traffic
against the Ambari server:
* Server clock time is fetched separately by the HDFS, HBase, and YARN config
updater hooks on every mount instead of once at app startup.
* service_check_supported is fetched via a dedicated per-service API call in
both RunAllServiceCheck and the service Actions menu, instead of being read
once from the initial stack configuration response.
* The service Actions menu fetches a service's state via its own
getServiceState call instead of reusing the state already being polled
centrally for the sidebar/dashboard.
* useStackVersion fetches and re-transforms the full stack version list on
every component mount instead of loading it once and sharing it.
* Navbar, ServiceSummary, the Alerts list page, and Alert Definition Details
each independently poll or fetch alert groups/definitions/summary on their own
timers (mostly every 30s), multiplying alert-related API calls across the page.
Proposed fix:
* Centralize server clock time, service_check_supported, and stack version
list fetching into the top-level app context (AppContext), loaded once and
shared by all consumers.
* Introduce a shared AlertsContext that loads alert groups/definitions/
summary once, keeps them current via the existing /events/alerts WebSocket
topic, and restricts polling of the unhealthy-alerts list to only the Alerts
page. All alert-consuming components (Navbar, ServiceSummary, Alerts,
AlertDefinitionDetails) read from this shared context instead of fetching
independently.
* Have CentralizedServiceStateApi derive per-service alert counts from the
shared alert data instead of issuing its own separate /alerts API call.
This reduces the number of duplicate REST calls issued by the Modern (React)
Ambari UI, particularly on pages with many services/alerts, without changing
any user-visible behavior.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]