feat(cloudflare): add Cloudflare Workflows support#304
Conversation
… if all configs are set up manually
…ge is needed and the wrappers have to work
…, at this point the other benchmarks may be translated to nodejs
…and 000 to nodejs. fixed support for nosql in wrapper and sebs. fixed durable objects implementation for sebs
When running the handler as a thread and then awaiting said thread (asyncio.to_thread), we can run asyncio.run() in the subsequent call stack.
…er orchestrator, worker orchestrator proxy for r2 and durable objects to be used in container
…d Parallel states
…esult and enhance async_invoke to parse execution result
- Enhance CloudflareContainersDeployment to support additional benchmarks. - Introduce CloudflareWorkflowGenerator for generating TypeScript code from FSM definitions. - Create a new wrangler-workflow.toml template for Cloudflare Workflows. - Implement WorkflowLibraryTrigger for invoking Cloudflare Workflows via HTTP. - Add CloudflareWorkflow class to represent deployed workflows with dispatcher and orchestrator. - Create CloudflareTestSequenceWorkflows for testing workflow benchmarks on Cloudflare.
…te support - Refactor CloudflareWorkflowGenerator to support concurrent execution of Map and Parallel states. - Introduce ItemWorkflow for processing Map chunks and FanInCoordinator for aggregating results. - Update dispatch logic to handle chunked processing and error reporting. - Emit proxy handlers for NoSQL and R2 operations in generated code. - Modify wrangler-workflow.toml template to include new ItemWorkflow and Durable Object bindings.
Add an Azure workflow HTTP trigger that exposes Durable Functions as SeBS library-style workflow invocations by starting the orchestration, polling the status URL, and returning the completed workflow output. Fix Azure workflow packaging/runtime behavior: - preserve benchmark-relative imports by importing activity modules as packages - add wrapper-level User-Agent handling for outbound requests - query the correct workflow HTTP entrypoint after publish - avoid duplicate HTTP trigger handling - quote Azure app settings and restart apps after env updates - support cached workflow trigger deserialization Fix workflow result handling for nested Map states inside Parallel branches so genome workflow outputs preserve the expected branch payload shape. Run high-CPU genome workflows on an EP3 Linux Premium plan with distinct app names, and limit genome activity concurrency in host.json to avoid shared /tmp collisions in benchmark code. Fix Azure blob range reads to use inclusive end-byte semantics, matching the benchmark expectations, and improve regression failure diagnostics so invocation exceptions are written to result JSON instead of being masked by harness errors.
…chmarks-data to the appropriate branch "workflows"
|
Important Review skippedToo many files! This PR contains 206 files, which is 56 over the limit of 150. To get a review, narrow the scope: Upgrade to a paid plan to raise the limit. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (206)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
- move Redis measurement config to provider runtime env/config - propagate workflow request ids into collected measurements - collect workflow measurements during regression runs - avoid masking workflow invocation failures in regression output - refresh cached workflow runtime configuration for measurement envs
Implement Cloudflare Workflows deployment, generation, invocation, and
regression support for the workflow benchmark suite.
Add a TypeScript workflow generator that translates SeBS FSM definitions into
Cloudflare Workflows, including Map and Parallel fan-out via child workflows,
Durable Object fan-in coordination, dispatcher container calls, retry handling,
and R2-backed storage support.
Add Cloudflare workflow packaging and deployment logic, wrangler workflow
templates, workflow triggers, and workflow resource/config handling for
container-based execution. Extend container readiness handling with
max_instances-aware health checks and configurable chunk_size/max_instances
settings.
Update Cloudflare Python/Node wrappers and regression selection so supported
workflow benchmarks can run on Cloudflare containers.
Regression: Cloudflare Python 3.12 workflow suite passes 13/13.