Changelog

Workspace databases ride out dropped connections

Now and then a request from an app or workflow to a workspace database was lost on the way. A network connection that had sat idle was dropped without notice, and the next request on it failed. Reads were tried again, but a write was never sent twice, so an app showed that it couldn't reach its database and a workflow step could fail. A request that vanished entirely waited out the full 30 seconds before giving up. Now a request the connection lost is sent again within seconds on a new connection, and a write lands exactly once however many times it is sent.

How it works

  • Every request carries an id. A query or batch keeps one id across all its attempts. The database saves a write's result under that id together with the write itself, so a resent write is answered with its first result instead of running again.
  • A silent request gets a second copy after 2 seconds. If a request has no reply within 2 seconds, we send a copy on a new connection while the first keeps going, and use whichever answers first. A slow query is never cut off, and a write still lands once.
  • Refusals stay refusals. A write the database refused, like a duplicate key, gets the same refusal when it is resent, even if it would succeed by then.

This builds on how our outages wait, not fail.

Your first specialist starts here.

Give it one job. Build the workflows, apps, and skills to get it done.