19866 Commits

Author SHA1 Message Date
Yong
096ab65b1d Merge pull request #10350 from saubyk/update-pgp-key-suheb
Updated expired PGP key for Suheb
2025-11-06 20:56:04 +08:00
Yong
b63a6a0c09 Merge pull request #10349 from ziggie1984/ci/enhance-expiration-date-key
refresh signing PGP key ziggie1984 - expiring at the end of november
2025-11-06 20:37:52 +08:00
saubyk
49e75a6e8b keys:updated the expired key for Suheb 2025-11-05 18:35:31 -08:00
Norbert
b669494a23 keys: increase expiry of signing key
The key did not change just the meta data.
2025-11-06 01:29:34 +01:00
Olaoluwa Osuntokun
aeac3380ac Merge pull request #10345 from Roasbeef/v7-rc4
build: bump version to v0.20.0-beta rc4
v0.20.0-beta.rc4
2025-11-05 12:25:53 -08:00
Olaoluwa Osuntokun
2ddb630a95 build: bump version to v0.7.0 rc4 2025-11-04 14:43:12 -08:00
Olaoluwa Osuntokun
4131a8e586 Merge pull request #10330 from Roasbeef/fix-error-handling-gossiper
discovery: fix potential infinite loop bug re context cancel error handling in gossip syncer
2025-11-03 11:57:51 -08:00
Olaoluwa Osuntokun
adaa893f22 docs: add release notes entry 2025-11-03 10:44:14 -08:00
Olaoluwa Osuntokun
b8ca876409 discovery/test: add comprehensive tests for state handler error exits
Add comprehensive test coverage to verify that state handler errors cause
the channelGraphSyncer goroutine to exit cleanly without entering endless
retry loops. These tests use mutation testing principles to ensure they
would fail if the fixes were removed.

TestGossipSyncerStateHandlerErrors is a table-driven test covering four
scenarios: context cancellation and peer disconnect during syncingChans
state, and context cancellation and network errors during queryNewChannels
state. Each test case verifies both attempt count (no endless loop) and
clean shutdown (no deadlock).

TestGossipSyncerProcessChanRangeReplyError verifies that errors from
processChanRangeReply in the waitingQueryRangeReply state cause clean
exit. This test sends multiple malformed messages and checks that only
the first is processed before the goroutine exits, using channel queue
depth to detect if the goroutine is still running.

All tests are race-detector clean and use mutation testing validation:
removing any of the error return statements causes the corresponding
tests to fail, confirming the tests properly verify the fixes.
2025-11-03 10:44:13 -08:00
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
Yong
c7c80730d2 Merge pull request #10334 from ziggie1984/fix-decoding-extra-tlv-data
Don't fail on invalid extra tlv data when decoding a payment
2025-11-03 22:15:37 +08:00
ziggie
870d603ce5 multi: allow invalid tlv data when decoding payment fail info
Older payments might have a invalid tlv stream, we now catch this
case and add a unit test.
2025-11-03 12:54:29 +01: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