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

lightningnetwork / lnd / 12199391122

06 Dec 2024 01:10PM UTC coverage: 49.807% (-9.1%) from 58.933%
12199391122

push

github

web-flow
Merge pull request #9337 from Guayaba221/patch-1

chore: fix typo in ruby.md

100137 of 201051 relevant lines covered (49.81%)

2.07 hits per line

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

86.96
/watchtower/wtclient/stats.go
1
package wtclient
2

3
import (
4
        "fmt"
5
        "sync"
6
)
7

8
// ClientStats is a collection of in-memory statistics of the actions the client
9
// has performed since its creation.
10
type ClientStats struct {
11
        // NumTasksPending is the total number of backups that are pending to
12
        // be acknowledged by all active and exhausted watchtower sessions.
13
        NumTasksPending int
14

15
        // NumTasksAccepted is the total number of backups made to all active
16
        // and exhausted watchtower sessions.
17
        NumTasksAccepted int
18

19
        // NumTasksIneligible is the total number of backups that all active and
20
        // exhausted watchtower sessions have failed to acknowledge.
21
        NumTasksIneligible int
22

23
        // NumSessionsAcquired is the total number of new sessions made to
24
        // watchtowers.
25
        NumSessionsAcquired int
26

27
        // NumSessionsExhausted is the total number of watchtower sessions that
28
        // have been exhausted.
29
        NumSessionsExhausted int
30
}
31

32
// clientStats wraps ClientStats with a mutex so that it's members can be
33
// accessed in a thread safe manner.
34
type clientStats struct {
35
        mu sync.Mutex
36

37
        ClientStats
38
}
39

40
// taskReceived increments the number of backup requests the client has received
41
// from active channels.
42
func (s *clientStats) taskReceived() {
4✔
43
        s.mu.Lock()
4✔
44
        defer s.mu.Unlock()
4✔
45

4✔
46
        s.NumTasksPending++
4✔
47
}
4✔
48

49
// taskAccepted increments the number of tasks that have been assigned to active
50
// session queues, and are awaiting upload to a tower.
51
func (s *clientStats) taskAccepted() {
4✔
52
        s.mu.Lock()
4✔
53
        defer s.mu.Unlock()
4✔
54

4✔
55
        s.NumTasksAccepted++
4✔
56
        s.NumTasksPending--
4✔
57
}
4✔
58

59
// getStatsCopy returns a copy of the ClientStats.
60
func (s *clientStats) getStatsCopy() ClientStats {
4✔
61
        s.mu.Lock()
4✔
62
        defer s.mu.Unlock()
4✔
63

4✔
64
        return s.ClientStats
4✔
65
}
4✔
66

67
// taskIneligible increments the number of tasks that were unable to satisfy the
68
// active session queue's policy. These can potentially be retried later, but
69
// typically this means that the balance created dust outputs, so it may not be
70
// worth backing up at all.
71
func (s *clientStats) taskIneligible() {
×
72
        s.mu.Lock()
×
73
        defer s.mu.Unlock()
×
74

×
75
        s.NumTasksIneligible++
×
76
}
×
77

78
// sessionAcquired increments the number of sessions that have been successfully
79
// negotiated by the client during this execution.
80
func (s *clientStats) sessionAcquired() {
4✔
81
        s.mu.Lock()
4✔
82
        defer s.mu.Unlock()
4✔
83

4✔
84
        s.NumSessionsAcquired++
4✔
85
}
4✔
86

87
// sessionExhausted increments the number of session that have become full as a
88
// result of accepting backup tasks.
89
func (s *clientStats) sessionExhausted() {
4✔
90
        s.mu.Lock()
4✔
91
        defer s.mu.Unlock()
4✔
92

4✔
93
        s.NumSessionsExhausted++
4✔
94
}
4✔
95

96
// String returns a human-readable summary of the client's metrics.
97
func (s *clientStats) String() string {
4✔
98
        s.mu.Lock()
4✔
99
        defer s.mu.Unlock()
4✔
100

4✔
101
        return fmt.Sprintf("tasks(received=%d accepted=%d ineligible=%d) "+
4✔
102
                "sessions(acquired=%d exhausted=%d)", s.NumTasksPending,
4✔
103
                s.NumTasksAccepted, s.NumTasksIneligible, s.NumSessionsAcquired,
4✔
104
                s.NumSessionsExhausted)
4✔
105
}
4✔
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