Skip to content

Refs #39253 - perf 3/4 - Consolidate host data into the API endpoint - #1049

Draft
adamruzicka wants to merge 5 commits into
theforeman:masterfrom
adamruzicka:perf-part3
Draft

Refs #39253 - perf 3/4 - Consolidate host data into the API endpoint#1049
adamruzicka wants to merge 5 commits into
theforeman:masterfrom
adamruzicka:perf-part3

Conversation

@adamruzicka

Copy link
Copy Markdown
Contributor

Follows #1048

@adamruzicka adamruzicka changed the title Refs #39253 - Consolidate host data into the API endpoint Refs #39253 - perf 3/4 - Consolidate host data into the API endpoint Jul 27, 2026
MariaAga and others added 2 commits July 27, 2026 14:57
The host table previously relied on an accidental refresh cascade:
parent polling updated Redux state, which changed callback identities,
which triggered useEffect, which re-fetched hosts. This adds an
explicit setTimeout-based polling chain (5s interval) that stops
when the job finishes or on API error, and restarts when filters
change.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace withInterval/setInterval polling with recursive setTimeout
chains for job invocation and template invocation detail pages. This
prevents request pileup by waiting for the previous response before
scheduling the next poll.

- Remove updateJob action (stored under unused UPDATE_JOB key)
- Remove getTask action, expose cancellable via task node in RABL
- Add extractErrorMessage helper consolidating duplicated error handling
- Fix sprintf injection in error toast messages
- Stop template invocation polling on finished/error states

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@adamruzicka
adamruzicka force-pushed the perf-part3 branch 4 times, most recently from 1021504 to fdab039 Compare July 29, 2026 09:50
adamruzicka and others added 2 commits July 29, 2026 12:19
Adopt the cancel-first pattern from JobInvocationHostTable to prevent
overlapping polls when getJobInvocation is called multiple times.

This ensures that any pending timeout is cancelled before starting a
new polling cycle, preventing race conditions and duplicate API calls.
Merge per-host task and permissions data into the paginated
/api/v2/job_invocations/:id/hosts endpoint, eliminating the
separate list_jobs_hosts action that fetched ALL hosts unpaginated.

The API endpoint now accepts include_permissions parameter to
optionally return task cancellable state and per-host permissions,
replacing the data previously served by the non-API endpoint.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@adamlazik1

Copy link
Copy Markdown
Contributor

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants