googleapis / googleapis/google-cloud-rust
Discovery LRO poller ignores on_in_progress, polling running operations forever
- Dominant language
- Rust
- Stars
- 955
- Forks
- 144
- Avg merge
- 1d 5h
- Merged PRs (30d)
- 279
Description
Unconfirmed. This is the result of a search with Claude, may be a false positive.
In `src/lro/src/internal/discovery.rs`, `handle_poll` handles the polling outcome for Discovery-based long-running operations:
https://github.com/googleapis/google-cloud-rust/blob/f02b42c2ac5720334cd2b5335824bd4166264527/src/lro/src/internal/discovery.rs#L215-L232
While the AIP-151 poller in `src/lro/src/details.rs:104-109` invokes `error_policy.on_in_progress(state, &operation_name)` whenever an operation is `InProgress`, the Discovery poller only invokes `error_policy.on_error()` on `Err`.
Because `on_in_progress` is never called, time limits and attempt limits configured on the polling policy (e.g. via `.with_time_limit(...)` or `.with_attempt_limit(...)`) are never evaluated for operations that remain in the `RUNNING` state, causing the client to poll indefinitely.
Contributor guide
Research direction
Start in src/lro/src/internal/discovery.rs at handle_poll and compare its InProgress handling with src/lro/src/details.rs:104-109, where on_in_progress is invoked. Verify the behavior for a Discovery operation that remains RUNNING and confirm that configured time and attempt limits are evaluated before considering the issue done.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend-api-design
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- Half a day
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 75/100