Skip to content

Respect maximum_page_limit in batch list endpoints - #73409

Open
Eason09053360 wants to merge 1 commit into
apache:mainfrom
Eason09053360:fix-batch-endpoints-max-page-limit
Open

Eason09053360 wants to merge 1 commit into
apache:mainfrom
Eason09053360:fix-batch-endpoints-max-page-limit

Conversation

@Eason09053360

Copy link
Copy Markdown
Contributor

Why

[api] maximum_page_limit is documented as capping any limit a client asks for, but was only enforced inside LimitFilter.depends, on the query-parameter path. The two batch endpoints (POST /dags/~/dagRuns/list, POST /dags/~/dagRuns/~/taskInstances/list) read their page size from a request body, so FastAPI never invokes that dependency — an authenticated client could ask them for the whole table while the equivalent GET endpoints capped the same request. The cap arrived in #60989, which missed these two call sites.

What

  • The clamp moves into a new LimitFilter.clamp_to_maximum in common/parameters/base.py; depends delegates to it, so both entry points share one definition.
  • Both batch routes build their LimitFilter through it.
  • A test per endpoint asserts a clamped page while total_entries reports the larger unclamped count; both fail without the fix.

Was generative AI tooling used to co-author this PR?
  • Yes — Claude Code (Opus 5)

Generated-by: Claude Code (Opus 5) following the guidelines

The `[api] maximum_page_limit` cap is documented as applying to any limit a
client asks for, but it was only enforced on the query-parameter path, inside
`LimitFilter.depends`. The two batch endpoints read their page size from a
request body, so FastAPI never invokes that dependency and the cap was never
applied — an authenticated client could ask these two endpoints for the whole
table while the equivalent GET endpoints capped the same request.

Giving the clamp its own name lets both entry points share one definition, so
they cannot disagree about the setting again.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:API Airflow's REST/HTTP API

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant