Problem
The SandboxWatchdog sends a system.ping every 30 seconds and waits 5 seconds for a pong. If an extension (which usually runs on a single-threaded isolate) is busy serializing a massive JSON payload for a heavy SQL result, its Event Loop might be blocked for 6-8 seconds. The watchdog will interpret this as a deadlock and send a SIGKILL, crashing the extension prematurely.
Solution
Make the watchdog state-aware:
- Do not require pings/pongs when the plugin is explicitly in a BUSY state (e.g. currently processing an active RPC request).
- Or, significantly increase the pong timeout threshold (e.g., 15-20 seconds) to account for heavy serialization blocking the Dart event loop.
Reactions are currently unavailable
Problem
The SandboxWatchdog sends a system.ping every 30 seconds and waits 5 seconds for a pong. If an extension (which usually runs on a single-threaded isolate) is busy serializing a massive JSON payload for a heavy SQL result, its Event Loop might be blocked for 6-8 seconds. The watchdog will interpret this as a deadlock and send a SIGKILL, crashing the extension prematurely.
Solution
Make the watchdog state-aware: