Package-level declarations
Types
The one rule of closing what an owner opened: in reverse order of opening, every one even when another fails to close, the first failure thrown once all were tried with the later ones suppressed by it. The host closes the stores it opened by it, and a store the ports it opened.
How the framework manages the structures it owns: a store's tables, collections and indexes (the logs, snapshots, timers, reservations, leases, checkpoints and the failure ledger, with their format records), the query indexes the Manifest declares, the Kafka topics and the ClickHouse tables. One setting, wow.ddl, overridden by wow.stores.<store>.ddl, wow.kafka.ddl and wow.clickhouse.ddl; each mode means the same everywhere.
A store is up but already runs as much as it takes, and did not admit this call: a query store's bulkhead, a server out of connections or rejecting work (PostgreSQL's 53300, Elasticsearch's 429, ClickHouse's TOO_MANY_SIMULTANEOUS_QUERIES). The same call may pass once the load drops, so it is retried with backoff, never right away: a subscription throttles its partition and retries the entry within its backpressure budget, without pausing the partition.
A store refused a value as it is, for good: a value it cannot store (a \u0000 PostgreSQL's jsonb does not take, a number out of range), a document beyond its size limit, a document Elasticsearch cannot parse. Writing it again fails the same way, so it is never retried: a subscription parks the aggregate at once.
A store stopped a statement at the time limit its caller gave it (timeout): PostgreSQL's statement_timeout, MongoDB's maxTimeMS, ClickHouse's max_execution_time. The store is up; the statement asked too much of it, so running it again as it is fails the same way.
A store a port called could not be reached, or did not answer in time: a transient technical failure, such as a connection refused, reset or closed by a restarting server, or a connection pool or socket that timed out. The same call may succeed once the store is back.
The dispatcher a backend runs its blocking driver calls on (JDBC, the MongoDB and Kafka clients): a virtual thread per call, one executor for every backend of the node, so a backend need not start its own.