← All stories
● Covered by 1 source · 1 reportMedium impact1 neutral

Cloudflare's celld uses deterministic simulation testing to find and reproduce bugs

🔄 Updated 27d ago
New to BrevFeed? We gather this story from every outlet covering it into one summary — ranked by real-world impact, not just the latest headline — so you never miss what matters. What is BrevFeed? →

Key points

  • celld is a runtime for Cloudflare Workers and Durable Objects.
  • Deterministic simulation testing (DST) is used to find and reproduce bugs.
  • DST controls event order, task execution, and storage responses.
  • The simulator uses random choices within configured limits to explore scenarios.
  • A seed ensures reproducibility of test runs.

Introducing celld and its Challenges

Cloudflare is building celld, a runtime designed for Cloudflare Workers and Durable Objects applications, intended to run on local machines. celld operates as a distributed system, which inherently presents challenges in achieving reliability due to potential reliance on unstated assumptions, as highlighted by Peter Deutsch's "The Eight Fallacies of Distributed Computing."

Bugs in distributed systems often depend on specific sequences of events like message delays, failed writes, or node restarts. These sequences can vary between test runs, making bug reproduction difficult. To address this, Cloudflare employs deterministic simulation testing (DST).

How Deterministic Simulation Testing Works

Deterministic simulation testing (DST) runs celld's production code within a simulator-controlled environment. The simulator manages the order of events, such as incoming requests, completed storage operations, and timer firings, ensuring that the same event-handling code used in production is tested under controlled conditions.

The simulator also controls the execution of asynchronous tasks and the behavior of object storage, including delaying or failing write operations. It can advance simulated time independently of real time, which is crucial for testing time-dependent behaviors like retries and alarms in conjunction with other events.

Reproducibility and Bug Discovery

Within configured limits, the simulator uses random choices to generate requests, select the next event to run, decide on storage operation outcomes, and introduce faults. A key aspect of DST is the use of a seed for its random-number generator. This seed ensures that with identical code, settings, and seed, the same sequence of events, intermediate states, and results are produced.

Although still under development and not publicly available, the DST system has already identified previously unknown bugs within celld. This capability allows developers to consistently reproduce failures, investigate their root causes, and verify the effectiveness of proposed fixes.

✨ This summary was generated by AI from the outlets' reporting listed below. It is not independently verified and may contain errors — check the original sources. How BrevFeed works →

The daily brief

One email each morning: the day's tech stories, clustered across outlets and summarized. No account needed.

One email a day. Unsubscribe in one click, any time.

Today's brief

Spend a few minutes, get the whole day. Every topic's top stories in one hands-free rundown — listen, watch, or read the transcript.

~4 min · 3 stories · Nov 07

▶ Play today's brief Listen on Spotify

New every morning, and the back catalogue is archived by date.

Primary sources

GitHub denoland/celld

Reporting from

Cloudflare is developing celld, a runtime for Workers and Durable Objects, and uses deterministic simulation testing (DST) to ensure its reliability. DST helps reproduce complex distributed system bugs by controlling event order, asynchronous tasks, and storage responses, allowing for consistent bug investigation and verification of fixes.