lnd.xprv/channeldb
Yong 582b164c46
kvdb: add timeout options for bbolt (#4787)
* mod: bump btcwallet version to accept db timeout

* btcwallet: add DBTimeOut in config

* kvdb: add database timeout option for bbolt

This commit adds a DBTimeout option in bbolt config. The relevant
functions walletdb.Open/Create are updated to use this config. In
addition, the bolt compacter also applies the new timeout option.

* channeldb: add DBTimeout in db options

This commit adds the DBTimeout option for channeldb. A new unit
test file is created to test the default options. In addition,
the params used in kvdb.Create inside channeldb_test is updated
with a DefaultDBTimeout value.

* contractcourt+routing: use DBTimeout in kvdb

This commit touches multiple test files in contractcourt and routing.
The call of function kvdb.Create and kvdb.Open are now updated with
the new param DBTimeout, using the default value kvdb.DefaultDBTimeout.

* lncfg: add DBTimeout option in db config

The DBTimeout option is added to db config. A new unit test is
added to check the default DB config is created as expected.

* migration: add DBTimeout param in kvdb.Create/kvdb.Open

* keychain: update tests to use DBTimeout param

* htlcswitch+chainreg: add DBTimeout option

* macaroons: support DBTimeout config in creation

This commit adds the DBTimeout during the creation of macaroons.db.
The usage of kvdb.Create and kvdb.Open in its tests are updated with
a timeout value using kvdb.DefaultDBTimeout.

* walletunlocker: add dbTimeout option in UnlockerService

This commit adds a new param, dbTimeout, during the creation of
UnlockerService. This param is then passed to wallet.NewLoader
inside various service calls, specifying a timeout value to be
used when opening the bbolt. In addition, the macaroonService
is also called with this dbTimeout param.

* watchtower/wtdb: add dbTimeout param during creation

This commit adds the dbTimeout param for the creation of both
watchtower.db and wtclient.db.

* multi: add db timeout param for walletdb.Create

This commit adds the db timeout param for the function call
walletdb.Create. It touches only the test files found in chainntnfs,
lnwallet, and routing.

* lnd: pass DBTimeout config to relevant services

This commit enables lnd to pass the DBTimeout config to the following
services/config/functions,
  - chainControlConfig
  - walletunlocker
  - wallet.NewLoader
  - macaroons
  - watchtower
In addition, the usage of wallet.Create is updated too.

* sample-config: add dbtimeout option
2020-12-07 15:31:49 -08:00
..
kvdb kvdb: add timeout options for bbolt (#4787) 2020-12-07 15:31:49 -08:00
migration channeldb/migration: add generic CreateTLB migration 2020-05-26 18:55:27 -07:00
migration_01_to_11 kvdb: add timeout options for bbolt (#4787) 2020-12-07 15:31:49 -08:00
migration12 channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
migration13 channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
migration16 channeldb: index payments by sequence number 2020-06-10 12:49:06 +02:00
migtest kvdb: add timeout options for bbolt (#4787) 2020-12-07 15:31:49 -08: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 contractcourt/chain_watcher: handleKnownRemoteState 2020-12-03 08:01:08 +01:00
channel.go contractcourt/chain_watcher: handleKnownRemoteState 2020-12-03 08:01:08 +01:00
codec.go channeldb: index payments by sequence number 2020-06-10 12:49:06 +02:00
db_test.go Merge pull request #4411 from bhandras/test_channeldb 2020-07-31 17:37:13 -07:00
db.go kvdb: add timeout options for bbolt (#4787) 2020-12-07 15:31:49 -08: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 multi: rename: ReadBucket to RBucket 2020-05-26 18:21:08 -07: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 multi: add reset closure to kvdb.View 2020-11-05 17:57:12 +01:00
forwarding_package_test.go kvdb: add timeout options for bbolt (#4787) 2020-12-07 15:31:49 -08:00
forwarding_package.go htlcswitch: use kvdb.View for loading fwdpkgs 2020-08-13 14:36:48 +02:00
graph_test.go channeldb/graph: add batched APIs for graph ingestion 2020-11-24 16:39:28 -08:00
graph.go Merge pull request #3367 from cfromknecht/batched-graph-updates 2020-11-25 18:40:40 -08:00
invoice_test.go channeldb: add DeleteInvoices call 2020-08-05 12:24:15 +02:00
invoices.go multi: add reset closure to kvdb.Update 2020-11-05 17:57:12 +01:00
legacy_serialization.go Revert "channeldb: remove unsupported migrations" 2019-10-12 00:47:45 -07:00
log.go channeldb: implement compaction 2020-11-13 10:19:50 +01:00
meta_test.go multi: add reset closure to kvdb.Update 2020-11-05 17:57:12 +01:00
meta.go multi: add reset closure to kvdb.Update 2020-11-05 17:57:12 +01:00
mp_payment.go routing: return full htlc attempt from shard handler 2020-05-12 19:56:50 +02:00
nodes_test.go channeldb: move makeTestDB out of test to make it available for other tests 2020-07-28 17:57:29 +02:00
nodes.go multi: add reset closure to kvdb.Update 2020-11-05 17:57:12 +01:00
options_test.go kvdb: add timeout options for bbolt (#4787) 2020-12-07 15:31:49 -08:00
options.go kvdb: add timeout options for bbolt (#4787) 2020-12-07 15:31:49 -08:00
paginate.go channeldb: add a paginator struct to process generic pagination 2020-06-10 12:49:48 +02:00
payment_control_test.go multi: add reset closure to kvdb.View 2020-11-05 17:57:12 +01:00
payment_control.go multi: add reset closure to kvdb.View 2020-11-05 17:57:12 +01:00
payments_test.go multi: add reset closure to kvdb.Update 2020-11-05 17:57:12 +01:00
payments.go multi: add reset closure to kvdb.Update 2020-11-05 17:57:12 +01: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 multi: add reset closure to kvdb.Update 2020-11-05 17:57:12 +01:00
README.md build+multi: switch from bolt to bbolt 2018-03-10 19:01:13 -08: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 multi: add reset closure to kvdb.Update 2020-11-05 17:57:12 +01:00
reports.go multi: add reset closure to kvdb.Update 2020-11-05 17:57:12 +01:00
waitingproof_test.go multi: add reset closure to kvdb.View 2020-11-05 17:57:12 +01:00
waitingproof.go multi: add reset closure to kvdb.Update 2020-11-05 17:57:12 +01: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 multi: add reset closure to kvdb.View 2020-11-05 17:57:12 +01: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