lnd/channeldb
Andras Banki-Horvath 3df216f6c3
channeldb: avoid locking the graph cache while iterating channels
It may happen that we do pathfinding while also attempt to change the
graph. In this case changing the database, channel state, graph while
reading from the same sources may create deadlocks. To resolve this we
change locking policy in the graph cache when pathfinding.
2021-11-08 12:40:14 +01:00
..
migration kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
migration12 kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
migration13 kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
migration16 kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
migration20 kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
migration21 kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
migration23 channeldb: migration to flatten the htlc attempts bucket 2021-09-07 10:46:49 +02:00
migration24 channeldb/migration: remove old forwarding packages 2021-09-23 13:22:34 +08:00
migration_01_to_11 kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
migtest kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
addr_test.go channeldb/addr_test: add tests for invalid onion addresses 2019-01-17 14:16:15 +01:00
addr.go channeldb/addr: sanity check onion address length before writing to db 2019-01-17 14:16:15 +01:00
channel_cache_test.go channeldb/channel_cache: add channelCache w/ randomized eviction 2019-04-01 16:25:31 -07:00
channel_cache.go channeldb/channel_cache: add channelCache w/ randomized eviction 2019-04-01 16:25:31 -07:00
channel_test.go multi: move all channelstate operations to ChannelStateDB 2021-09-29 17:00:03 +02:00
channel.go channeldb: add new ChannelType bit for script enforced leased channels 2021-10-19 18:30:19 -07:00
codec.go channeldb+htlcswitch: write wire messages using length prefix 2021-02-24 17:15:27 +01:00
db_test.go channeldb/test: test with postgres 2021-10-29 10:54:44 +02:00
db.go lnd+channeldb: add graph cache option to channeldb 2021-10-22 09:32:48 +02:00
doc.go channeldb: create new channeldb package, update lnwallet to use new API 2015-12-26 12:35:15 -06:00
duplicate_payments.go channeldb: read raw htlc attempt session key 2021-05-19 09:03:52 +02:00
error.go channeldb+invoices: use payment addr as primary index 2020-05-26 18:55:27 -07:00
fees.go channeldb: create new channeldb package, update lnwallet to use new API 2015-12-26 12:35:15 -06:00
forwarding_log_test.go channeldb: fix for Windows clock resolution 2020-08-05 09:15:03 +02:00
forwarding_log.go kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
forwarding_package_test.go channeldb: add method to wipe all forwarding packages 2021-09-23 13:22:33 +08:00
forwarding_package.go channeldb: add method to wipe all forwarding packages 2021-09-23 13:22:33 +08:00
graph_cache_test.go channeldb: add new ForEachNode method using the channel graph cache 2021-11-04 15:30:25 -07:00
graph_cache.go channeldb: avoid locking the graph cache while iterating channels 2021-11-08 12:40:14 +01:00
graph_test.go channeldb: add new ForEachNode method using the channel graph cache 2021-11-04 15:30:25 -07:00
graph.go channeldb: add new ForEachNode method using the channel graph cache 2021-11-04 15:30:25 -07:00
invoice_test.go channeldb: add new TestSettleIndexAmpPayments test case 2021-10-28 15:50:25 -07:00
invoices.go channeldb: optimize updateInvoice for AMP by only reading relevant HTLCs 2021-10-28 15:50:15 -07:00
legacy_serialization.go Revert "channeldb: remove unsupported migrations" 2019-10-12 00:47:45 -07:00
log.go channeldb/migration: remove old forwarding packages 2021-09-23 13:22:34 +08:00
meta_test.go kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
meta.go kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
mp_payment_test.go channeldb: read raw htlc attempt session key 2021-05-19 09:03:52 +02:00
mp_payment.go channeldb: cache htlc attempt session key 2021-05-19 09:08:18 +02:00
nodes_test.go multi: move all channelstate operations to ChannelStateDB 2021-09-29 17:00:03 +02:00
nodes.go multi: carve out LinkNodeDB from channeldb.DB for cleaner separation 2021-09-29 17:00:02 +02:00
options_test.go kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
options.go lnd+channeldb: add graph cache option to channeldb 2021-10-22 09:32:48 +02:00
paginate.go kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
payment_control_test.go channeldb: add ability to delete a single payment from its ID 2021-09-13 12:50:40 +02:00
payment_control.go payments: prefetch payment on hot paths 2021-09-14 13:12:23 +02:00
payments_test.go channeldb: cache htlc attempt session key 2021-05-19 09:08:18 +02:00
payments.go channeldb: add ability to delete a single payment from its ID 2021-09-13 12:50:40 +02:00
peers_test.go multi: store peer flap rate on disk on best effort basis 2020-09-08 13:49:46 +02:00
peers.go kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
README.md multi: unify code blocks in READMEs 2021-01-22 09:14:11 +01:00
reject_cache_test.go channeldb/reject_cache: add rejectCache w/ randomized eviction 2019-04-01 16:25:31 -07:00
reject_cache.go channeldb/reject_cache: add rejectCache w/ randomized eviction 2019-04-01 16:25:31 -07:00
reports_test.go kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
reports.go mod+kvdb+channeldb: use btcwallet new DB interface 2021-08-04 14:55:55 +02:00
setup_test.go channeldb/test: test with postgres 2021-10-29 10:54:44 +02:00
waitingproof_test.go lnwire: prep wire messages for TLV extensions 2021-02-24 17:31:55 +01:00
waitingproof.go multi: move all channelstate operations to ChannelStateDB 2021-09-29 17:00:03 +02:00
witness_cache_test.go channeldb: move makeTestDB out of test to make it available for other tests 2020-07-28 17:57:29 +02:00
witness_cache.go kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00

channeldb

Build Status MIT licensed GoDoc

The channeldb implements the persistent storage engine for lnd and generically a data storage layer for the required state within the Lightning Network. The backing storage engine is boltdb, an embedded pure-go key-value store based off of LMDB.

The package implements an object-oriented storage model with queries and mutations flowing through a particular object instance rather than the database itself. The storage implemented by the objects includes: open channels, past commitment revocation states, the channel graph which includes authenticated node and channel announcements, outgoing payments, and invoices

Installation and Updating

⛰  go get -u github.com/lightningnetwork/lnd/channeldb