Skip to content

Commit e07600f

Browse files
authored
Export a metric of total number of leaves fetched (#2023)
1 parent 1c5fd2f commit e07600f

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ tolerate 2 nodes being unavailable, instead of just 1).
2424
A potential deadlock condition in the log sequencer when the process is
2525
attempting to exit has been addressed.
2626

27+
#### Monitoring & Metrics
28+
A count of the total number of individual leaves the logserver attempts to
29+
fetch via the GetEntries.\* API methods has been added.
30+
2731
### Map Changes
2832

2933
The verifiable map is still experimental. APIs, such as SetLeaves, have been

server/log_rpc_server.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ type TrillianLogRPCServer struct {
5050
timeSource clock.TimeSource
5151
leafCounter monitoring.Counter
5252
proofIndexPercentiles monitoring.Histogram
53+
fetchedLeaves monitoring.Counter
5354
}
5455

5556
// NewTrillianLogRPCServer creates a new RPC server backed by a LogStorageProvider.
@@ -71,6 +72,10 @@ func NewTrillianLogRPCServer(registry extension.Registry, timeSource clock.TimeS
7172
"Count of inclusion proof request index using percentage of current log size at the time",
7273
monitoring.PercentileBuckets(1),
7374
),
75+
fetchedLeaves: mf.NewCounter(
76+
"fetched_leaves",
77+
"Count of individual leaves fetched through get-entries calls",
78+
),
7479
}
7580
}
7681

@@ -500,6 +505,7 @@ func (t *TrillianLogRPCServer) GetLeavesByIndex(ctx context.Context, req *trilli
500505
}
501506
defer t.closeAndLog(ctx, tree.TreeId, tx, "GetLeavesByIndex")
502507

508+
t.fetchedLeaves.Add(float64(len(req.LeafIndex)))
503509
leaves, err := tx.GetLeavesByIndex(ctx, req.LeafIndex)
504510
if err != nil {
505511
return nil, err
@@ -553,6 +559,7 @@ func (t *TrillianLogRPCServer) GetLeavesByRange(ctx context.Context, req *trilli
553559
r := &trillian.GetLeavesByRangeResponse{SignedLogRoot: slr}
554560

555561
if req.StartIndex < int64(root.TreeSize) {
562+
t.fetchedLeaves.Add(float64(req.Count))
556563
leaves, err := tx.GetLeavesByRange(ctx, req.StartIndex, req.Count)
557564
if err != nil {
558565
return nil, err
@@ -589,6 +596,7 @@ func (t *TrillianLogRPCServer) GetLeavesByHash(ctx context.Context, req *trillia
589596
}
590597
defer t.closeAndLog(ctx, tree.TreeId, tx, "GetLeavesByHash")
591598

599+
t.fetchedLeaves.Add(float64(len(req.LeafHash)))
592600
leaves, err := tx.GetLeavesByHash(ctx, req.LeafHash, req.OrderBySequence)
593601
if err != nil {
594602
return nil, err

server/log_rpc_server_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,10 @@ func TestGetLeavesByRange(t *testing.T) {
425425
if got := rsp.Leaves; !cmp.Equal(got, test.want, cmp.Comparer(proto.Equal)) {
426426
t.Errorf("GetLeavesByRange(%d, %+d)=%+v; want %+v", req.StartIndex, req.Count, got, test.want)
427427
}
428+
429+
if gotCount, wantCount := server.fetchedLeaves.Value(), float64(test.count); gotCount != wantCount {
430+
t.Errorf("GetLeavesByRange() incremented fetched count by %f, want %f", gotCount, wantCount)
431+
}
428432
}
429433
}
430434

0 commit comments

Comments
 (0)