Skip to content

fix: bound the standby crawler set - #136

Draft
nikitachapovskii-dev wants to merge 1 commit into
fix/crawler-cache-keyfrom
fix/bound-standby-crawlers
Draft

fix: bound the standby crawler set#136
nikitachapovskii-dev wants to merge 1 commit into
fix/crawler-cache-keyfrom
fix/bound-standby-crawlers

Conversation

@nikitachapovskii-dev

@nikitachapovskii-dev nikitachapovskii-dev commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

Finishes #60. Stacked on fix/crawler-cache-key (#135)

That PR made the cache key stable. The crawler set was still unbounded: requestTimeoutSecs, maxRequestRetries, desiredConcurrency and proxyConfiguration all reach a crawler constructor, and nothing evicts crawlers, so a caller varying them can exhaust the run's memory.

Settings now travel on the request where Crawlee supports it, and are startup-only where it doesn't:

maxRequestRetries / serpMaxRetries → request.maxRetries.
requestTimeoutSecs → per-request gotoOptions.timeout, on top of the response timeout it already drove.
desiredConcurrency and proxyConfiguration are no longer accepted per request. They come from the Actor input; query parameters are ignored with a warning. Crawlee rewrites concurrency on its own schedule, and a proxy can only be chosen when a crawler is constructed. Input schemas and both OpenAPI files updated.
Same root, smaller: the cache holds the pending crawler so concurrent requests can't orphan one; a crawler that fails to run is logged and evicted instead of cached dead; validateRange rounds non-integers and rejects NaN; desiredConcurrency had minimum: 0, which AutoscaledPool rejects.

Verified end to end: 10 different parameter combinations serve from 3 crawlers, where the previous key produced 9.

@nikitachapovskii-dev nikitachapovskii-dev self-assigned this Aug 7, 2026
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.

2 participants