@@ -52,6 +52,7 @@ import (
5252 "github.com/onflow/flow-go/network/p2p/inspector/validation"
5353 "github.com/onflow/flow-go/network/p2p/middleware"
5454 "github.com/onflow/flow-go/network/p2p/p2pbuilder"
55+ "github.com/onflow/flow-go/network/p2p/p2pbuilder/inspector"
5556 "github.com/onflow/flow-go/network/p2p/ping"
5657 "github.com/onflow/flow-go/network/p2p/subscription"
5758 "github.com/onflow/flow-go/network/p2p/unicast/protocols"
@@ -211,13 +212,16 @@ func (fnb *FlowNodeBuilder) BaseFlags() {
211212 fnb .flags .BoolVar (& fnb .BaseConfig .UnicastRateLimitersConfig .DryRun , "unicast-rate-limit-dry-run" , defaultConfig .UnicastRateLimitersConfig .DryRun , "disable peer disconnects and connections gating when rate limiting peers" )
212213
213214 // gossipsub RPC control message validation limits used for validation configuration and rate limiting
214- fnb .flags .IntVar (& fnb .BaseConfig .GossipSubRPCValidationConfigs .NumberOfWorkers , "gossipsub-rpc-inspection-workers" , defaultConfig .NetworkConfig .GossipSubRPCValidationConfigs .NumberOfWorkers , "number of gossupsub RPC control message inspector component workers" )
215- fnb .flags .StringToIntVar (& fnb .BaseConfig .GossipSubRPCValidationConfigs .GraftLimits , "gossipsub-rpc-graft-limits" , defaultConfig .NetworkConfig .GossipSubRPCValidationConfigs .GraftLimits , fmt .Sprintf ("discard threshold, safety and rate limits for gossipsub RPC GRAFT message validation e.g: %s=1000,%s=100,%s=1000" , validation .DiscardThresholdMapKey , validation .SafetyThresholdMapKey , validation .RateLimitMapKey ))
216- fnb .flags .StringToIntVar (& fnb .BaseConfig .GossipSubRPCValidationConfigs .PruneLimits , "gossipsub-rpc-prune-limits" , defaultConfig .NetworkConfig .GossipSubRPCValidationConfigs .PruneLimits , fmt .Sprintf ("discard threshold, safety and rate limits for gossipsub RPC PRUNE message validation e.g: %s=1000,%s=20,%s=1000" , validation .DiscardThresholdMapKey , validation .SafetyThresholdMapKey , validation .RateLimitMapKey ))
215+ fnb .flags .IntVar (& fnb .BaseConfig .GossipSubRPCInspectorsConfig .ValidationInspectorConfigs .NumberOfWorkers , "gossipsub-rpc-validation-inspector-workers" , defaultConfig .GossipSubRPCInspectorsConfig .ValidationInspectorConfigs .NumberOfWorkers , "number of gossupsub RPC control message validation inspector component workers" )
216+ fnb .flags .Uint32Var (& fnb .BaseConfig .GossipSubRPCInspectorsConfig .ValidationInspectorConfigs .CacheSize , "gossipsub-rpc-validation-inspector-cache-size" , defaultConfig .GossipSubRPCInspectorsConfig .ValidationInspectorConfigs .CacheSize , "cache size for gossipsub RPC validation inspector events worker pool queue." )
217+ fnb .flags .StringToIntVar (& fnb .BaseConfig .GossipSubRPCInspectorsConfig .ValidationInspectorConfigs .GraftLimits , "gossipsub-rpc-graft-limits" , defaultConfig .GossipSubRPCInspectorsConfig .ValidationInspectorConfigs .GraftLimits , fmt .Sprintf ("discard threshold, safety and rate limits for gossipsub RPC GRAFT message validation e.g: %s=1000,%s=100,%s=1000" , validation .DiscardThresholdMapKey , validation .SafetyThresholdMapKey , validation .RateLimitMapKey ))
218+ fnb .flags .StringToIntVar (& fnb .BaseConfig .GossipSubRPCInspectorsConfig .ValidationInspectorConfigs .PruneLimits , "gossipsub-rpc-prune-limits" , defaultConfig .GossipSubRPCInspectorsConfig .ValidationInspectorConfigs .PruneLimits , fmt .Sprintf ("discard threshold, safety and rate limits for gossipsub RPC PRUNE message validation e.g: %s=1000,%s=20,%s=1000" , validation .DiscardThresholdMapKey , validation .SafetyThresholdMapKey , validation .RateLimitMapKey ))
219+ // gossipsub RPC control message metrics observer inspector configuration
220+ fnb .flags .IntVar (& fnb .BaseConfig .GossipSubRPCInspectorsConfig .MetricsInspectorConfigs .NumberOfWorkers , "gossipsub-rpc-metrics-inspector-workers" , defaultConfig .GossipSubRPCInspectorsConfig .MetricsInspectorConfigs .NumberOfWorkers , "cache size for gossipsub RPC metrics inspector events worker pool queue." )
221+ fnb .flags .Uint32Var (& fnb .BaseConfig .GossipSubRPCInspectorsConfig .MetricsInspectorConfigs .CacheSize , "gossipsub-rpc-metrics-inspector-cache-size" , defaultConfig .GossipSubRPCInspectorsConfig .MetricsInspectorConfigs .CacheSize , "cache size for gossipsub RPC metrics inspector events worker pool." )
217222
218223 // networking event notifications
219- fnb .flags .Uint32Var (& fnb .BaseConfig .GossipSubRPCInspectorNotificationCacheSize , "gossipsub-rpc-inspector-notification-cache-size" , defaultConfig .GossipSubRPCInspectorNotificationCacheSize , "cache size for notification events from gossipsub rpc inspector" )
220- fnb .flags .Uint32Var (& fnb .BaseConfig .GossipSubRPCInspectorCacheSize , "gossipsub-rpc-inspector-cache-size" , defaultConfig .GossipSubRPCInspectorNotificationCacheSize , "cache size for gossipsub RPC validation inspector events worker pool." )
224+ fnb .flags .Uint32Var (& fnb .BaseConfig .GossipSubRPCInspectorsConfig .GossipSubRPCInspectorNotificationCacheSize , "gossipsub-rpc-inspector-notification-cache-size" , defaultConfig .GossipSubRPCInspectorsConfig .GossipSubRPCInspectorNotificationCacheSize , "cache size for notification events from gossipsub rpc inspector" )
221225 fnb .flags .Uint32Var (& fnb .BaseConfig .DisallowListNotificationCacheSize , "disallow-list-notification-cache-size" , defaultConfig .DisallowListNotificationCacheSize , "cache size for notification events from disallow list" )
222226
223227 // unicast manager options
@@ -371,13 +375,20 @@ func (fnb *FlowNodeBuilder) EnqueueNetworkInit() {
371375 myAddr = fnb .BaseConfig .BindAddr
372376 }
373377
374- fnb .GossipSubInspectorNotifDistributor = BuildGossipsubRPCValidationInspectorNotificationDisseminator (fnb .GossipSubRPCInspectorNotificationCacheSize , fnb .MetricsRegisterer , fnb .Logger , fnb .MetricsEnabled )
375- heroStoreOpts := BuildGossipsubRPCValidationInspectorHeroStoreOpts (fnb .GossipSubRPCInspectorCacheSize , fnb .MetricsRegisterer , fnb .MetricsEnabled )
376- rpcValidationInspector , err := p2pbuilder .BuildGossipSubRPCValidationInspector (fnb .Logger , fnb .SporkID , fnb .GossipSubRPCValidationConfigs , fnb .GossipSubInspectorNotifDistributor , heroStoreOpts ... )
378+ fnb .GossipSubInspectorNotifDistributor = BuildGossipsubRPCValidationInspectorNotificationDisseminator (fnb .GossipSubRPCInspectorsConfig .GossipSubRPCInspectorNotificationCacheSize , fnb .MetricsRegisterer , fnb .Logger , fnb .MetricsEnabled )
379+
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 ()
377385 if err != nil {
378- return nil , fmt .Errorf ("failed to create gossipsub rpc validation inspector : %w" , err )
386+ return nil , fmt .Errorf ("failed to create gossipsub rpc inspectors : %w" , err )
379387 }
380388
389+ // set rpc inspectors on gossipsub config
390+ fnb .GossipSubConfig .RPCInspectors = rpcInspectors
391+
381392 libP2PNodeFactory := p2pbuilder .DefaultLibP2PNodeFactory (
382393 fnb .Logger ,
383394 myAddr ,
@@ -393,7 +404,6 @@ func (fnb *FlowNodeBuilder) EnqueueNetworkInit() {
393404 fnb .GossipSubConfig ,
394405 fnb .LibP2PResourceManagerConfig ,
395406 uniCfg ,
396- rpcValidationInspector ,
397407 )
398408
399409 libp2pNode , err := libP2PNodeFactory ()
0 commit comments