GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — python: retry ingress POST past transient pipeline unreachability by blp · Pull Request #6851 · feldera/feldera

Conversation

@blp

@blp blp commented Aug 12, 2026

Copy link
Copy Markdown
Member

Right after start() reports "running", the pipeline pod can briefly be unreachable through the k8s service (control plane confirms readiness once, but nothing re-checks it before the SDK's next request). This raced with cause_error_and_wait_for_stopped's initial ingest POST, which uses the no-retry http_request test helper, and flaked test_pipeline_error_dismissal in CI with a 503 PipelineInteractionUnreachable.

This failure was observed in the CI run
https://github.com/feldera/cloud/actions/runs/31617894273/job/94194277123

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@blp
blp requested a review from mihaibudiu August 12, 2026 18:18
@blp blp self-assigned this Aug 12, 2026
@blp blp added bug Something isn't working CI/CD python Pull requests that update python code labels Aug 12, 2026
mihaibudiu
mihaibudiu approved these changes Aug 12, 2026
View reviewed changes

@mihaibudiu mihaibudiu left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this the only test that may have this problem?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@blp

blp commented Aug 12, 2026

Copy link
Copy Markdown
Member Author

Is this the only test that may have this problem?

No. Good catch.

I'll follow up with a more comprehensive version.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@blp
[python] wait for pipeline reachability past the post-start unreachab…
5d950b9
…le race

start_pipeline()/resume_pipeline()/start_pipeline_as_paused() (wait=True)
only wait for the control plane's deployment_status to report "running";
the pod itself can still be briefly unreachable through its k8s service
afterward (the control plane's own readiness probe is a point-in-time
check, not re-verified before the next caller's request). Calls through
the SDK client already retry transient 503s, but tests/platform/helper.py's
raw REST helpers are deliberately no-retry (other tests rely on that to see
raw status codes), so they're exposed whenever they're the first pod-facing
call after a start/resume.

Add wait_for_pipeline_reachable(), which polls /stats until it stops
returning 503 PipelineInteractionUnreachable, and call it at each of the 25
sites across 7 test files where that pattern occurs. test_pipeline_error.py
(the one that actually flaked in CI) now uses the shared helper instead of
its original bespoke retry loop.

Signed-off-by: Ben Pfaff <[email protected]>
@blp
blp force-pushed the retry-pipeline-error-test branch from 95126a4 to 5d950b9 Compare August 12, 2026 20:58
@blp

blp commented Aug 12, 2026

Copy link
Copy Markdown
Member Author

This new version is intended to catch all the cases where the tests started or resumed a pipeline and then immediately did a raw request that doesn't itself retry on a 503. Take another look @mihaibudiu ?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

mihaibudiu
mihaibudiu approved these changes Aug 12, 2026
View reviewed changes

@mihaibudiu mihaibudiu left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a dynamic check we could add to catch this if it's introduced in new tests?
"You may have forgotten to call 'wait_for_pipeline_reachable'"?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread python/tests/platform/helper.py

- Calls made through the `feldera.Pipeline`/`FelderaClient` SDK (e.g.
`pipeline.input_json`, `pipeline.query`) already retry transient 503s
themselves, so the race resolves on its own.

@mihaibudiu mihaibudiu Aug 12, 2026

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no need to mention the race here

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@blp

blp commented Aug 12, 2026

Copy link
Copy Markdown
Member Author

Is there a dynamic check we could add to catch this if it's introduced in new tests? "You may have forgotten to call 'wait_for_pipeline_reachable'"?

One approach I considered was to just do it every time inside the functions like start_pipeline_as_paused(). The downside, if there could be said to be one, is that we wouldn't get as much testing of the ability of the usual functions that do know to retry 503 failures.

Any thoughts?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@mihaibudiu

mihaibudiu commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

I was thinking to have a tiny state machine someplace which said "I have checked on startup for 503". And if you check for another error while not in this state you get a failure. But this is clearly an improvement, and maybe people will just copy-paste this from now on.

blp reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@blp
blp added this pull request to the merge queue Aug 12, 2026
Merged via the queue into main with commit 6c5a1c3 Aug 12, 2026
1 check passed

Uh oh!

There was an error while loading. Please reload this page.

@blp
blp deleted the retry-pipeline-error-test branch August 12, 2026 22:42
@blp blp mentioned this pull request Nov 6, 2026
Define which layer retries each kind of request failure #7879
Open
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@mihaibudiu mihaibudiu mihaibudiu approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@blp blp

Labels

bug Something isn't working CI/CD python Pull requests that update python code

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@blp @mihaibudiu
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.