The query manager caches the in-flight promise before it settles and never removes it when the query fails. A transient error is then replayed from the cache on every retry.
// a connector that fails once, then succeeds
await coordinator.query('SELECT 1'); // rejects
await coordinator.query('SELECT 1'); // rejects with the same error, connector never called again
- Likelihood: any transient database or network error on a cached query.
- Severity: the query keeps failing until the entry expires, three hours by default.
Today the entry-count bound eventually rotates such entries out. #1171 replaces that bound with a byte budget, and a failed entry is charged zero bytes, so nothing evicts it.
The query manager caches the in-flight promise before it settles and never removes it when the query fails. A transient error is then replayed from the cache on every retry.
Today the entry-count bound eventually rotates such entries out. #1171 replaces that bound with a byte budget, and a failed entry is charged zero bytes, so nothing evicts it.