Skip to content

Fix "Retry all" on pending retries requesting an empty date range - #3142

Merged
johnsimons merged 1 commit into
masterfrom
john/pending_date_range
Oct 1, 2026
Merged

johnsimons merged 1 commit into
masterfrom
john/pending_date_range

Conversation

@johnsimons

Copy link
Copy Markdown
Member

"Retry all" on the Pending Retries view sent both from and to as new Date(0), so ServiceControl received an empty range in 1970 and retried nothing, while the UI still marked every row as submitted for retry. The bug goes back to the Vue migration (#1367): the AngularJS service sent epoch to now, and the migration transcribed the to as epoch too. retryAll now recomputes the date range from the selected period at click time and sends that, so the request also honors the period filter the same way the list does, which matches the old AngularJS behaviour.

Testing this through the UI surfaced a second bug. #2685 exposed selectedQueue from the store as shallowReadonly, but the queue dropdown writes to it through a storeToRefs v-model. Vue silently drops writes to a readonly ref, so selecting a queue never reached the store: the list never filtered by queue and "Retry all" always showed the "Select a queue first" dialog. Removing the wrapper makes the dropdown work again.

New driver tests in retrying-all-pending-retries.spec.ts cover the flow end to end: clicking Retry all without a queue shows the notice and sends no request, with a queue selected the request carries the queue address and the displayed period range up to now, and picking "Retried in the last 2 Hours" narrows the range to two hours. Since they drive the real dropdown, they will also fail if selectedQueue ever becomes readonly again.

Reviewer Checklist

  • Components are broken down into sensible and maintainable sub-components.
  • Styles are scoped to the component using it. If multiple components need to share CSS, then a .css file is created containing the shared CSS and imported into component scoped style sections.
  • Naming is consistent with existing code, and adequately describes the component or function being introduced
  • Only functions utilizing Vue state or lifecycle hooks are named as composables (i.e. starting with 'use');
  • No module-level state is being introduced. If so, request the PR author to move the state to the corresponding Pinia store.

Fixes a bug where `retryAll` was sending epoch zero as the date range instead of the actual selected period. Also removes `shallowReadonly` from `selectedQueue` to allow it to be mutated from outside the store where needed.
@johnsimons johnsimons added the Bug Bug label Oct 1, 2026
@johnsimons
johnsimons merged commit f7c7e1a into master Oct 1, 2026
5 checks passed
@johnsimons
johnsimons deleted the john/pending_date_range branch October 1, 2026 00:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bug Bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants