Skip to content

Commit 9963de0

Browse files
committed
use inspector builder in all places libp2p node is built
1 parent 25a1c3f commit 9963de0

File tree

9 files changed

+70
-47
lines changed

9 files changed

+70
-47
lines changed

cmd/access/node_builder/access_node_builder.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1089,8 +1089,11 @@ func (builder *FlowAccessNodeBuilder) initPublicLibP2PFactory(networkKey crypto.
10891089
builder.GossipSubConfig.LocalMeshLogInterval)
10901090

10911091
// setup RPC inspectors
1092-
rpcInspectorBuilder := inspector.NewGossipSubInspectorBuilder(builder.Logger, builder.SporkID, builder.GossipSubRPCInspectorsConfig, builder.GossipSubInspectorNotifDistributor, builder.Metrics.Network, builder.MetricsRegisterer)
1093-
rpcInspectors, err := rpcInspectorBuilder.SetPublicNetwork(p2p.PublicNetworkEnabled).SetMetricsEnabled(builder.MetricsEnabled).Build()
1092+
rpcInspectorBuilder := inspector.NewGossipSubInspectorBuilder(builder.Logger, builder.SporkID, builder.GossipSubRPCInspectorsConfig, builder.GossipSubInspectorNotifDistributor)
1093+
rpcInspectors, err := rpcInspectorBuilder.
1094+
SetPublicNetwork(p2p.PublicNetworkEnabled).
1095+
SetMetrics(builder.Metrics.Network, builder.MetricsRegisterer).
1096+
SetMetricsEnabled(builder.MetricsEnabled).Build()
10941097
if err != nil {
10951098
return nil, fmt.Errorf("failed to create gossipsub rpc inspectors: %w", err)
10961099
}

cmd/node_builder.go

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ import (
2828
"github.com/onflow/flow-go/network/p2p/connection"
2929
"github.com/onflow/flow-go/network/p2p/distributor"
3030
"github.com/onflow/flow-go/network/p2p/dns"
31-
"github.com/onflow/flow-go/network/p2p/inspector"
32-
"github.com/onflow/flow-go/network/p2p/inspector/validation"
3331
"github.com/onflow/flow-go/network/p2p/middleware"
3432
"github.com/onflow/flow-go/network/p2p/p2pbuilder"
3533
inspectorbuilder "github.com/onflow/flow-go/network/p2p/p2pbuilder/inspector"
@@ -302,28 +300,8 @@ func DefaultBaseConfig() *BaseConfig {
302300
BandwidthRateLimit: 0,
303301
BandwidthBurstLimit: middleware.LargeMsgMaxUnicastMsgSize,
304302
},
305-
GossipSubConfig: p2pbuilder.DefaultGossipSubConfig(),
306-
GossipSubRPCInspectorsConfig: &inspectorbuilder.GossipSubRPCInspectorsConfig{
307-
GossipSubRPCInspectorNotificationCacheSize: distributor.DefaultGossipSubInspectorNotificationQueueCacheSize,
308-
ValidationInspectorConfigs: &inspectorbuilder.GossipSubRPCValidationInspectorConfigs{
309-
NumberOfWorkers: validation.DefaultNumberOfWorkers,
310-
CacheSize: validation.DefaultControlMsgValidationInspectorQueueCacheSize,
311-
GraftLimits: map[string]int{
312-
validation.DiscardThresholdMapKey: validation.DefaultGraftDiscardThreshold,
313-
validation.SafetyThresholdMapKey: validation.DefaultGraftSafetyThreshold,
314-
validation.RateLimitMapKey: validation.DefaultGraftRateLimit,
315-
},
316-
PruneLimits: map[string]int{
317-
validation.DiscardThresholdMapKey: validation.DefaultPruneDiscardThreshold,
318-
validation.SafetyThresholdMapKey: validation.DefaultPruneSafetyThreshold,
319-
validation.RateLimitMapKey: validation.DefaultPruneRateLimit,
320-
},
321-
},
322-
MetricsInspectorConfigs: &inspectorbuilder.GossipSubRPCMetricsInspectorConfigs{
323-
NumberOfWorkers: inspector.DefaultControlMsgMetricsInspectorNumberOfWorkers,
324-
CacheSize: inspector.DefaultControlMsgMetricsInspectorQueueCacheSize,
325-
},
326-
},
303+
GossipSubConfig: p2pbuilder.DefaultGossipSubConfig(),
304+
GossipSubRPCInspectorsConfig: inspectorbuilder.DefaultGossipSubRPCInspectorsConfig(),
327305
DNSCacheTTL: dns.DefaultTimeToLive,
328306
LibP2PResourceManagerConfig: p2pbuilder.DefaultResourceManagerConfig(),
329307
ConnectionManagerConfig: connection.DefaultConnManagerConfig(),

cmd/observer/node_builder/observer_builder.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -867,8 +867,11 @@ func (builder *ObserverServiceBuilder) initPublicLibP2PFactory(networkKey crypto
867867
builder.IdentityProvider,
868868
builder.GossipSubConfig.LocalMeshLogInterval)
869869

870-
rpcInspectorBuilder := inspector.NewGossipSubInspectorBuilder(builder.Logger, builder.SporkID, builder.GossipSubRPCInspectorsConfig, builder.GossipSubInspectorNotifDistributor, builder.Metrics.Network, builder.MetricsRegisterer)
871-
rpcInspectors, err := rpcInspectorBuilder.SetPublicNetwork(p2p.PublicNetworkEnabled).SetMetricsEnabled(builder.MetricsEnabled).Build()
870+
rpcInspectorBuilder := inspector.NewGossipSubInspectorBuilder(builder.Logger, builder.SporkID, builder.GossipSubRPCInspectorsConfig, builder.GossipSubInspectorNotifDistributor)
871+
rpcInspectors, err := rpcInspectorBuilder.
872+
SetPublicNetwork(p2p.PublicNetworkEnabled).
873+
SetMetrics(builder.Metrics.Network, builder.MetricsRegisterer).
874+
SetMetricsEnabled(builder.MetricsEnabled).Build()
872875
if err != nil {
873876
return nil, fmt.Errorf("failed to create gossipsub rpc inspectors: %w", err)
874877
}

cmd/scaffold.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -377,8 +377,11 @@ func (fnb *FlowNodeBuilder) EnqueueNetworkInit() {
377377

378378
fnb.GossipSubInspectorNotifDistributor = BuildGossipsubRPCValidationInspectorNotificationDisseminator(fnb.GossipSubRPCInspectorsConfig.GossipSubRPCInspectorNotificationCacheSize, fnb.MetricsRegisterer, fnb.Logger, fnb.MetricsEnabled)
379379

380-
rpcInspectorBuilder := inspector.NewGossipSubInspectorBuilder(fnb.Logger, fnb.SporkID, fnb.GossipSubRPCInspectorsConfig, fnb.GossipSubInspectorNotifDistributor, fnb.Metrics.Network, fnb.MetricsRegisterer)
381-
rpcInspectors, err := rpcInspectorBuilder.SetPublicNetwork(p2p.PublicNetworkDisabled).SetMetricsEnabled(fnb.MetricsEnabled).Build()
380+
rpcInspectorBuilder := inspector.NewGossipSubInspectorBuilder(fnb.Logger, fnb.SporkID, fnb.GossipSubRPCInspectorsConfig, fnb.GossipSubInspectorNotifDistributor)
381+
rpcInspectors, err := rpcInspectorBuilder.
382+
SetPublicNetwork(p2p.PublicNetworkDisabled).
383+
SetMetrics(fnb.Metrics.Network, fnb.MetricsRegisterer).
384+
SetMetricsEnabled(fnb.MetricsEnabled).Build()
382385
if err != nil {
383386
return nil, fmt.Errorf("failed to create gossipsub rpc inspectors: %w", err)
384387
}

follower/follower_builder.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -597,8 +597,11 @@ func (builder *FollowerServiceBuilder) initPublicLibP2PFactory(networkKey crypto
597597
builder.IdentityProvider,
598598
builder.GossipSubConfig.LocalMeshLogInterval)
599599

600-
rpcInspectorBuilder := inspector.NewGossipSubInspectorBuilder(builder.Logger, builder.SporkID, builder.GossipSubRPCInspectorsConfig, builder.GossipSubInspectorNotifDistributor, builder.Metrics.Network, builder.MetricsRegisterer)
601-
rpcInspectors, err := rpcInspectorBuilder.SetPublicNetwork(p2p.PublicNetworkEnabled).SetMetricsEnabled(builder.MetricsEnabled).Build()
600+
rpcInspectorBuilder := inspector.NewGossipSubInspectorBuilder(builder.Logger, builder.SporkID, builder.GossipSubRPCInspectorsConfig, builder.GossipSubInspectorNotifDistributor)
601+
rpcInspectors, err := rpcInspectorBuilder.
602+
SetPublicNetwork(p2p.PublicNetworkEnabled).
603+
SetMetrics(builder.Metrics.Network, builder.MetricsRegisterer).
604+
SetMetricsEnabled(builder.MetricsEnabled).Build()
602605
if err != nil {
603606
return nil, fmt.Errorf("failed to create gossipsub rpc inspectors for public libp2p node: %w", err)
604607
}

insecure/corruptlibp2p/libp2p_node_factory.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,8 @@ import (
1515
"github.com/onflow/flow-go/module"
1616
"github.com/onflow/flow-go/network/p2p"
1717
"github.com/onflow/flow-go/network/p2p/distributor"
18-
"github.com/onflow/flow-go/network/p2p/inspector"
19-
"github.com/onflow/flow-go/network/p2p/inspector/validation"
2018
"github.com/onflow/flow-go/network/p2p/p2pbuilder"
2119
inspectorbuilder "github.com/onflow/flow-go/network/p2p/p2pbuilder/inspector"
22-
"github.com/onflow/flow-go/network/p2p/p2pnode"
2320
)
2421

2522
// NewCorruptLibP2PNodeFactory wrapper around the original DefaultLibP2PNodeFactory. Nodes returned from this factory func will be corrupted libp2p nodes.
@@ -46,10 +43,13 @@ func NewCorruptLibP2PNodeFactory(
4643
panic("illegal chain id for using corrupt libp2p node")
4744
}
4845

49-
gossipSubMetrics := p2pnode.NewGossipSubControlMessageMetrics(metrics, log)
50-
metricsInspector := inspector.NewControlMsgMetricsInspector(log, gossipSubMetrics, inspector.DefaultControlMsgMetricsInspectorNumberOfWorkers)
51-
rpcValidationInspector := validation.NewControlMsgValidationInspector(log, sporkId, inspectorbuilder.DefaultRPCValidationConfig(), distributor.DefaultGossipSubInspectorNotificationDistributor(log))
52-
gossipSubCfg.RPCInspectors = []p2p.GossipSubRPCInspector{metricsInspector, rpcValidationInspector}
46+
rpcInspectorBuilder := inspectorbuilder.NewGossipSubInspectorBuilder(log, sporkId, inspectorbuilder.DefaultGossipSubRPCInspectorsConfig(), distributor.DefaultGossipSubInspectorNotificationDistributor(log))
47+
rpcInspectors, err := rpcInspectorBuilder.Build()
48+
if err != nil {
49+
return nil, fmt.Errorf("failed to create gossipsub rpc inspectors for public libp2p node: %w", err)
50+
}
51+
gossipSubCfg.RPCInspectors = rpcInspectors
52+
5353
builder, err := p2pbuilder.DefaultNodeBuilder(
5454
log,
5555
address,

insecure/rpc_inspector/metrics_inspector_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
pubsub "github.com/libp2p/go-libp2p-pubsub"
99
"github.com/libp2p/go-libp2p/core/peer"
1010
"github.com/stretchr/testify/mock"
11+
"github.com/stretchr/testify/require"
1112
"go.uber.org/atomic"
1213

1314
"github.com/onflow/flow-go/insecure/corruptlibp2p"
@@ -20,7 +21,6 @@ import (
2021
mockp2p "github.com/onflow/flow-go/network/p2p/mock"
2122
p2ptest "github.com/onflow/flow-go/network/p2p/test"
2223
"github.com/onflow/flow-go/utils/unittest"
23-
"github.com/stretchr/testify/require"
2424
)
2525

2626
// TestMetricsInspector_ObserveRPC ensures that the gossipsub rpc metrics inspector observes metrics for control messages as expected.

network/p2p/p2pbuilder/inspector/rpc_inspector_builder.go

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/onflow/flow-go/module/mempool/queue"
1313
"github.com/onflow/flow-go/module/metrics"
1414
"github.com/onflow/flow-go/network/p2p"
15+
"github.com/onflow/flow-go/network/p2p/distributor"
1516
"github.com/onflow/flow-go/network/p2p/inspector"
1617
"github.com/onflow/flow-go/network/p2p/inspector/validation"
1718
"github.com/onflow/flow-go/network/p2p/p2pnode"
@@ -49,6 +50,30 @@ type GossipSubRPCInspectorsConfig struct {
4950
MetricsInspectorConfigs *GossipSubRPCMetricsInspectorConfigs
5051
}
5152

53+
func DefaultGossipSubRPCInspectorsConfig() *GossipSubRPCInspectorsConfig {
54+
return &GossipSubRPCInspectorsConfig{
55+
GossipSubRPCInspectorNotificationCacheSize: distributor.DefaultGossipSubInspectorNotificationQueueCacheSize,
56+
ValidationInspectorConfigs: &GossipSubRPCValidationInspectorConfigs{
57+
NumberOfWorkers: validation.DefaultNumberOfWorkers,
58+
CacheSize: validation.DefaultControlMsgValidationInspectorQueueCacheSize,
59+
GraftLimits: map[string]int{
60+
validation.DiscardThresholdMapKey: validation.DefaultGraftDiscardThreshold,
61+
validation.SafetyThresholdMapKey: validation.DefaultGraftSafetyThreshold,
62+
validation.RateLimitMapKey: validation.DefaultGraftRateLimit,
63+
},
64+
PruneLimits: map[string]int{
65+
validation.DiscardThresholdMapKey: validation.DefaultPruneDiscardThreshold,
66+
validation.SafetyThresholdMapKey: validation.DefaultPruneSafetyThreshold,
67+
validation.RateLimitMapKey: validation.DefaultPruneRateLimit,
68+
},
69+
},
70+
MetricsInspectorConfigs: &GossipSubRPCMetricsInspectorConfigs{
71+
NumberOfWorkers: inspector.DefaultControlMsgMetricsInspectorNumberOfWorkers,
72+
CacheSize: inspector.DefaultControlMsgMetricsInspectorQueueCacheSize,
73+
},
74+
}
75+
}
76+
5277
// GossipSubInspectorBuilder builder that constructs all rpc inspectors used by gossip sub. The following
5378
// rpc inspectors are created with this builder.
5479
// - validation inspector: performs validation on all control messages.
@@ -65,22 +90,27 @@ type GossipSubInspectorBuilder struct {
6590
}
6691

6792
// NewGossipSubInspectorBuilder returns new *GossipSubInspectorBuilder.
68-
func NewGossipSubInspectorBuilder(logger zerolog.Logger, sporkID flow.Identifier, inspectorsConfig *GossipSubRPCInspectorsConfig, distributor p2p.GossipSubInspectorNotificationDistributor, netMetrics module.NetworkMetrics, metricsRegistry prometheus.Registerer) *GossipSubInspectorBuilder {
93+
func NewGossipSubInspectorBuilder(logger zerolog.Logger, sporkID flow.Identifier, inspectorsConfig *GossipSubRPCInspectorsConfig, distributor p2p.GossipSubInspectorNotificationDistributor) *GossipSubInspectorBuilder {
6994
return &GossipSubInspectorBuilder{
7095
logger: logger,
7196
sporkID: sporkID,
7297
inspectorsConfig: inspectorsConfig,
7398
distributor: distributor,
74-
netMetrics: netMetrics,
75-
metricsRegistry: metricsRegistry,
76-
metricsEnabled: true,
77-
publicNetwork: true,
99+
metricsEnabled: p2p.MetricsDisabled,
100+
publicNetwork: p2p.PublicNetworkEnabled,
78101
}
79102
}
80103

81104
// SetMetricsEnabled disable and enable metrics collection for the inspectors underlying hero store cache.
82-
func (b *GossipSubInspectorBuilder) SetMetricsEnabled(enabled bool) *GossipSubInspectorBuilder {
83-
b.metricsEnabled = enabled
105+
func (b *GossipSubInspectorBuilder) SetMetricsEnabled(metricsEnabled bool) *GossipSubInspectorBuilder {
106+
b.metricsEnabled = metricsEnabled
107+
return b
108+
}
109+
110+
// SetMetrics sets the network metrics and registry.
111+
func (b *GossipSubInspectorBuilder) SetMetrics(netMetrics module.NetworkMetrics, metricsRegistry prometheus.Registerer) *GossipSubInspectorBuilder {
112+
b.netMetrics = netMetrics
113+
b.metricsRegistry = metricsRegistry
84114
return b
85115
}
86116

network/p2p/pubsub.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ const (
1919
PublicNetworkEnabled = true
2020
PublicNetworkDisabled = false
2121

22+
MetricsEnabled = true
23+
MetricsDisabled = false
24+
2225
ValidationAccept ValidationResult = iota
2326
ValidationIgnore
2427
ValidationReject

0 commit comments

Comments
 (0)