[
https://issues.apache.org/jira/browse/AMBARI-26636?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Himanshu Maurya resolved AMBARI-26636.
--------------------------------------
Resolution: Fixed
> 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
> Priority: Major
> Fix For: 3.1.0
>
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> h2. Summary
> Follow-up to AMBARI-26635. Consolidates the remaining duplicated polling in
> {{ServiceContext}} (dashboard/services/hosts) into a single centralized
> fetch, and fixes several bugs where stale UI state or duplicated polling
> caused incorrect behavior or stuck backend requests.
> h2. Performance improvements
> * {{CachedServiceApi}} ran its own self-contained 30-second cache and
> independent polling loop, separate from {{{}ServiceContext{}}}'s own polling.
> Removed the redundant cache/loop; the API now always fetches live and
> notifies subscribers directly, eliminating a class of stale-cache bugs.
> * {{ServiceContext}} was running *three overlapping 5-second polling loops*
> against the same {{{}/services{}}}/{{{}/components{}}} endpoints (one inside
> {{{}CachedServiceApi{}}}, one hand-rolled timeout loop for service
> states/alerts, and one via {{usePolling}} for maintenance/stale-config data).
> Consolidated into a single poll that drives all derived state, cutting
> duplicate backend load roughly 3x on the dashboard and hosts pages.
> * Added WebSocket-driven instant state merges for {{/events/hostcomponents}}
> and {{/events/services}} so component/service state updates apply immediately
> instead of waiting for the next 5-second poll.
> * {{{}HostsList{}}}, the Hosts detail page, and {{RestartWarning}} each
> independently re-fetched the same {{/components}} endpoint on their own
> timers; they now reuse the centralized polled data from
> {{{}ServiceContext{}}}, removing 3 more duplicate pollers.
> * Several per-service config-updater hooks (HDFS, HBase, Pinot, Ranger,
> Spark3, Trino, YARN) re-rendered and cleared their component data even when a
> poll cycle returned an empty component list; they now skip the update in that
> case, preventing a UI flicker/reset on every empty response.
> * Added a session-level cache for the Quicklinks stack-metadata endpoint,
> which was being re-fetched on every service switch even though the underlying
> config rarely changes.
> h2. Bug fixes
> * Hosts list page: the host status tooltip listed the wrong "down"
> components because it read a field ({{{}HostRoles.state{}}}) that doesn't
> exist on the mapped host-component shape; corrected to read
> {{{}workStatus{}}}.
> * Ambari Views ({{{}/views/...{}}} pages) had an extra 80px bottom padding
> inherited from the general dashboard layout, causing an unnecessary
> gap/scroll area under the view iframe; padding is now suppressed specifically
> on Views routes.
> * The "Test DB Connection" action could route through the cluster-less
> action endpoint ({{{}POST /requests{}}}) when a new service was being added
> to an already-installed cluster (not yet "installed" itself). That produced a
> request with {{clusterID=-1}} that the backend {{ActionScheduler}} could
> never resolve, leaving it stuck in {{PENDING}} forever and blocking all
> subsequent background requests. The routing decision now keys off cluster
> existence rather than service-install state, and an empty resolved host now
> fails the check immediately instead of posting a request that the backend
> would reject.
> h2. Impact
> Further reduces redundant polling load on the Ambari server from the Modern
> UI (dashboard, hosts, and service pages) beyond AMBARI-26635, and fixes a
> request-starvation bug that could stall all background operations until
> server restart.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]