Skip to content

Commit 62ee130

Browse files
Merge branch 'dev' into bump-coreth
2 parents bc3dedb + 272e5bd commit 62ee130

File tree

11 files changed

+166
-56
lines changed

11 files changed

+166
-56
lines changed

chains/manager.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ func (m *manager) createAvalancheChain(
514514

515515
// Asynchronously passes messages from the network to the consensus engine
516516
handler := &router.Handler{}
517-
handler.Initialize(
517+
err = handler.Initialize(
518518
engine,
519519
validators,
520520
msgChan,
@@ -533,7 +533,7 @@ func (m *manager) createAvalancheChain(
533533
Handler: handler,
534534
VM: vm,
535535
Ctx: ctx,
536-
}, nil
536+
}, err
537537
}
538538

539539
// Create a linear chain using the Snowman consensus engine
@@ -623,7 +623,7 @@ func (m *manager) createSnowmanChain(
623623

624624
// Asynchronously passes messages from the network to the consensus engine
625625
handler := &router.Handler{}
626-
handler.Initialize(
626+
err = handler.Initialize(
627627
engine,
628628
validators,
629629
msgChan,
@@ -635,6 +635,9 @@ func (m *manager) createSnowmanChain(
635635
consensusParams.Metrics,
636636
delay,
637637
)
638+
if err != nil {
639+
return nil, fmt.Errorf("couldn't initialize message handler: %s", err)
640+
}
638641

639642
// Register health checks
640643
chainAlias, err := m.PrimaryAlias(ctx.ChainID)

snow/networking/router/chain_router_test.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ func TestShutdown(t *testing.T) {
5353
engine.ShutdownF = func() error { shutdownCalled <- struct{}{}; return nil }
5454

5555
handler := &Handler{}
56-
handler.Initialize(
56+
err = handler.Initialize(
5757
&engine,
5858
vdrs,
5959
nil,
@@ -65,6 +65,7 @@ func TestShutdown(t *testing.T) {
6565
prometheus.NewRegistry(),
6666
&Delay{},
6767
)
68+
assert.NoError(t, err)
6869

6970
go handler.Dispatch()
7071

@@ -127,7 +128,7 @@ func TestShutdownTimesOut(t *testing.T) {
127128
engine.ShutdownF = func() error { *closed++; return nil }
128129

129130
handler := &Handler{}
130-
handler.Initialize(
131+
err = handler.Initialize(
131132
&engine,
132133
vdrs,
133134
nil,
@@ -139,6 +140,7 @@ func TestShutdownTimesOut(t *testing.T) {
139140
prometheus.NewRegistry(),
140141
&Delay{},
141142
)
143+
assert.NoError(t, err)
142144

143145
chainRouter.AddChain(handler)
144146

@@ -226,7 +228,7 @@ func TestRouterTimeout(t *testing.T) {
226228
engine.ContextF = snow.DefaultContextTest
227229

228230
handler := &Handler{}
229-
handler.Initialize(
231+
err = handler.Initialize(
230232
&engine,
231233
validators.NewSet(),
232234
nil,
@@ -238,6 +240,7 @@ func TestRouterTimeout(t *testing.T) {
238240
prometheus.NewRegistry(),
239241
&Delay{},
240242
)
243+
assert.NoError(t, err)
241244

242245
chainRouter.AddChain(handler)
243246
go handler.Dispatch()
@@ -293,7 +296,7 @@ func TestRouterClearTimeouts(t *testing.T) {
293296
engine.ContextF = snow.DefaultContextTest
294297

295298
handler := &Handler{}
296-
handler.Initialize(
299+
err = handler.Initialize(
297300
&engine,
298301
validators.NewSet(),
299302
nil,
@@ -305,6 +308,7 @@ func TestRouterClearTimeouts(t *testing.T) {
305308
prometheus.NewRegistry(),
306309
&Delay{},
307310
)
311+
assert.NoError(t, err)
308312

309313
chainRouter.AddChain(handler)
310314
go handler.Dispatch()

snow/networking/router/handler.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ const (
9292
// Handler passes incoming messages from the network to the consensus engine
9393
// (Actually, it receives the incoming messages from a ChainRouter, but same difference)
9494
type Handler struct {
95-
metrics
95+
metrics handlerMetrics
9696

9797
validators validators.Set
9898

@@ -132,7 +132,7 @@ func (h *Handler) Initialize(
132132
namespace string,
133133
metrics prometheus.Registerer,
134134
delay *Delay,
135-
) {
135+
) error {
136136
h.ctx = engine.Context()
137137
if err := h.metrics.Initialize(namespace, metrics); err != nil {
138138
h.ctx.Log.Warn("initializing handler metrics errored with: %s", err)
@@ -162,7 +162,7 @@ func (h *Handler) Initialize(
162162

163163
h.cpuTracker = tracker.NewCPUTracker(uptime.IntervalFactory{}, cpuInterval)
164164
msgTracker := tracker.NewMessageTracker()
165-
msgManager := NewMsgManager(
165+
msgManager, err := NewMsgManager(
166166
validators,
167167
h.ctx.Log,
168168
msgTracker,
@@ -171,7 +171,12 @@ func (h *Handler) Initialize(
171171
maxNonStakerPendingMsgs,
172172
stakerMsgPortion,
173173
stakerCPUPortion,
174+
namespace,
175+
metrics,
174176
)
177+
if err != nil {
178+
return err
179+
}
175180

176181
h.serviceQueue, h.msgSema = newMultiLevelQueue(
177182
msgManager,
@@ -184,6 +189,7 @@ func (h *Handler) Initialize(
184189
h.engine = engine
185190
h.validators = validators
186191
h.delay = delay
192+
return nil
187193
}
188194

189195
// Context of this Handler
@@ -282,10 +288,10 @@ func (h *Handler) dispatchMsg(msg message) {
282288
switch msg.messageType {
283289
case constants.NotifyMsg:
284290
err = h.engine.Notify(msg.notification)
285-
h.notify.Observe(float64(h.clock.Time().Sub(startTime)))
291+
h.metrics.notify.Observe(float64(h.clock.Time().Sub(startTime)))
286292
case constants.GossipMsg:
287293
err = h.engine.Gossip()
288-
h.gossip.Observe(float64(h.clock.Time().Sub(startTime)))
294+
h.metrics.gossip.Observe(float64(h.clock.Time().Sub(startTime)))
289295
default:
290296
err = h.handleValidatorMsg(msg, startTime)
291297
}
@@ -536,7 +542,7 @@ func (h *Handler) shutdownDispatch() {
536542
go h.toClose()
537543
}
538544
h.closing.SetValue(true)
539-
h.shutdown.Observe(float64(time.Since(startTime)))
545+
h.metrics.shutdown.Observe(float64(time.Since(startTime)))
540546
close(h.closed)
541547
}
542548

@@ -585,7 +591,7 @@ func (h *Handler) handleValidatorMsg(msg message, startTime time.Time) error {
585591
endTime := h.clock.Time()
586592
timeConsumed := endTime.Sub(startTime)
587593

588-
histogram := h.getMSGHistogram(msg.messageType)
594+
histogram := h.metrics.getMSGHistogram(msg.messageType)
589595
histogram.Observe(float64(timeConsumed))
590596

591597
h.cpuTracker.UtilizeTime(msg.validatorID, startTime, endTime)

snow/networking/router/metrics.go renamed to snow/networking/router/handler_metrics.go

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ func initHistogram(namespace, name string, registerer prometheus.Registerer, err
3232
return histogram
3333
}
3434

35-
type metrics struct {
36-
namespace string
37-
registerer prometheus.Registerer
38-
pending prometheus.Gauge
39-
dropped, expired, throttled prometheus.Counter
35+
type handlerMetrics struct {
36+
namespace string
37+
registerer prometheus.Registerer
38+
pending prometheus.Gauge
39+
dropped, expired prometheus.Counter
4040
getAcceptedFrontier, acceptedFrontier, getAcceptedFrontierFailed,
4141
getAccepted, accepted, getAcceptedFailed,
4242
getAncestors, multiPut, getAncestorsFailed,
@@ -50,7 +50,7 @@ type metrics struct {
5050
}
5151

5252
// Initialize implements the Engine interface
53-
func (m *metrics) Initialize(namespace string, registerer prometheus.Registerer) error {
53+
func (m *handlerMetrics) Initialize(namespace string, registerer prometheus.Registerer) error {
5454
m.namespace = namespace
5555
m.registerer = registerer
5656
errs := wrappers.Errs{}
@@ -83,15 +83,6 @@ func (m *metrics) Initialize(namespace string, registerer prometheus.Registerer)
8383
errs.Add(fmt.Errorf("failed to register expired statistics due to %w", err))
8484
}
8585

86-
m.throttled = prometheus.NewCounter(prometheus.CounterOpts{
87-
Namespace: namespace,
88-
Name: "throttled",
89-
Help: "Number of throttled events",
90-
})
91-
if err := registerer.Register(m.throttled); err != nil {
92-
errs.Add(fmt.Errorf("failed to register throttled statistics due to %w", err))
93-
}
94-
9586
m.getAcceptedFrontier = initHistogram(namespace, "get_accepted_frontier", registerer, &errs)
9687
m.acceptedFrontier = initHistogram(namespace, "accepted_frontier", registerer, &errs)
9788
m.getAcceptedFrontierFailed = initHistogram(namespace, "get_accepted_frontier_failed", registerer, &errs)
@@ -135,7 +126,7 @@ func (m *metrics) Initialize(namespace string, registerer prometheus.Registerer)
135126
return errs.Err
136127
}
137128

138-
func (m *metrics) registerTierStatistics(tier int) (prometheus.Gauge, prometheus.Histogram, error) {
129+
func (m *handlerMetrics) registerTierStatistics(tier int) (prometheus.Gauge, prometheus.Histogram, error) {
139130
errs := wrappers.Errs{}
140131

141132
gauge := prometheus.NewGauge(prometheus.GaugeOpts{
@@ -159,7 +150,7 @@ func (m *metrics) registerTierStatistics(tier int) (prometheus.Gauge, prometheus
159150
return gauge, histogram, errs.Err
160151
}
161152

162-
func (m *metrics) getMSGHistogram(msg constants.MsgType) prometheus.Histogram {
153+
func (m *handlerMetrics) getMSGHistogram(msg constants.MsgType) prometheus.Histogram {
163154
switch msg {
164155
case constants.GetAcceptedFrontierMsg:
165156
return m.getAcceptedFrontier

snow/networking/router/handler_test.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"time"
1010

1111
"github.com/prometheus/client_golang/prometheus"
12+
"github.com/stretchr/testify/assert"
1213

1314
"github.com/ava-labs/avalanchego/ids"
1415
"github.com/ava-labs/avalanchego/snow"
@@ -38,7 +39,7 @@ func TestHandlerDropsTimedOutMessages(t *testing.T) {
3839
if err := vdrs.AddWeight(vdr0, 1); err != nil {
3940
t.Fatal(err)
4041
}
41-
handler.Initialize(
42+
err := handler.Initialize(
4243
&engine,
4344
vdrs,
4445
nil,
@@ -50,6 +51,7 @@ func TestHandlerDropsTimedOutMessages(t *testing.T) {
5051
prometheus.NewRegistry(),
5152
&Delay{},
5253
)
54+
assert.NoError(t, err)
5355

5456
currentTime := time.Now()
5557
handler.clock.Set(currentTime)
@@ -82,7 +84,7 @@ func TestHandlerDoesntDrop(t *testing.T) {
8284

8385
handler := &Handler{}
8486
validators := validators.NewSet()
85-
handler.Initialize(
87+
err := handler.Initialize(
8688
&engine,
8789
validators,
8890
nil,
@@ -94,6 +96,7 @@ func TestHandlerDoesntDrop(t *testing.T) {
9496
prometheus.NewRegistry(),
9597
&Delay{},
9698
)
99+
assert.NoError(t, err)
97100

98101
handler.GetAcceptedFrontier(ids.ShortID{}, 1, time.Time{})
99102
go handler.Dispatch()
@@ -119,7 +122,7 @@ func TestHandlerClosesOnError(t *testing.T) {
119122
}
120123

121124
handler := &Handler{}
122-
handler.Initialize(
125+
err := handler.Initialize(
123126
&engine,
124127
validators.NewSet(),
125128
nil,
@@ -131,6 +134,8 @@ func TestHandlerClosesOnError(t *testing.T) {
131134
prometheus.NewRegistry(),
132135
&Delay{},
133136
)
137+
assert.NoError(t, err)
138+
134139
handler.clock.Set(time.Now())
135140

136141
handler.toClose = func() {
@@ -163,7 +168,7 @@ func TestHandlerDropsGossipDuringBootstrapping(t *testing.T) {
163168
}
164169

165170
handler := &Handler{}
166-
handler.Initialize(
171+
err := handler.Initialize(
167172
&engine,
168173
validators.NewSet(),
169174
nil,
@@ -175,6 +180,8 @@ func TestHandlerDropsGossipDuringBootstrapping(t *testing.T) {
175180
prometheus.NewRegistry(),
176181
&Delay{},
177182
)
183+
assert.NoError(t, err)
184+
178185
handler.clock.Set(time.Now())
179186

180187
go handler.Dispatch()

0 commit comments

Comments
 (0)