Commit Graph

19855 Commits

Author SHA1 Message Date
Olaoluwa Osuntokun
06c7d60452 discovery: fix endless loop in gossip syncer on context cancellation
This commit fixes a critical bug where the channelGraphSyncer goroutine
would enter an endless loop when context cancellation or peer disconnect
errors occurred during the syncingChans or queryNewChannels states.

The root cause was that state handler functions (handleSyncingChans and
synchronizeChanIDs) did not return errors to the main goroutine loop.
When these functions encountered fatal errors like context cancellation,
they would log the error and return early without changing the syncer's
state. This caused the main loop to immediately re-enter the same state
handler, encounter the same error, and loop indefinitely while spamming
error logs.

The fix makes error handling explicit by having state handlers return
errors. The main channelGraphSyncer loop now checks these errors and
exits cleanly when fatal errors occur. We return any error (not just
context cancellation) because fatal errors can manifest in multiple
forms: context.Canceled, ErrGossipSyncerExiting from the rate limiter,
lnpeer.ErrPeerExiting from Brontide, or network errors like connection
closed. This approach matches the error handling pattern already used in
other goroutines like replyHandler.
2025-11-03 10:44:12 -08:00
Olaoluwa Osuntokun
f938e40afe Merge pull request #10324 from Roasbeef/v-20-branch-rc3
build: bump version to v0.20 rc3
v0.20.0-beta.rc3
2025-10-28 16:51:30 -07:00
Yong
9f5094c98e Merge pull request #10315 from saubyk/db-migration-guide
docs: added a user guide for db migration
2025-10-29 00:49:08 +08:00
Yong
995a1e75cd Merge pull request #10314 from AbelLykens/patch-2
[docs] Typo recovery.md
2025-10-28 18:31:55 +08:00
Olaoluwa Osuntokun
0ff9c2e67f build: bump version to v0.20 rc3 2025-10-27 16:35:12 -07:00
saubyk
99745f3e60 docs: added a user guide for db migration 2025-10-27 11:55:07 -07:00
Olaoluwa Osuntokun
9a7b526c0c Merge pull request #10268 from starius/release-gnu-gzip
release.sh: make sure GNU gzip is used
2025-10-27 10:34:30 -07:00
Yong
ead95de2ce Merge pull request #10312 from saubyk/release-signing-doc-url-fix
docs: fix build instructions doc url
2025-10-27 18:09:47 +08:00
Olaoluwa Osuntokun
6a82c61f47 Merge pull request #10280 from mohamedawnallah/optimize-neutrino-rescan
rpcserver: resolve root cause of premature wallet rescanning
2025-10-23 19:33:21 +02:00
Mohamed Awnallah
f761dc4c7a docs: update release notes v0.20.0 2025-10-22 18:01:48 +00:00
Mohamed Awnallah
c6f458e478 lnd.go: sync headers before chain notifier startup to prevent premature rescan
This commit addresses a regression where Neutrino rescanning starts
from an outdated height (~100k blocks behind) instead of using the
current synced height.

Root Cause:
In commit 16a8b623b, the initialization order was changed so that
Chain Notifier starts before wallet syncing completes. This means
the rescan begins using the stale height from BuildChainControl
rather than the fully synced height.

Old behavior (commit 1dfb5a0c2):
1. RPC server starts
2. Headers sync as part of daemon server
3. Chain Notifier starts after sync completes
4. Rescan begins from current (synced) height

Current behavior (regression):
1. Chain Notifier starts in newServer (before RPC)
2. Wallet sync happens after RPC server starts
3. Rescan uses outdated height from BuildChainControl

Solution:
- Ensure headers are fully synced before starting the chain notifier,
and after starting the RPC server.
- Move chain notifier startup to its correct location after headers are
fully synced.
- Make sure the starting beat is lazily called after chain notifier
started and before that starting beat result is used.
2025-10-22 17:59:06 +00:00
Olaoluwa Osuntokun
1a30ac29e3 Merge pull request #10309 from starius/bump-go-and-mapstructure
build: update Go 1.25.3 / 1.24.9
2025-10-22 17:52:25 +01:00
Olaoluwa Osuntokun
9f611402e2 Merge pull request #10313 from Roasbeef/roasbeef-key-expiry-update
scripts/keys: update roasbeef keys with new expiry
2025-10-22 15:21:23 +01:00
AbelLykens
529ee2eff7 [docs] Typo recovery.md
`-multi_file` should be `--multi_file`
2025-10-22 13:30:58 +02:00
Olaoluwa Osuntokun
81ff01c9cc scripts/keys: update roasbeef keys with new expiry
My key recently expired, in this commit, we update the keys to the new
refreshed version. These are the same keys, but with an expiry further
out.

Here's a clear sign of the latest Bitcoin block hash:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

000000000000000000013215ef7c32bc0427f388fc83623affe712f388
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQQpYhJoGq3wVlaize6QUl997uCthgUCaPi6xwAKCRCQUl997uCt
hpqNAQC5VnnbO6h/PjywGhU4LLRvH8SdgdDEMSc7xrtWd1vgPgD+IDrHqiAb+h38
ORBnUVJCVuZrPebtdnYXVQhII91eaw4=
=WRbl
-----END PGP SIGNATURE-----
2025-10-22 12:07:38 +01:00
saubyk
5ef97632a7 docs: fix build instructions doc url
Signed-off-by: saubyk <39208279+saubyk@users.noreply.github.com>
2025-10-21 17:32:24 -07:00
Boris Nagaev
4fc8d8dda3 build: update CI+release version to Go 1.25.3
We also update the go.mod files to pin to Go 1.24.9.
2025-10-21 14:32:44 -03:00
Olaoluwa Osuntokun
ab0177c1a1 Merge pull request #10305 from Roasbeef/v-20-rc2
build: bump version to v0.20.0 rc2
v0.20.0-beta.rc2
2025-10-21 17:21:46 +01:00
Olaoluwa Osuntokun
8e75ef0c2c Merge pull request #10306 from Roasbeef/free-release-space
build: fix disk space exhaustion in release builds
2025-10-21 17:21:12 +01:00
Olaoluwa Osuntokun
dfee57023c build: clear Go cache between platform builds in release script
In this commit, we add a call to "go clean -cache" after each platform
build in the release script to prevent the Go build cache from accumulating
unbounded disk space during the sequential 15-platform build process.

When building for multiple platforms in sequence with "go build -v", Go
creates intermediate build artifacts and caches compiled packages for each
target platform. While this caching improves build performance within a
single platform build, it causes the cache to grow substantially when
building for many platforms sequentially. With 15 different platform/
architecture combinations, each with their own cached artifacts, this
accumulation was contributing to the disk space exhaustion.

By clearing the build cache after each platform completes, we prevent this
unbounded growth while still allowing each individual platform build to
benefit from caching during its own compilation. The module cache is
preserved (we only clear the build cache), so dependencies don't need to be
re-downloaded between platforms.
2025-10-20 22:39:47 +01:00
Olaoluwa Osuntokun
b82ed88be5 ci: use enhanced cleanup action in release workflow
In this commit, we replace the basic inline cleanup command in the release
workflow with the comprehensive cleanup-space action that was previously
only used in the main CI workflow. The previous release workflow cleanup
simply removed the hostedtoolcache directory, which freed only a few
gigabytes and proved insufficient for multi-platform release builds.

By switching to the cleanup-space action (now enhanced to free 20-25GB),
the release workflow will have substantially more disk space available
before beginning the build process. This should resolve the disk space
exhaustion issues that were occurring during the Windows ARM build phase,
which is one of the final platforms in the 15-platform build sequence.
2025-10-20 22:39:47 +01:00
Olaoluwa Osuntokun
2ccf4b9806 ci: enhance cleanup-space action for release builds
In this commit, we significantly expand the cleanup-space GitHub Actions
workflow to free up substantially more disk space on GitHub runners. The
previous cleanup only removed three large toolsets (dotnet, android,
ghc), which should free ~14GB. This enhancement adds removal of several
additional large packages and caches, bringing the total freed space to
approximately 20-25GB.

The specific additions include removing Swift and Julia language runtimes,
the hosted toolcache directory, all Docker images, numerous large apt
packages (aspnetcore, llvm, php, mongodb, mysql, azure-cli, browsers, and
development tools), and various cache directories. We also add disk space
reporting before and after cleanup to provide visibility into how much
space is actually being freed during workflow runs.

This enhancement was motivated by release builds running out of disk space
when building for all 15 supported platforms (darwin, freebsd, linux,
netbsd, openbsd, windows across multiple architectures). The sequential
builds with verbose output were consuming more space than the basic cleanup
could provide.
2025-10-20 22:39:47 +01:00
Olaoluwa Osuntokun
6b7ad41211 build: bump version to v0.20.0 rc2 2025-10-20 15:43:49 +01:00
Olaoluwa Osuntokun
a315ad3b50 Merge pull request #10273 from ziggie1984/fix-nursery-height-hint
fix height hint Zero issue in utxonursery
2025-10-20 14:51:05 +01:00
ziggie
7c92c88270 docs: add release-notes 2025-10-13 12:50:05 +02:00
ziggie
bed021fc4a contractcourt: patch 0 timelock baby outputs
Older LND versions had a bug which would create HTLCs with
0 locktime. The utxonursery will have problems dealing with such
htlc outputs because we do not allow height hints of 0. Now we
will fetch the closeSummary of the channel and will add a
conservative height for rescanning.
2025-10-13 12:50:04 +02:00
Olaoluwa Osuntokun
6ade31d05c Merge pull request #10285 from Roasbeef/go-125-2
build: update CI+release version to Go 1.25.2
2025-10-11 15:05:49 +01:00
Olaoluwa Osuntokun
7fcbbd44ca build: update CI+release version to Go 1.25.2
We also update the go.mod files to pin to Go 1.24.8.
2025-10-11 13:39:51 +01:00
Olaoluwa Osuntokun
bc07d97213 Merge pull request #10281 from ellemouton/gomodReplace
go.mod: remove sqldb and fn replacements
2025-10-09 15:06:26 +01:00
Elle Mouton
7867aa8d2a go.mod: remove sqldb and fn replacements 2025-10-09 06:29:31 +02:00
Elle
87aed739e0 Merge pull request #10269 from ellemouton/microSampleConf fn/v2.0.9 sqldb/v1.0.11 2025-10-06 13:28:46 +02:00
Elle Mouton
eb67757a07 graph/db: gracefully handle duplicate channel policy announcements 2025-10-06 11:37:39 +02:00
Elle Mouton
abb9654856 graph/db: gracefully handle duplicate node announcements
It can happen that we are handling 2 of the same node announcements in
the same batch transaction. In that case, our `UpsertNode` conflict
assertion may fail. We need to handle this gracefully.
2025-10-06 11:28:33 +02:00
Elle Mouton
88050da220 lndcfg: add Graph to UseNativeSQL description 2025-10-06 11:00:48 +02:00
Elle Mouton
14cf937419 graph: fix log formatting 2025-10-06 10:59:39 +02:00
Elle Mouton
72821da11c docs: update sample conf with Graph SQL mig info 2025-10-04 05:33:52 +02:00
Boris Nagaev
b88b25e781 release.sh: make sure GNU gzip is used
On MacOS, the default BSD gzip produces a different output than the GNU gzip
on Linux. To ensure reproducible builds, we need to use GNU gzip.

This is similar to what we do to enforce GNU tar.
2025-10-03 22:28:03 -03:00
Elle
1c2ff4a7e7 Merge pull request #10232 from ellemouton/g175MessageFollowup
lnwire: add missing Gossip 1.75 fields and message
2025-10-02 14:58:53 +02:00
Elle Mouton
b8ff9fbef3 lnwire: define NodeAnnouncement2
In this commit, the lnwire.NodeAnnouncement2 type is defined. This will
be used to represent the `node_announcement_2` message used in the
Gossip 2 (1.75) protocol.
2025-10-02 12:15:16 +02:00
Elle Mouton
e24dd2f9e0 lnwire: let DNSAddress implement RecordProducer
In preparation for using this type as a TLV record, we let it implement
the RecordProducer interface.
2025-10-01 13:49:15 +02:00
Elle Mouton
e9a4f22dd6 lnwire: add inbound fee to ChannelUpdate2
We leave a TODO that should be addressed after a discussion at the spec
meeting. For now, having the incorrect TLV type is not a problem since
this ChannelUpdate2 type is not used in production.
2025-10-01 13:13:32 +02:00
Elle Mouton
b8abe130a5 multi: rename lnwire.NodeAnnouncement
In preparation for adding a NodeAnnouncement2 struct along with a
NodeAnnouncement interface, this commit renames the existing
NodeAnnouncment struct to NodeAnnouncement1.
2025-10-01 13:13:32 +02:00
Elle Mouton
8372524edf lnwire: add Outpoint to ChannelAnnouncement2
The latest version of the spec has the outpoint included in the
`channel_announcement2` message.
2025-10-01 13:13:32 +02:00
Elle Mouton
004a68e524 lnwire: add OutPoint type with TLV encoding support
Add a new OutPoint type that wraps wire.OutPoint and provides TLV
encoding/decoding capabilities through the tlv.RecordProducer interface.
This enables OutPoint to be used in TLV streams of messages.
2025-10-01 13:13:32 +02:00
Elle Mouton
769b44bfc6 lnwire: shorten method name 2025-10-01 13:13:31 +02:00
Yong
e386e2bfbe Merge pull request #10251 from ziggie1984/create-21-release-notes
Add release-notes for 0.21.0
2025-10-01 02:33:07 +08:00
ziggie
b8a855f572 docs: add release-notes LND 0.21.0 2025-09-30 19:06:27 +02:00
Olaoluwa Osuntokun
90c96c7df1 Merge pull request #10252 from Roasbeef/v0-20-0-rc1-branch
build: bump version to v0.20.0 rc1
v0.20.0-beta.rc1
2025-09-29 20:33:59 -07:00
Yong
6a22f99824 Merge pull request #10254 from yyforyongyu/docs-deprecate-tor
docs: add deprecation warning for `tor.v2`
2025-09-30 10:39:04 +08:00
Yong
01ca50db26 Merge pull request #10250 from ViktorT-11/2025-08-add-viktor-t-gpg-key
scripts: add gpg key for ViktorT-11
2025-09-29 14:22:46 +08:00