Single-flight: concurrent callers of one key share one computation.
The first caller for a key registers a promise and runs the compute fn; every caller that arrives while it is in flight derefs that promise instead of computing. Once the computation settles the key is released, so the next caller computes again: this deduplicates in-flight work, it does not cache results.
Copied from hive-mcp.tools.catchup.bundle-cache/single-flight (the same shape as hive-cache.core/with-single-flight, without event emission) so that both can delegate here.
Single-flight: concurrent callers of one key share one computation. The first caller for a key registers a promise and runs the compute fn; every caller that arrives while it is in flight derefs that promise instead of computing. Once the computation settles the key is released, so the next caller computes again: this deduplicates in-flight work, it does not cache results. Copied from hive-mcp.tools.catchup.bundle-cache/single-flight (the same shape as hive-cache.core/with-single-flight, without event emission) so that both can delegate here.
(in-flight)(in-flight reg)The keys currently being computed in reg (the shared registry when
called without one).
The keys currently being computed in `reg` (the shared registry when called without one).
(registry)A fresh in-flight registry: key -> promise of the pending result.
A fresh in-flight registry: key -> promise of the pending result.
(run reg key compute-fn)Run compute-fn for key in reg unless a computation for key is
already in flight, in which case wait for it and return its result.
A failure is re-thrown to the computing caller as itself and surfaced to
waiters as an ex-info {:key key} whose cause is the failure.
Run `compute-fn` for `key` in `reg` unless a computation for `key` is
already in flight, in which case wait for it and return its result.
A failure is re-thrown to the computing caller as itself and surfaced to
waiters as an ex-info {:key key} whose cause is the failure.(single-flight key compute-fn)run against the namespace's shared registry.
`run` against the namespace's shared registry.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |