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

lightningnetwork / lnd / 13440912774

20 Feb 2025 05:14PM UTC coverage: 57.697% (-1.1%) from 58.802%
13440912774

Pull #9535

github

guggero
GitHub: remove duplicate caching

Turns out that actions/setup-go starting with @v4 also adds caching.
With that, our cache size on disk has almost doubled, leading to the
GitHub runner running out of space in certain situation.
We fix that by disabling the automated caching since we already have our
own, custom-tailored version.
Pull Request #9535: GitHub: remove duplicate caching

103519 of 179417 relevant lines covered (57.7%)

24825.3 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,
104
        interceptor signal.Interceptor) func(string) btclog.Logger {
×
105

×
106
        // Create a shutdown function which will request shutdown from our
×
107
        // interceptor if it is listening.
×
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.
118
        return func(tag string) btclog.Logger {
×
119
                return root.GenSubLogger(tag, shutdown)
×
120
        }
×
121
}
122

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

×
129
        // Now that we have the proper root logger, we can replace the
×
130
        // placeholder lnd package loggers.
×
131
        for _, l := range lndPkgLoggers {
×
132
                l.Logger = build.NewSubLogger(l.subsystem, genLogger)
×
133
                SetSubLogger(root, l.subsystem, l.Logger)
×
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.
142
        AddV1SubLogger(root, "BTCN", interceptor, neutrino.UseLogger)
×
143
        AddV1SubLogger(root, "CMGR", interceptor, connmgr.UseLogger)
×
144
        AddV1SubLogger(root, "RPCC", interceptor, rpcclient.UseLogger)
×
145

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

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

×
182
        AddSubLogger(root, routing.Subsystem, interceptor, routing.UseLogger)
×
183
        AddSubLogger(root, routerrpc.Subsystem, interceptor, routerrpc.UseLogger)
×
184
        AddSubLogger(root, chanfitness.Subsystem, interceptor, chanfitness.UseLogger)
×
185
        AddSubLogger(root, verrpc.Subsystem, interceptor, verrpc.UseLogger)
×
186
        AddSubLogger(root, healthcheck.Subsystem, interceptor, healthcheck.UseLogger)
×
187
        AddSubLogger(root, chainreg.Subsystem, interceptor, chainreg.UseLogger)
×
188
        AddSubLogger(root, chanacceptor.Subsystem, interceptor, chanacceptor.UseLogger)
×
189
        AddSubLogger(root, funding.Subsystem, interceptor, funding.UseLogger)
×
190
        AddSubLogger(root, cluster.Subsystem, interceptor, cluster.UseLogger)
×
191
        AddSubLogger(root, rpcperms.Subsystem, interceptor, rpcperms.UseLogger)
×
192
        AddSubLogger(root, tor.Subsystem, interceptor, tor.UseLogger)
×
193
        AddSubLogger(root, btcwallet.Subsystem, interceptor, btcwallet.UseLogger)
×
194
        AddSubLogger(root, rpcwallet.Subsystem, interceptor, rpcwallet.UseLogger)
×
195
        AddSubLogger(root, peersrpc.Subsystem, interceptor, peersrpc.UseLogger)
×
196
        AddSubLogger(root, graph.Subsystem, interceptor, graph.UseLogger)
×
197
        AddSubLogger(root, lncfg.Subsystem, interceptor, lncfg.UseLogger)
×
198
        AddSubLogger(
×
199
                root, blindedpath.Subsystem, interceptor, blindedpath.UseLogger,
×
200
        )
×
201
        AddV1SubLogger(root, graphdb.Subsystem, interceptor, graphdb.UseLogger)
×
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,
208
        interceptor signal.Interceptor, useLoggers ...func(btclog.Logger)) {
×
209

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

×
214
        // Create and register just a single logger to prevent them from
×
215
        // overwriting each other internally.
×
216
        logger := build.NewSubLogger(subsystem, genLogger)
×
217
        SetSubLogger(root, subsystem, logger, useLoggers...)
×
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,
223
        logger btclog.Logger, useLoggers ...func(btclog.Logger)) {
×
224

×
225
        root.RegisterSubLogger(subsystem, logger)
×
226
        for _, useLogger := range useLoggers {
×
227
                useLogger(logger)
×
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,
234
        interceptor signal.Interceptor, useLoggers ...func(btclogv1.Logger)) {
×
235

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

×
240
        // Create and register just a single logger to prevent them from
×
241
        // overwriting each other internally.
×
242
        logger := build.NewSubLogger(subsystem, genLogger)
×
243
        SetV1SubLogger(root, subsystem, logger, useLoggers...)
×
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,
251
        logger btclog.Logger, useLoggers ...func(btclogv1.Logger)) {
×
252

×
253
        root.RegisterSubLogger(subsystem, logger)
×
254
        for _, useLogger := range useLoggers {
×
255
                useLogger(logger)
×
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