Files
Noa afe169ac4a Fix the issues with scheduling procedures (#3816)
# Description of Changes

This reapplies the patch from #3704, and fixes the issues that were
causing it to deadlock.

The reason it was deadlocking was that it allowed for the following
sequence of events:
* `SchedulerActor::handle_queued()` begins mutable tx
* `ModuleHost::disconnect_client()` submits call to `call_reducer(tx:
None)`
* scheduler submits call to `call_reducer(tx: Some)`
* `WasmModuleInstance::disconnect_client` now has to try to take tx
lock, but the scheduler's call_reducer already holds it and is behind it
in the queue

So, I moved most of the logic from `handle_queued` back to being
executed in the module worker thread, but kept the code in
`scheduler.rs` so that it can all be reasoned about locally.

Fixes #3645. Should I uncomment the implementation of
`ExportFunctionForScheduledTable for F: Procedure` now?

# Expected complexity level and risk

2 - there's a chance that this patch hasn't fully fixed the deadlock
issue from #3704, but I'm quite confident.

# Testing

- [x] Manually verified that deadlock no longer occurs - previously,
`while true; do python -m smoketests schedule_reducer -k
test_scheduled_table_subscription; done` would freeze up in only 2 or 3
iterations, but now it can run for 10 minutes without issues.
2025-12-05 22:27:30 +00:00
..
2025-11-21 19:39:21 +00:00
2024-10-31 22:34:26 +00:00
2025-08-12 18:20:58 +00:00
2023-12-21 06:08:41 -06:00
2025-12-02 22:45:29 +00:00
2024-08-28 11:13:33 -07:00

SpacetimeDB C# SDK

Overview

This repository contains the C# and Unity client SDKs for SpacetimeDB. These SDKs contain all the tools you need to build native clients for SpacetimeDB modules using C#.

Documentation

The Unity SDK uses the same code as the C# SDK. You can find the documentation for the C# SDK in the C# SDK Reference. For a guided tutorial, see the C# SDK Quickstart.

There is also a comprehensive Unity tutorial/demo available:

Internal developer documentation

See DEVELOP.md.