Commit Graph
20151 Commits
Author SHA1 Message Date
Elle Mouton fcbfeb33e0 docs: update release notes 2026-02-13 07:21:21 +02:00
Elle Mouton 7bb38651d9 graph/db: convert other node CRUD methods
Convert a few more CRUD methods to handle v2 nodes. Then update some
more tests to be run against both v1 and v2 nodes.
2026-02-13 07:21:21 +02:00
Elle Mouton 7a5a588176 graph/db: add TestVersionedDBs
This will be used to run sub-tests with v2 data.
2026-02-13 07:21:21 +02:00
Elle Mouton d2b47cdbae graph/db: let node helpers take version 2026-02-13 07:21:21 +02:00
Elle Mouton 4db5198079 graph/db: introduce VersionedGraph
For now, all instances will use V1 only so as not to change behaviour
yet.
2026-02-13 07:21:21 +02:00
Elle Mouton d8337be968 graph/db: add helper variable for tests
Add an isSQLDB variable that will let us quickly check in tests if the
backing DB is KVStore or SQLStore.
2026-02-13 07:21:21 +02:00
Elle Mouton c281810ab9 graph/db: move gossip versions up one layer
Update some of the node related graph CRUD methods to take a version
rather than hardcoding them in the SQLStore layer. Move the version up
one layer instead. This will make it easier to make it configurable
later on.
2026-02-13 07:21:20 +02:00
Elle Mouton 97143a74ab graph/db: split HasNode into two methods
HasNode currently is very v1 specific since it returns a time.Time
timestamp which is specific to V1 node announcements. However, it is
mostly only used for the "exists" return value. So here we split it up
into HasNode which just checks existence and HasV1Node which retains the
same behavaiour as before.
2026-02-13 07:21:20 +02:00
Elle Mouton 5a3c013e91 sqldb/sqlc: add NodeExists query 2026-02-13 07:21:20 +02:00
Elle Mouton 1738e0cabc graph/db: allow v2 nodes
Update the SQLStore node writer and readers to handle V2 ndoes.
Currently no logic will actually add such nodes. The following commits
will update what is needed so that CRUD for v2 nodes can be tested.
2026-02-13 07:21:20 +02:00
Elle Mouton 628b89cc40 graph/db: explicit redirect to Store
Instead of embedding Store in ChannelGraph so that any methods of the
Store interface not implemented by the ChannelGraph are redirected to
the underlying Store, we update things in this commit to instead
make the "redirection" explicit. This is in preparation for changes we
will make soon where some underlying store methods will take an explicit
"version" parameter but then we will keep the ChannelGraph methods as is
so that existing call-sites dont all need to be updated. We will then
add "Versioned" ChannelGraph wrapper which decides the version use.
Initially, most call-sites will just create a wrapped V1 ChannelGraph so
that the logic remains as it is today.
2026-02-13 07:21:20 +02:00
Elle Mouton c61617200b sqldb: update node query for v2
Here we update the UpdateNode query so that it can be used to insert
the new blockheight field for a v2 node.
2026-02-13 07:21:20 +02:00
Elle Mouton 3dfc835354 graph/db: add V2 Node constructor
We add a new NewV2Node constructor which takes a new NodeV2Fields as a
parameter. This NodeV2Fields struct defines the fields that can be set
in a models.Node if the version is V2.
2026-02-13 07:21:20 +02:00
Elle Mouton bc76383e15 graph/db: rename V1Store to Store
The underling store will store gossip messages across gossip versions
and we will instead expose version parameters on many of the methods. So
this interface really just abstracts the underlying store/schema type.
2026-02-13 07:21:20 +02:00
Elle Mouton cb2fc6621e sqldb: add new gossip v2 columns to graph tables
Add a new migration that updates the graph tables (nodes, channels and
policies) in preparation for the new columns required for V2
announcements. This migration has to be added to the set of "live"
migrations instead of "dev only" since it edits the columns of existing
tables and so changes the existing sql models. We are going to prep the
SQLStore code to handle the V2 types in the coming commits, so we need
this migration to be in place.

In this commit we also remove the TestSchemaMigrationIdempotency test
since this test fails with the new "ALTER TABLE" migrations which dont
have "IF NOT EXISTS" options like tables and indexes do. Migrations
should be idempotent anyways due to the migration tracker file and/or
the sqlc migration tracker.
2026-02-13 07:21:20 +02:00
Elle Mouton 2e58c07570 devrpc: fix comment 2026-02-13 07:21:19 +02:00
ziggieXXX b1165e984e Merge pull request #10464 from gijswijs/fix-itest-flakes
Fix flaky watchtower and invoice tests
2026-02-12 15:30:46 +01:00
Yong 1bdd0f9a29 Merge pull request #10562 from ziggie1984/fix-severity-cmd-classification
build: classify cmd/* as MEDIUM in PR severity bot
2026-02-12 21:03:24 +08:00
Gijs van Dam 09379d0381 wtclient: fix race conditions locking tests
This commit fixes two flaky test scenarios:

1. testRemoveLockedAddr: Add synchronization to wait for the dial to
   start before asserting that the address is locked. Previously, the
   test could race and check the lock state before session negotiation
   began.

2. testTowerSwitch: Use wait.Predicate for RemoveTower since the
   address may still be locked by an active session, causing
   intermittent failures.
2026-02-12 13:02:02 +01:00
Gijs van Dam 6ea99cde42 invoices: increase timeout parallel Postgres tests
Increase the test timeout from 10s to 60s to accommodate slow
Postgres database setup and migrations when running tests in
parallel. This prevents false-positive test failures on slower
CI runners.
2026-02-12 13:01:50 +01:00
Olaoluwa Osuntokun b3e37edfae Merge pull request #10563 from Roasbeef/go-1-25
build+docs: bump minimum Go version to 1.25.5
2026-02-11 14:55:30 -08:00
ziggieXXX 3267fec34a Merge pull request #10536 from starius/unlock-wait
lncli unlock: wait until daemon can unlock
2026-02-11 17:28:55 +01:00
ziggieXXX 17b956d320 Merge pull request #10559 from lightningnetwork/elle-issue-dedupe
.claude+.github: add issue dedupe workflow
2026-02-11 14:29:04 +01:00
Elle Mouton 7baead7183 multi: add issue dedupe command and workflow
- add /dedupe command definition for Claude Code
- add workflow to run dedupe on issue opened
- add comment helper script for posting duplicates
2026-02-11 13:06:42 +02:00
Yong e53c4b1de5 Merge pull request #10465 from ziggie1984/bugfix/fix-peer-disconnect-log
peer: fix log output when not applicable
2026-02-11 11:41:20 +08:00
Olaoluwa Osuntokun ba1fb50380 build+docs: bump minimum Go version to 1.25.5
With Go 1.26 now released, this bumps the minimum required Go version
from 1.24.11 to 1.25.5 across all go.mod files and updates the
installation documentation with the correct download links and SHA256
hashes for Go 1.25.5 binaries.

The build system (Dockerfiles, Makefile, CI) was already using Go 1.25.5,
so this change aligns the go.mod minimum version to match.
2026-02-10 12:54:10 -08:00
Olaoluwa Osuntokun 83163a0fe7 Merge pull request #10553 from lightningnetwork/claude-chill
ci: reduce pr-severity bot comment spam
2026-02-10 09:54:25 -08:00
ziggie ad8b64417f build: classify cmd/* as MEDIUM in PR severity bot
The severity bot was misclassifying CLI client code as HIGH because
filenames like cmd_walletunlocker.go matched the walletunlocker/*
auth/security keyword. Add cmd/* explicitly to the MEDIUM tier and
add a classification rule to prevent filename-based false positives.
2026-02-10 10:48:09 +01:00
Olaoluwa Osuntokun 3807c6c563 Merge pull request #9820 from lightningnetwork/actor
actor: add new package for structured concurrency based on the Actor model
2026-02-09 17:02:02 -08:00
Olaoluwa Osuntokun 8781daa995 actor: add README.md
In this commit, we add a readme which serves as a general introduction
to the pacakge, and also the motivation of the package. It serves as a
manual for developers that may wish to interact with the package.
2026-02-06 19:26:54 -08:00
Olaoluwa Osuntokun 7c9d72134c actor: add example files
In this commit, we add a series of examples that show how the package
can be used in the wild. They can be run as normal Example tests.
2026-02-06 19:26:54 -08:00
Olaoluwa Osuntokun 9ebd8d240d actor: add the actor system and router
In this commit, we add the actor system (along with the receiptionist)
and the router.

An actor can be registered with the system, which allows other callers
to locate it to send message to it via the receptionist. Custom routers
can be created for when there're actors that rely on the same service
key and also req+resp type. This can be used to implement something
similar to a worker pool.
2026-02-06 19:26:54 -08:00
Olaoluwa Osuntokun b055af6420 actor: add fundamental interfaces and concrete Actor impl
In this commit, we add the actual Actor implementation. We define a
series of types and interfaces, that in concert, describe our actor. An
actor has some ID, a reference (used to send messages to it), and also a
set of defined messages that it'll accept.

An actor can be implemented using a simple function if it's stateless.
Otherwise, a struct can implement the Receive method, and handle its
internal message passing and state that way.
2026-02-06 19:26:54 -08:00
Olaoluwa Osuntokun 3069829d61 actor: add Future[T] and Promise[T] w/ concrete impls
In this commit, we add two new fundamental data structures: Future[T]
and Promise[T].

A future is a response that might be ready at some point in the future.
This is already a common pattern in Go, we just make a type safe wrapper
around the typical operations: block w/ a timeout, add a call back for
execution, pipeline the response to a new future.

A promise is an intent to complete a future. Typically the caller
receives the future, and the callee is able to complete the future using
a promise.
2026-02-06 19:26:54 -08:00
Olaoluwa Osuntokun 90415aaa04 actor: add new actor package as distinct sub-module 2026-02-06 19:26:53 -08:00
ziggieXXX 14b90a27cf Merge pull request #10507 from hieblmi/wallet-tip
rpcserver: add `wallet_synced` to `GetInfoResponse`
2026-02-05 17:55:02 -05:00
Slyghtning 7766c1dd9a docs: add release notes for wallet_synced RPC field 2026-02-05 08:58:33 +01:00
Slyghtning b8693bea33 itest: add wallet_synced field integration test
In this commit, we add an integration test that verifies the
wallet_synced field in GetInfoResponse correctly reflects the wallet's
sync state.

The test creates a node, verifies wallet_synced becomes true after
initial sync, then stops the node and mines blocks while it's offline.
After restart, the test polls GetInfo to observe the wallet catching up,
ideally capturing the transition from wallet_synced=false to true.

The test is registered in the "wallet sync" test case group.
2026-02-05 08:58:33 +01:00
Slyghtning d39577682e rpcserver: populate wallet_synced in GetInfo response
In this commit, we extend the chainSyncInfo struct with a new
isWalletSynced field that tracks the wallet's sync state independently
from the composite isSynced field. The GetInfo RPC handler now populates
the WalletSynced response field from this new struct field.

A debug log line is added to GetInfo to help diagnose sync state issues,
showing both the composite sync status and the wallet-specific sync
status.

Currently isWalletSynced mirrors isSynced since both ultimately derive
from the same underlying wallet sync check. This prepares the plumbing
for future differentiation where wallet sync state could be tracked
separately from router and blockbeat dispatcher states.
2026-02-05 08:58:31 +01:00
Slyghtning 3c22c3e7fa lnrpc: add wallet_synced field to GetInfoResponse
In this commit, we add a new `wallet_synced` boolean field to the
GetInfoResponse message. This field exposes the wallet's internal sync
state with the backing chain source, providing visibility into whether
the wallet has caught up to the current chain tip.

This is distinct from the existing `synced_to_chain` field, which
represents a composite sync state that also considers the router and
blockbeat dispatcher. The new field allows callers to distinguish
between wallet sync delays and other subsystem sync states.
2026-02-05 08:45:53 +01:00
Olaoluwa Osuntokun 44c6cc5a1c Merge pull request #10530 from NishantBansal2003/gossip-race
discovery: fix race on remoteUpdateHorizon in GossipSyncer
2026-02-04 17:48:58 -08:00
Boris Nagaev d8f39fa1b4 docs/release-notes: add release notes entry 2026-02-04 15:21:03 -05:00
Boris Nagaev 593e8c01cf docs/release-notes: fix PR reference 2026-02-04 15:20:03 -05:00
Boris Nagaev 6cd785c751 lncli unlock: add unit tests
Add table-driven unit tests for unlock() that exercise success and error paths,
cover flag and arg handling.
2026-02-04 15:20:03 -05:00
Boris Nagaev e865552cc1 lncli unlock: wait until daemon can unlock
Use the StateService stream to wait for LOCKED before sending the unlock
request, then wait for UNLOCKED/RPC_ACTIVE before reporting success.
If the state shows the wallet is already unlocked, skip sending the
unlock request and return an error immediately.

This avoids lost unlocks during slow startup.
Fix https://github.com/lightningnetwork/lnd/issues/7749
2026-02-04 15:20:03 -05:00
Nishant Bansal caa24791be discovery: fix race on remoteUpdateHorizon in GossipSyncer
Guard access to remoteUpdateHorizon to prevent a race when
the gossiper is flushing a pending batch of announcements
while concurrently processing a GossipTimestampRange message
from a peer.

Signed-off-by: Nishant Bansal <nishant.bansal.282003@gmail.com>
2026-02-05 00:57:55 +05:30
Olaoluwa Osuntokun 5c7d3ad045 Merge pull request #10540 from morehouse/gossiper_shutdown_deadlock
discovery: fix gossiper shutdown deadlock
2026-02-04 10:32:15 -08:00
Olaoluwa Osuntokun 0871193cdf ci: reduce pr-severity bot comment spam
Only post a severity classification comment when the bot hasn't
commented before or when the severity actually changed. Previously
every push (synchronize event) would post a new comment even if the
classification was identical.

The prompt now instructs the classifier to:
- Check for existing bot comments via the pr-severity-bot marker
- Compare the new severity against the existing severity label
- Skip commenting if both match, while still ensuring labels are correct
- Include a severity changed banner when re-commenting due to a change
2026-02-04 10:02:53 -08:00
Yong eaa7bcf67a Merge pull request #10547 from gijswijs/fix-linter-for-worktrees
Fix linter in git worktrees
2026-02-04 20:26:06 +08:00
Olaoluwa Osuntokun 4d775457c5 Merge pull request #10550 from Roasbeef/fix-claude-again
ci: add tool constraints to pr-severity prompt
2026-02-03 21:45:46 -04:00