lnd/graph/db
Elle Mouton 4486b5261d
graph/db: allow async cache population
Introduce graphCacheState, a wrapper around GraphCache that tracks its
population lifecycle (loading -> loaded) and buffers concurrent mutations
during the initial DB scan. Once population completes, buffered updates
are replayed and the cache begins serving reads.

Start() now launches populateCache in a background goroutine by default.
While the cache is loading, all graph reads fall back to the database.
The KV iterators (ForEachNodeCacheable, ForEachChannelCacheable) now
respect context cancellation so that Stop() can interrupt a long-running
population.

Tests cover: concurrent reads during population, concurrent write replay,
shutdown cancellation during load, population failure with DB fallback,
and KV iterator cancellation.
2026-03-24 09:49:23 +02:00
..
migration1 graph/db/migration1: fix defer commit/rollback in test tx executor 2026-02-25 18:52:34 +01:00
models multi: add ChanEdgePolicyFromWire constructor for ChannelEdgePolicy 2026-02-13 07:21:24 +02:00
addr.go graph/db+chanbackup: dns add encoding/decoding for persistence 2025-09-03 01:11:35 +00:00
addr_test.go graph/db: migrate tests from Fatal to require helpers 2026-02-25 11:14:55 +02:00
benchmark_test.go graph/db: version ChannelView and add v2 queries 2026-03-16 11:29:41 +02:00
channel_cache.go graph/db: version channelCache by gossip version 2026-02-20 08:46:57 +02:00
channel_cache_test.go graph/db: migrate tests from Fatal to require helpers 2026-02-25 11:14:55 +02:00
codec.go channeldb/graphdb: move outpoint ser/deser funcs to graphdb 2024-11-28 13:34:08 +02:00
errors.go graph/db: let IsZombieEdge return an error 2025-06-26 10:19:51 +02:00
graph.go graph/db: allow async cache population 2026-03-24 09:49:23 +02:00
graph_cache.go graph/db: refactor CachedEdgePolicy to use explicit boolean fields 2026-02-13 07:21:24 +02:00
graph_cache_state.go graph/db: allow async cache population 2026-03-24 09:49:23 +02:00
graph_cache_test.go graph/db: refactor CachedEdgePolicy to use explicit boolean fields 2026-02-13 07:21:24 +02:00
graph_test.go graph/db: allow async cache population 2026-03-24 09:49:23 +02:00
interfaces.go graph/db: version ChannelView and add v2 queries 2026-03-16 11:29:41 +02:00
kv_store.go graph/db: allow async cache population 2026-03-24 09:49:23 +02:00
kv_store_features_test.go graphdb: fix backwards-compat for channel edge feature deserialization 2026-02-03 09:12:04 -08:00
log.go graph/db+log: use v2 logger for graph subsystem 2025-07-29 11:34:47 +02:00
notifications.go graphdb: thread topology update context 2026-02-25 16:11:47 +02:00
options.go graph/db: allow async cache population 2026-03-24 09:49:23 +02:00
reject_cache.go graph/db: add versioned HasChannelEdge method 2026-02-13 07:21:24 +02:00
reject_cache_test.go graph/db: migrate tests from Fatal to require helpers 2026-02-25 11:14:55 +02:00
setup_test.go refactor: move graph related DB code to graph/db from channeldb 2024-11-28 13:36:13 +02:00
sql_store.go graph/db: version ChannelView and add v2 queries 2026-03-16 11:29:41 +02:00
test_kvdb.go graph/db: add helper variable for tests 2026-02-13 07:21:21 +02:00
test_postgres.go graph/db: add helper variable for tests 2026-02-13 07:21:21 +02:00
test_sqlite.go graph/db: add helper variable for tests 2026-02-13 07:21:21 +02:00