• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

lightningnetwork / lnd / 13157733617

05 Feb 2025 12:49PM UTC coverage: 57.712% (-1.1%) from 58.82%
13157733617

Pull #9447

github

yyforyongyu
sweep: rename methods for clarity

We now rename "third party" to "unknown" as the inputs can be spent via
an older sweeping tx, a third party (anchor), or a remote party (pin).
In fee bumper we don't have the info to distinguish the above cases, and
leave them to be further handled by the sweeper as it has more context.
Pull Request #9447: sweep: start tracking input spending status in the fee bumper

83 of 87 new or added lines in 2 files covered. (95.4%)

19472 existing lines in 252 files now uncovered.

103634 of 179570 relevant lines covered (57.71%)

24840.31 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

6.45
/log.go
1
package lnd
2

3
import (
4
        "github.com/btcsuite/btcd/connmgr"
5
        "github.com/btcsuite/btcd/rpcclient"
6
        btclogv1 "github.com/btcsuite/btclog"
7
        "github.com/btcsuite/btclog/v2"
8
        "github.com/lightninglabs/neutrino"
9
        sphinx "github.com/lightningnetwork/lightning-onion"
10
        "github.com/lightningnetwork/lnd/autopilot"
11
        "github.com/lightningnetwork/lnd/build"
12
        "github.com/lightningnetwork/lnd/chainio"
13
        "github.com/lightningnetwork/lnd/chainntnfs"
14
        "github.com/lightningnetwork/lnd/chainreg"
15
        "github.com/lightningnetwork/lnd/chanacceptor"
16
        "github.com/lightningnetwork/lnd/chanbackup"
17
        "github.com/lightningnetwork/lnd/chanfitness"
18
        "github.com/lightningnetwork/lnd/channeldb"
19
        "github.com/lightningnetwork/lnd/channelnotifier"
20
        "github.com/lightningnetwork/lnd/cluster"
21
        "github.com/lightningnetwork/lnd/contractcourt"
22
        "github.com/lightningnetwork/lnd/discovery"
23
        "github.com/lightningnetwork/lnd/funding"
24
        "github.com/lightningnetwork/lnd/graph"
25
        graphdb "github.com/lightningnetwork/lnd/graph/db"
26
        "github.com/lightningnetwork/lnd/healthcheck"
27
        "github.com/lightningnetwork/lnd/htlcswitch"
28
        "github.com/lightningnetwork/lnd/invoices"
29
        "github.com/lightningnetwork/lnd/kvdb/sqlbase"
30
        "github.com/lightningnetwork/lnd/lncfg"
31
        "github.com/lightningnetwork/lnd/lnrpc/autopilotrpc"
32
        "github.com/lightningnetwork/lnd/lnrpc/chainrpc"
33
        "github.com/lightningnetwork/lnd/lnrpc/devrpc"
34
        "github.com/lightningnetwork/lnd/lnrpc/invoicesrpc"
35
        "github.com/lightningnetwork/lnd/lnrpc/neutrinorpc"
36
        "github.com/lightningnetwork/lnd/lnrpc/peersrpc"
37
        "github.com/lightningnetwork/lnd/lnrpc/routerrpc"
38
        "github.com/lightningnetwork/lnd/lnrpc/signrpc"
39
        "github.com/lightningnetwork/lnd/lnrpc/verrpc"
40
        "github.com/lightningnetwork/lnd/lnrpc/walletrpc"
41
        "github.com/lightningnetwork/lnd/lnwallet"
42
        "github.com/lightningnetwork/lnd/lnwallet/btcwallet"
43
        "github.com/lightningnetwork/lnd/lnwallet/chancloser"
44
        "github.com/lightningnetwork/lnd/lnwallet/chanfunding"
45
        "github.com/lightningnetwork/lnd/lnwallet/rpcwallet"
46
        "github.com/lightningnetwork/lnd/monitoring"
47
        "github.com/lightningnetwork/lnd/netann"
48
        "github.com/lightningnetwork/lnd/peer"
49
        "github.com/lightningnetwork/lnd/peernotifier"
50
        "github.com/lightningnetwork/lnd/routing"
51
        "github.com/lightningnetwork/lnd/routing/blindedpath"
52
        "github.com/lightningnetwork/lnd/routing/localchans"
53
        "github.com/lightningnetwork/lnd/rpcperms"
54
        "github.com/lightningnetwork/lnd/signal"
55
        "github.com/lightningnetwork/lnd/sweep"
56
        "github.com/lightningnetwork/lnd/tor"
57
        "github.com/lightningnetwork/lnd/watchtower"
58
        "github.com/lightningnetwork/lnd/watchtower/wtclient"
59
)
60

61
// replaceableLogger is a thin wrapper around a logger that is used so the
62
// logger can be replaced easily without some black pointer magic.
63
type replaceableLogger struct {
64
        btclog.Logger
65
        subsystem string
66
}
67

68
// Loggers can not be used before the log rotator has been initialized with a
69
// log file. This must be performed early during application startup by
70
// calling InitLogRotator() on the main log writer instance in the config.
71
var (
72
        // lndPkgLoggers is a list of all lnd package level loggers that are
73
        // registered. They are tracked here so they can be replaced once the
74
        // SetupLoggers function is called with the final root logger.
75
        lndPkgLoggers []*replaceableLogger
76

77
        // addLndPkgLogger is a helper function that creates a new replaceable
78
        // main lnd package level logger and adds it to the list of loggers that
79
        // are replaced again later, once the final root logger is ready.
80
        addLndPkgLogger = func(subsystem string) *replaceableLogger {
12✔
81
                l := &replaceableLogger{
12✔
82
                        Logger:    build.NewSubLogger(subsystem, nil),
12✔
83
                        subsystem: subsystem,
12✔
84
                }
12✔
85
                lndPkgLoggers = append(lndPkgLoggers, l)
12✔
86
                return l
12✔
87
        }
12✔
88

89
        // Loggers that need to be accessible from the lnd package can be placed
90
        // here. Loggers that are only used in sub modules can be added directly
91
        // by using the addSubLogger method. We declare all loggers so we never
92
        // run into a nil reference if they are used early. But the SetupLoggers
93
        // function should always be called as soon as possible to finish
94
        // setting them up properly with a root logger.
95
        ltndLog = addLndPkgLogger("LTND")
96
        rpcsLog = addLndPkgLogger("RPCS")
97
        srvrLog = addLndPkgLogger("SRVR")
98
        atplLog = addLndPkgLogger("ATPL")
99
)
100

101
// genSubLogger creates a logger for a subsystem. We provide an instance of
102
// a signal.Interceptor to be able to shutdown in the case of a critical error.
103
func genSubLogger(root *build.SubLoggerManager,
UNCOV
104
        interceptor signal.Interceptor) func(string) btclog.Logger {
×
UNCOV
105

×
UNCOV
106
        // Create a shutdown function which will request shutdown from our
×
UNCOV
107
        // interceptor if it is listening.
×
UNCOV
108
        shutdown := func() {
×
109
                if !interceptor.Listening() {
×
110
                        return
×
111
                }
×
112

113
                interceptor.RequestShutdown()
×
114
        }
115

116
        // Return a function which will create a sublogger from our root
117
        // logger without shutdown fn.
UNCOV
118
        return func(tag string) btclog.Logger {
×
UNCOV
119
                return root.GenSubLogger(tag, shutdown)
×
UNCOV
120
        }
×
121
}
122

123
// SetupLoggers initializes all package-global logger variables.
124
//
125
//nolint:ll
UNCOV
126
func SetupLoggers(root *build.SubLoggerManager, interceptor signal.Interceptor) {
×
UNCOV
127
        genLogger := genSubLogger(root, interceptor)
×
UNCOV
128

×
UNCOV
129
        // Now that we have the proper root logger, we can replace the
×
UNCOV
130
        // placeholder lnd package loggers.
×
UNCOV
131
        for _, l := range lndPkgLoggers {
×
UNCOV
132
                l.Logger = build.NewSubLogger(l.subsystem, genLogger)
×
UNCOV
133
                SetSubLogger(root, l.subsystem, l.Logger)
×
UNCOV
134
        }
×
135

136
        // Initialize loggers from packages outside of `lnd` first. The
137
        // packages below will overwrite the names of the loggers they import.
138
        // For instance, the logger in `neutrino.query` is overwritten by
139
        // `btcwallet.chain`, which is overwritten by `lnwallet`. To ensure the
140
        // overwriting works, we need to initialize the loggers here so they
141
        // can be overwritten later.
UNCOV
142
        AddV1SubLogger(root, "BTCN", interceptor, neutrino.UseLogger)
×
UNCOV
143
        AddV1SubLogger(root, "CMGR", interceptor, connmgr.UseLogger)
×
UNCOV
144
        AddV1SubLogger(root, "RPCC", interceptor, rpcclient.UseLogger)
×
UNCOV
145

×
UNCOV
146
        // Some of the loggers declared in the main lnd package are also used
×
UNCOV
147
        // in sub packages.
×
UNCOV
148
        signal.UseLogger(ltndLog)
×
UNCOV
149
        autopilot.UseLogger(atplLog)
×
UNCOV
150

×
UNCOV
151
        AddSubLogger(root, "LNWL", interceptor, lnwallet.UseLogger)
×
UNCOV
152
        AddSubLogger(root, "DISC", interceptor, discovery.UseLogger)
×
UNCOV
153
        AddSubLogger(root, "NTFN", interceptor, chainntnfs.UseLogger)
×
UNCOV
154
        AddSubLogger(root, "CHDB", interceptor, channeldb.UseLogger)
×
UNCOV
155
        AddSubLogger(root, "SQLB", interceptor, sqlbase.UseLogger)
×
UNCOV
156
        AddSubLogger(root, "HSWC", interceptor, htlcswitch.UseLogger)
×
UNCOV
157
        AddSubLogger(root, "CNCT", interceptor, contractcourt.UseLogger)
×
UNCOV
158
        AddSubLogger(root, "UTXN", interceptor, contractcourt.UseNurseryLogger)
×
UNCOV
159
        AddSubLogger(root, "BRAR", interceptor, contractcourt.UseBreachLogger)
×
UNCOV
160
        AddV1SubLogger(root, "SPHX", interceptor, sphinx.UseLogger)
×
UNCOV
161
        AddSubLogger(root, "SWPR", interceptor, sweep.UseLogger)
×
UNCOV
162
        AddSubLogger(root, "SGNR", interceptor, signrpc.UseLogger)
×
UNCOV
163
        AddSubLogger(root, "WLKT", interceptor, walletrpc.UseLogger)
×
UNCOV
164
        AddSubLogger(root, "ARPC", interceptor, autopilotrpc.UseLogger)
×
UNCOV
165
        AddSubLogger(root, "NRPC", interceptor, neutrinorpc.UseLogger)
×
UNCOV
166
        AddSubLogger(root, "DRPC", interceptor, devrpc.UseLogger)
×
UNCOV
167
        AddSubLogger(root, "INVC", interceptor, invoices.UseLogger)
×
UNCOV
168
        AddSubLogger(root, "NANN", interceptor, netann.UseLogger)
×
UNCOV
169
        AddSubLogger(root, "WTWR", interceptor, watchtower.UseLogger)
×
UNCOV
170
        AddSubLogger(root, "NTFR", interceptor, chainrpc.UseLogger)
×
UNCOV
171
        AddSubLogger(root, "IRPC", interceptor, invoicesrpc.UseLogger)
×
UNCOV
172
        AddSubLogger(root, "CHNF", interceptor, channelnotifier.UseLogger)
×
UNCOV
173
        AddSubLogger(root, "CHBU", interceptor, chanbackup.UseLogger)
×
UNCOV
174
        AddSubLogger(root, "PROM", interceptor, monitoring.UseLogger)
×
UNCOV
175
        AddSubLogger(root, "WTCL", interceptor, wtclient.UseLogger)
×
UNCOV
176
        AddSubLogger(root, "PRNF", interceptor, peernotifier.UseLogger)
×
UNCOV
177
        AddSubLogger(root, "CHFD", interceptor, chanfunding.UseLogger)
×
UNCOV
178
        AddSubLogger(root, "PEER", interceptor, peer.UseLogger)
×
UNCOV
179
        AddSubLogger(root, "CHCL", interceptor, chancloser.UseLogger)
×
UNCOV
180
        AddSubLogger(root, "LCHN", interceptor, localchans.UseLogger)
×
UNCOV
181

×
UNCOV
182
        AddSubLogger(root, routing.Subsystem, interceptor, routing.UseLogger)
×
UNCOV
183
        AddSubLogger(root, routerrpc.Subsystem, interceptor, routerrpc.UseLogger)
×
UNCOV
184
        AddSubLogger(root, chanfitness.Subsystem, interceptor, chanfitness.UseLogger)
×
UNCOV
185
        AddSubLogger(root, verrpc.Subsystem, interceptor, verrpc.UseLogger)
×
UNCOV
186
        AddSubLogger(root, healthcheck.Subsystem, interceptor, healthcheck.UseLogger)
×
UNCOV
187
        AddSubLogger(root, chainreg.Subsystem, interceptor, chainreg.UseLogger)
×
UNCOV
188
        AddSubLogger(root, chanacceptor.Subsystem, interceptor, chanacceptor.UseLogger)
×
UNCOV
189
        AddSubLogger(root, funding.Subsystem, interceptor, funding.UseLogger)
×
UNCOV
190
        AddSubLogger(root, cluster.Subsystem, interceptor, cluster.UseLogger)
×
UNCOV
191
        AddSubLogger(root, rpcperms.Subsystem, interceptor, rpcperms.UseLogger)
×
UNCOV
192
        AddSubLogger(root, tor.Subsystem, interceptor, tor.UseLogger)
×
UNCOV
193
        AddSubLogger(root, btcwallet.Subsystem, interceptor, btcwallet.UseLogger)
×
UNCOV
194
        AddSubLogger(root, rpcwallet.Subsystem, interceptor, rpcwallet.UseLogger)
×
UNCOV
195
        AddSubLogger(root, peersrpc.Subsystem, interceptor, peersrpc.UseLogger)
×
UNCOV
196
        AddSubLogger(root, graph.Subsystem, interceptor, graph.UseLogger)
×
UNCOV
197
        AddSubLogger(root, lncfg.Subsystem, interceptor, lncfg.UseLogger)
×
UNCOV
198
        AddSubLogger(
×
UNCOV
199
                root, blindedpath.Subsystem, interceptor, blindedpath.UseLogger,
×
UNCOV
200
        )
×
UNCOV
201
        AddV1SubLogger(root, graphdb.Subsystem, interceptor, graphdb.UseLogger)
×
UNCOV
202
        AddSubLogger(root, chainio.Subsystem, interceptor, chainio.UseLogger)
×
203
}
204

205
// AddSubLogger is a helper method to conveniently create and register the
206
// logger of one or more sub systems.
207
func AddSubLogger(root *build.SubLoggerManager, subsystem string,
UNCOV
208
        interceptor signal.Interceptor, useLoggers ...func(btclog.Logger)) {
×
UNCOV
209

×
UNCOV
210
        // genSubLogger will return a callback for creating a logger instance,
×
UNCOV
211
        // which we will give to the root logger.
×
UNCOV
212
        genLogger := genSubLogger(root, interceptor)
×
UNCOV
213

×
UNCOV
214
        // Create and register just a single logger to prevent them from
×
UNCOV
215
        // overwriting each other internally.
×
UNCOV
216
        logger := build.NewSubLogger(subsystem, genLogger)
×
UNCOV
217
        SetSubLogger(root, subsystem, logger, useLoggers...)
×
UNCOV
218
}
×
219

220
// SetSubLogger is a helper method to conveniently register the logger of a
221
// sub system.
222
func SetSubLogger(root *build.SubLoggerManager, subsystem string,
UNCOV
223
        logger btclog.Logger, useLoggers ...func(btclog.Logger)) {
×
UNCOV
224

×
UNCOV
225
        root.RegisterSubLogger(subsystem, logger)
×
UNCOV
226
        for _, useLogger := range useLoggers {
×
UNCOV
227
                useLogger(logger)
×
UNCOV
228
        }
×
229
}
230

231
// AddV1SubLogger is a helper method to conveniently create and register the
232
// logger of one or more sub systems.
233
func AddV1SubLogger(root *build.SubLoggerManager, subsystem string,
UNCOV
234
        interceptor signal.Interceptor, useLoggers ...func(btclogv1.Logger)) {
×
UNCOV
235

×
UNCOV
236
        // genSubLogger will return a callback for creating a logger instance,
×
UNCOV
237
        // which we will give to the root logger.
×
UNCOV
238
        genLogger := genSubLogger(root, interceptor)
×
UNCOV
239

×
UNCOV
240
        // Create and register just a single logger to prevent them from
×
UNCOV
241
        // overwriting each other internally.
×
UNCOV
242
        logger := build.NewSubLogger(subsystem, genLogger)
×
UNCOV
243
        SetV1SubLogger(root, subsystem, logger, useLoggers...)
×
UNCOV
244
}
×
245

246
// SetV1SubLogger is a helper method to conveniently register the logger of a
247
// sub system. Note that the btclog v2 logger implements the btclog v1 logger
248
// which is why we can pass the v2 logger to the UseLogger call-backs that
249
// expect the v1 logger.
250
func SetV1SubLogger(root *build.SubLoggerManager, subsystem string,
UNCOV
251
        logger btclog.Logger, useLoggers ...func(btclogv1.Logger)) {
×
UNCOV
252

×
UNCOV
253
        root.RegisterSubLogger(subsystem, logger)
×
UNCOV
254
        for _, useLogger := range useLoggers {
×
UNCOV
255
                useLogger(logger)
×
UNCOV
256
        }
×
257
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc