Commit Graph

18967 Commits

Author SHA1 Message Date
Elle Mouton
ca52834795 graph/db: use only exported KVStore ForEachNode method in tests
Replace all tests calls to the private `forEachNode` method on the
`KVStore` with the exported ForEachNode method. This is in preparation
for having the tests run against an abstract DB backend.
2025-06-04 10:54:34 +02:00
Elle Mouton
861606d28b graph/db: remove kvdb.Backend from test helpers
Remove unused kvdb.Backend param from `randEdgePolicy` and
`newEdgePolicy` test helpers.
2025-06-04 10:54:34 +02:00
Elle Mouton
29ce7627fd graph/db: remove kvdb param from test helper
Remove the kvdb.Backend parameter from the `createChannelEdge` helper.
This is all in preparation for having the unit tests run against any DB
backend.
2025-06-04 10:54:33 +02:00
Elle Mouton
1b26b590b4 graph/db: test clean-up
This commit cleans up the graph test code by removing unused kvdb type
parameters from the `createTextVertex` and `createLightningNode` helper
methods. We also pass in the testing parameter now so that we dont need
to check the error each time we call `createTestVertex`.
2025-06-04 10:54:33 +02:00
Elle Mouton
0ab61e08fa discovery: listen on ctx in any select
For any method that takes a context that has a select that listens on
the systems quit channel, we should also listen on the ctx since we
should not need to worry about if this context is derived internally or
externally.
2025-06-04 10:54:33 +02:00
Elle Mouton
f2fb4827c7 discovery: remove unnecessary context.Background() calls 2025-06-04 10:54:33 +02:00
Elle Mouton
6b95b7933c discovery: pass context through to bootstrapper SampleNodeAddrs
Since the ChannelGraphBootstrapper implementation makes a call to the
graph DB.
2025-06-04 10:54:33 +02:00
Elle Mouton
1a8e7587f9 discovery: pass context to ProcessRemoteAnnouncement
With this, we move a context.TODO() out of the gossiper and into the
brontide package - this will be removed in a future PR which focuses on
threading contexts through that code.
2025-06-04 10:54:33 +02:00
Elle Mouton
1a5821a873 discovery: thread contexts through sync manager
Here, we remove one context.TODO() by threading a context through to the
SyncManager.
2025-06-04 10:54:32 +02:00
Elle Mouton
a1a7d771da discovery: thread contexts to syncer
The `GossiperSyncer` makes various calls to the `ChannelGraphTimeSeries`
interface which threads through to the graph DB. So in preparation for
threading context through to all the methods on that interface, we
update the GossipSyncer accordingly by passing contexts through.

Two `context.TODO()`s are added in this commit. They will be removed in
the upcoming commits.
2025-06-04 10:54:32 +02:00
Elle Mouton
5430157d0c discovery: pass context through to reliable sender
And remove a context.TODO() that was added in the previous commit.
2025-06-04 10:54:32 +02:00
Elle Mouton
e2c184f235 discovery: thread context through to gossiper
Pass the parent LND context to the gossiper, let it derive a child
context that gets cancelled on Stop. Pass the context through to any
methods that will eventually thread it through to any graph DB calls.

One `context.TODO()` is added here - this will be removed in the next
commit.

NOTE: for any internal methods that the context gets passed to, if those
methods already listen on the gossiper's `quit` channel, then then don't
need to also listen on the passed context's Done() channel because the
quit channel is closed at the same time that the context is cancelled.
2025-06-04 10:54:32 +02:00
Elle Mouton
4fca1f35ae lnd: pass context to newServer and server.Start
In preparation for starting to thread a single parent context through
LND, we update the main `server.Start` method to take a context so that
it can later pass it to any subsytem's Start method it calls. We also
pass the context to `newServer` since it makes some calls that will
eventually reach the DB (for example the graph db).
2025-06-04 10:54:32 +02:00
Elle Mouton
76d2bec58f kvdb/etcd: remove context.TODO() from test helpers
We want `context.TODO()` to be high signal in the code-base. It should
signal clearly that work is required to thread parent context through to
the call-site. So to keep the signal-to-noise ratio high, we remove any
context.TODO() calls from tests since these will never need to be
replace by a parent context.

After this commit, there is only a single context.TODO() left in the
code-base.
2025-06-04 10:54:32 +02:00
Elle Mouton
54f6b16f01 macaroons: remove context.TODO() in tests
We want `context.TODO()` to be high signal in the code-base. It should
signal clearly that work is required to thread parent context through to
the call-site. So to keep the signal-to-noise ratio high, we remove any
context.TODO() calls from tests since these will never need to be
replace by a parent context.
2025-06-04 10:54:31 +02:00
Oliver Gugger
c52a6ddeb8 Merge pull request #9840 from Roasbeef/0-19-final
build: bump version to 0.19
v0.19.0-beta
2025-05-20 18:11:13 +02:00
Oliver Gugger
182aab7ca4 Merge pull request #9841 from twofaktor/patch-1
docs: minor format & grammatical fixes on release notes 0.19.0
2025-05-20 17:19:49 +02:00
⚡️2FakTor⚡️
2680715832 Update release-notes-0.19.0.md 2025-05-20 16:59:59 +02:00
Olaoluwa Osuntokun
2b76e2fbd5 build: bump version to 0.19.0 2025-05-19 17:46:29 -07:00
Olaoluwa Osuntokun
30f3d7ce89 discovery: lower bandwidth rate limiting log to Debugf 2025-05-19 17:46:08 -07:00
Oliver Gugger
3707b1fb70 Merge pull request #9814 from ziggie1984/add-info-release-notes
Update release notes for LND 19 - lncli breaking change
2025-05-16 10:14:08 +02:00
ziggie
468c527556 docs: update release notes for 19.
The `lncli listchannels` command was changed and might cause breaking
changes for people relying on the `chan_id` return value in their
automation scripts.
2025-05-16 09:41:36 +02:00
Olaoluwa Osuntokun
5ea7232c31 Merge pull request #9811 from lightningnetwork/0-19-rc-5
build: bump version to v0.19.0-beta.rc5
v0.19.0-beta.rc5
2025-05-15 14:48:45 -07:00
Olaoluwa Osuntokun
71dbc189d4 Merge pull request #9801 from Roasbeef/pong-relax
peer+lnd: add new CLI option to control if we D/C on slow pongs
2025-05-15 10:25:29 -07:00
Oliver Gugger
1e8fcc5ea9 build: bump version to v0.19.0-beta.rc5 2025-05-15 16:38:26 +02:00
Olaoluwa Osuntokun
e2c56af519 docs/release-notes: add release notes entry for pong default change 2025-05-15 16:36:38 +02:00
Olaoluwa Osuntokun
c493f0c0a9 peer+lnd: add new CLI option to control if we D/C on slow pongs
In this commit, we add a new CLI option to control if we D/C on slow
pongs or not. Due to the existence of head-of-the-line blocking at
various levels of abstraction (app buffer, slow processing, TCP kernel
buffers, etc), if there's a flurry of gossip messages (eg: 1K channel
updates), then even with a reasonable processing latency, a peer may
still not read our ping in time.

To give users another option, we add a flag that allows users to disable
this behavior. The default remains.
2025-05-15 16:36:38 +02:00
Oliver Gugger
b0cba7dd08 Merge pull request #9804 from ellemouton/removeChanGraphCacheMu
graph/db: remove ChannelGraph cacheMu
2025-05-13 16:10:17 +02:00
Oliver Gugger
1db6c31e20 Merge pull request #9798 from ellemouton/graphFixNotificationSubs
graph/db: synchronous topology client subscriptions/cancellations
2025-05-12 17:10:44 +02:00
Elle Mouton
0155d5d7b0 graph/db: handle topology updates in a single location
In this commit, we ensure that any topology update is forced to go via
the `handleTopologySubscriptions` handler so that client subscriptions
and updates are handled correctly and in the correct order.

This removes a bug that could result from a client missing a
notification about a channel being closed if the client is subscribed
and shortly after, `PruneGraph` is called which would notify all
subscribed clients and possibly do so before the client subscription has
actually been persisted.
2025-05-12 14:42:22 +02:00
Oliver Gugger
8044891df4 Merge pull request #9799 from guggero/function-call-formatting
docs: document previously implicit formatting rule
2025-05-12 13:13:14 +02:00
Elle Mouton
765fc6c132 graph/db: remove ChannelGraph cacheMu
We remove the mutex that was previously held between DB calls and calls
that update the graphCache. This is done so that the underlying DB calls
can make use of any batch requests which they currently cannot since the
mutex prevents multiple requests from calling the methods at once.

The reason the cacheMu was originally added here was during a code
refactor that moved the `graphCache` out of the `KVStore` and into the
`ChannelGraph` and the aim was then to have a best effort way of
ensuring that updates to the DB and updates to the graphCache were as
consistent/atomic as possible.
2025-05-12 08:29:40 +02:00
Oliver Gugger
12dbeb99c3 docs: document previously implicit formatting rule
Adds a formatting rule to the code style documentation that is being
used widely throughout the codebase but isn't properly documented.
2025-05-12 07:00:51 +02:00
Oliver Gugger
ee25c228e9 Merge pull request #8330 from bitromortac/2401-bimodal-improvements
bimodal pathfinding probability improvements
2025-05-08 21:35:49 +02:00
bitromortac
86249fbe6c docs: update release notes 2025-05-08 18:31:31 +02:00
Oliver Gugger
43e822c3b0 Merge pull request #9789 from ellemouton/updateTLVDep
multi: use updated TLV SizeFunc signature
2025-05-08 10:20:37 +02:00
Olaoluwa Osuntokun
1a5432368e Merge pull request #9785 from Roasbeef/go-1-23-9
build: bump Go version to v1.23.9
2025-05-07 16:17:00 -07:00
Elle Mouton
ad38ed73c7 go.mod+lnwire: bump TLV dep and fix MilliSatoshi Record
In this commit, we update the `tlv` package version which includes type
constraints on the `tlv.SizeBigSize` method parameter. This exposes a
bug in the MilliSatoshi Record method which is fixed here.

This was not caught in tests before since currently only
our TLV encoding code makes use of this SizeFunc (so we would write 0
size to disk) but then when we read the bytes from disk and decode, we
dont use the SizeFunc and our MilliSatoshi decode method makes direct
use of the `tlv.DBigSize` function which _currently does not make use of
the `l` length variable passed to it_. So it currently does correctly
read the data.
2025-05-07 19:36:25 +02:00
Oliver Gugger
8b413e89f1 Merge pull request #9793 from ellemouton/tlvSizeBigSize
tlv: catch unhandled type in SizeBigSize
tlv/v1.3.1
2025-05-07 19:21:57 +02:00
Elle Mouton
ecb9755e19 tlv: constrain the types passed to MakeBigSizeRecord and SizeBigSize
Protect against unhandled types being passed to these methods.
2025-05-07 15:45:12 +02:00
Olaoluwa Osuntokun
1c76c6198c build: bump Go version to v1.23.9 2025-05-06 15:50:16 -07:00
Oliver Gugger
67a40c90ad Merge pull request #9782 from Roasbeef/v19-rc4
build: bump to version v0.19 rc4
v0.19.0-beta.rc4
2025-05-06 18:36:20 +02:00
Oliver Gugger
221b7634a6 Merge pull request #9783 from bitromortac/2505-loadmc-fixes
lncli: establish connection after parsing of mc data for loadmc
2025-05-06 13:52:57 +02:00
bitromortac
306df7048f docs: update release notes 2025-05-06 11:16:36 +02:00
bitromortac
d33c92bd19 lncli: option to skip prompts for loadmc
This makes the command scriptable.
2025-05-06 11:13:30 +02:00
bitromortac
725a80a3b7 lncli: remove possibility to discard mission control from loadmc
This can already be done with resetmc and was only included here because
loadmc was used in a different context.
2025-05-06 10:59:41 +02:00
bitromortac
452022ee75 lncli: establish connection after mc parsing for loadmc
It can take some time to unmarshal large mission control data sets such
that the macaroon can expire during that phase. We postpone the
connection establishment to give the user more time to answer the
prompt.
2025-05-06 10:59:38 +02:00
bitromortac
56ccf60267 lncli: correct docs for loadmc 2025-05-06 10:53:37 +02:00
Olaoluwa Osuntokun
850f1edc5f build: bump to version v0.19 rc4 2025-05-05 12:58:35 -07:00
Olaoluwa Osuntokun
7b6c1cf840 Merge pull request #9781 from bitromortac/2505-loadmc
lncli: add loadmc command
2025-05-05 12:00:32 -07:00