Skip to content

Fix concurrent request limiter charging non long-poll requests#11125

Open
simvlad wants to merge 1 commit into
temporalio:mainfrom
simvlad:fix-concurrent-longpoll-gate
Open

Fix concurrent request limiter charging non long-poll requests#11125
simvlad wants to merge 1 commit into
temporalio:mainfrom
simvlad:fix-concurrent-longpoll-gate

Conversation

@simvlad

@simvlad simvlad commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

What changed?

ConcurrentRequestLimitInterceptor.Allow only exempted non-long-poll GetWorkflowExecutionHistory from the long-running concurrency quota. DescribeActivityExecution and DescribeNexusOperationExecution are also long-running only when their long_poll_token is set, but every call (including plain point-reads) was charged a token. Now all three are gated on their long-poll parameter.

Why?

Plain DescribeActivityExecution / DescribeNexusOperationExecution calls could be rejected with "namespace concurrent poller limit exceeded" under load despite not being long-running, and could starve real long-poll capacity.

How did you test it?

  • built
  • run locally and tested manually
  • covered by existing tests
  • added new unit test(s)
  • added new functional test(s)

Potential risks

Seems safe, because the original intent is to charge only long polls

@simvlad
simvlad requested review from a team as code owners July 17, 2026 18:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant