Skip to content

Commit 98ebdaf

Browse files
Add vm-factory logger (ava-labs#2701)
1 parent c1dfcbc commit 98ebdaf

File tree

6 files changed

+48
-35
lines changed

6 files changed

+48
-35
lines changed

config/config.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ import (
4747
"github.com/ava-labs/avalanchego/utils/set"
4848
"github.com/ava-labs/avalanchego/utils/storage"
4949
"github.com/ava-labs/avalanchego/utils/timer"
50-
"github.com/ava-labs/avalanchego/vms"
5150
"github.com/ava-labs/avalanchego/vms/platformvm/reward"
5251
"github.com/ava-labs/avalanchego/vms/proposervm"
5352
)
@@ -925,21 +924,21 @@ func getChainAliases(v *viper.Viper) (map[ids.ID][]string, error) {
925924
return getAliases(v, "chain aliases", ChainAliasesContentKey, ChainAliasesFileKey)
926925
}
927926

928-
func getVMManager(v *viper.Viper) (vms.Manager, error) {
927+
func getVMAliaser(v *viper.Viper) (ids.Aliaser, error) {
929928
vmAliases, err := getVMAliases(v)
930929
if err != nil {
931930
return nil, err
932931
}
933932

934-
manager := vms.NewManager()
933+
aliser := ids.NewAliaser()
935934
for vmID, aliases := range vmAliases {
936935
for _, alias := range aliases {
937-
if err := manager.Alias(vmID, alias); err != nil {
936+
if err := aliser.Alias(vmID, alias); err != nil {
938937
return nil, err
939938
}
940939
}
941940
}
942-
return manager, nil
941+
return aliser, nil
943942
}
944943

945944
// getPathFromDirKey reads flag value from viper instance and then checks the folder existence
@@ -1401,7 +1400,7 @@ func GetNodeConfig(v *viper.Viper) (node.Config, error) {
14011400
}
14021401

14031402
// VM Aliases
1404-
nodeConfig.VMManager, err = getVMManager(v)
1403+
nodeConfig.VMAliaser, err = getVMAliaser(v)
14051404
if err != nil {
14061405
return node.Config{}, err
14071406
}

node/config.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import (
2424
"github.com/ava-labs/avalanchego/utils/profiler"
2525
"github.com/ava-labs/avalanchego/utils/set"
2626
"github.com/ava-labs/avalanchego/utils/timer"
27-
"github.com/ava-labs/avalanchego/vms"
2827
)
2928

3029
type IPCConfig struct {
@@ -186,7 +185,7 @@ type Config struct {
186185
ChainConfigs map[string]chains.ChainConfig `json:"-"`
187186
ChainAliases map[ids.ID][]string `json:"chainAliases"`
188187

189-
VMManager vms.Manager `json:"-"`
188+
VMAliaser ids.Aliaser `json:"-"`
190189

191190
// Halflife to use for the processing requests tracker.
192191
// Larger halflife --> usage metrics change more slowly.

node/node.go

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ import (
7070
"github.com/ava-labs/avalanchego/utils/timer"
7171
"github.com/ava-labs/avalanchego/utils/wrappers"
7272
"github.com/ava-labs/avalanchego/version"
73+
"github.com/ava-labs/avalanchego/vms"
7374
"github.com/ava-labs/avalanchego/vms/avm"
7475
"github.com/ava-labs/avalanchego/vms/nftfx"
7576
"github.com/ava-labs/avalanchego/vms/platformvm"
@@ -94,8 +95,9 @@ var (
9495

9596
// Node is an instance of an Avalanche node.
9697
type Node struct {
97-
Log logging.Logger
98-
LogFactory logging.Factory
98+
Log logging.Logger
99+
VMFactoryLog logging.Logger
100+
LogFactory logging.Factory
99101

100102
// This node's unique ID used when communicating with other nodes
101103
// (in consensus, for example)
@@ -176,6 +178,8 @@ type Node struct {
176178
MetricsRegisterer *prometheus.Registry
177179
MetricsGatherer metrics.MultiGatherer
178180

181+
VMManager vms.Manager
182+
179183
// VM endpoint registry
180184
VMRegistry registry.VMRegistry
181185

@@ -627,7 +631,7 @@ func (n *Node) addDefaultVMAliases() error {
627631

628632
for vmID, aliases := range vmAliases {
629633
for _, alias := range aliases {
630-
if err := n.Config.VMManager.Alias(vmID, alias); err != nil {
634+
if err := n.Config.VMAliaser.Alias(vmID, alias); err != nil {
631635
return err
632636
}
633637
}
@@ -695,7 +699,7 @@ func (n *Node) initChainManager(avaxAssetID ids.ID) error {
695699
StakingBLSKey: n.Config.StakingSigningKey,
696700
Log: n.Log,
697701
LogFactory: n.LogFactory,
698-
VMManager: n.Config.VMManager,
702+
VMManager: n.VMManager,
699703
DecisionAcceptorGroup: n.DecisionAcceptorGroup,
700704
ConsensusAcceptorGroup: n.ConsensusAcceptorGroup,
701705
DBManager: n.DBManager,
@@ -755,9 +759,10 @@ func (n *Node) initVMs() error {
755759
}
756760

757761
vmRegisterer := registry.NewVMRegisterer(registry.VMRegistererConfig{
758-
APIServer: n.APIServer,
759-
Log: n.Log,
760-
VMManager: n.Config.VMManager,
762+
APIServer: n.APIServer,
763+
Log: n.Log,
764+
VMFactoryLog: n.VMFactoryLog,
765+
VMManager: n.VMManager,
761766
})
762767

763768
// Register the VMs that Avalanche supports
@@ -801,9 +806,9 @@ func (n *Node) initVMs() error {
801806
},
802807
}),
803808
vmRegisterer.Register(context.TODO(), constants.EVMID, &coreth.Factory{}),
804-
n.Config.VMManager.RegisterFactory(context.TODO(), secp256k1fx.ID, &secp256k1fx.Factory{}),
805-
n.Config.VMManager.RegisterFactory(context.TODO(), nftfx.ID, &nftfx.Factory{}),
806-
n.Config.VMManager.RegisterFactory(context.TODO(), propertyfx.ID, &propertyfx.Factory{}),
809+
n.VMManager.RegisterFactory(context.TODO(), secp256k1fx.ID, &secp256k1fx.Factory{}),
810+
n.VMManager.RegisterFactory(context.TODO(), nftfx.ID, &nftfx.Factory{}),
811+
n.VMManager.RegisterFactory(context.TODO(), propertyfx.ID, &propertyfx.Factory{}),
807812
)
808813
if errs.Errored() {
809814
return errs.Err
@@ -816,7 +821,7 @@ func (n *Node) initVMs() error {
816821
n.VMRegistry = registry.NewVMRegistry(registry.VMRegistryConfig{
817822
VMGetter: registry.NewVMGetter(registry.VMGetterConfig{
818823
FileReader: filesystem.NewReader(),
819-
Manager: n.Config.VMManager,
824+
Manager: n.VMManager,
820825
PluginDirectory: n.Config.PluginDir,
821826
CPUTracker: n.resourceManager,
822827
RuntimeTracker: n.runtimeManager,
@@ -920,7 +925,7 @@ func (n *Node) initAdminAPI() error {
920925
ProfileDir: n.Config.ProfilerConfig.Dir,
921926
LogFactory: n.LogFactory,
922927
NodeConfig: n.Config,
923-
VMManager: n.Config.VMManager,
928+
VMManager: n.VMManager,
924929
VMRegistry: n.VMRegistry,
925930
},
926931
)
@@ -978,11 +983,11 @@ func (n *Node) initInfoAPI() error {
978983
AddPrimaryNetworkDelegatorFee: n.Config.AddPrimaryNetworkDelegatorFee,
979984
AddSubnetValidatorFee: n.Config.AddSubnetValidatorFee,
980985
AddSubnetDelegatorFee: n.Config.AddSubnetDelegatorFee,
981-
VMManager: n.Config.VMManager,
986+
VMManager: n.VMManager,
982987
},
983988
n.Log,
984989
n.chainManager,
985-
n.Config.VMManager,
990+
n.VMManager,
986991
n.Config.NetworkConfig.MyIPPort,
987992
n.Net,
988993
primaryValidators,
@@ -1235,12 +1240,19 @@ func (n *Node) Initialize(
12351240
zap.Reflect("config", n.Config),
12361241
)
12371242

1243+
var err error
1244+
n.VMFactoryLog, err = logFactory.Make("vm-factory")
1245+
if err != nil {
1246+
return fmt.Errorf("problem creating vm logger: %w", err)
1247+
}
1248+
1249+
n.VMManager = vms.NewManager(n.VMFactoryLog, config.VMAliaser)
1250+
12381251
if err := n.initBeacons(); err != nil { // Configure the beacons
12391252
return fmt.Errorf("problem initializing node beacons: %w", err)
12401253
}
12411254

12421255
// Set up tracer
1243-
var err error
12441256
n.tracer, err = trace.New(n.Config.TraceConfig)
12451257
if err != nil {
12461258
return fmt.Errorf("couldn't initialize tracer: %w", err)

vms/manager.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ type manager struct {
6262
// alias of the VM. That is, [vmID].String() is an alias for [vmID].
6363
ids.Aliaser
6464

65+
log logging.Logger
66+
6567
lock sync.RWMutex
6668

6769
// Key: A VM's ID
@@ -74,9 +76,10 @@ type manager struct {
7476
}
7577

7678
// NewManager returns an instance of a VM manager
77-
func NewManager() Manager {
79+
func NewManager(log logging.Logger, aliaser ids.Aliaser) Manager {
7880
return &manager{
79-
Aliaser: ids.NewAliaser(),
81+
Aliaser: aliaser,
82+
log: log,
8083
factories: make(map[ids.ID]Factory),
8184
versions: make(map[ids.ID]string),
8285
}
@@ -105,8 +108,7 @@ func (m *manager) RegisterFactory(ctx context.Context, vmID ids.ID, factory Fact
105108

106109
m.factories[vmID] = factory
107110

108-
// TODO: Pass in a VM specific logger
109-
vm, err := factory.New(logging.NoLog{})
111+
vm, err := factory.New(m.log)
110112
if err != nil {
111113
return err
112114
}

vms/registry/vm_registerer.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,10 @@ type registerer interface {
3636

3737
// VMRegistererConfig configures settings for VMRegisterer.
3838
type VMRegistererConfig struct {
39-
APIServer server.Server
40-
Log logging.Logger
41-
VMManager vms.Manager
39+
APIServer server.Server
40+
Log logging.Logger
41+
VMFactoryLog logging.Logger
42+
VMManager vms.Manager
4243
}
4344

4445
type vmRegisterer struct {
@@ -89,8 +90,7 @@ func (r *vmRegisterer) createStaticHandlers(
8990
vmID ids.ID,
9091
factory vms.Factory,
9192
) (map[string]*common.HTTPHandler, error) {
92-
// TODO: Pass in a VM specific logger
93-
vm, err := factory.New(logging.NoLog{})
93+
vm, err := factory.New(r.config.VMFactoryLog)
9494
if err != nil {
9595
return nil, err
9696
}

vms/registry/vm_registerer_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -433,9 +433,10 @@ func initRegistererTest(t *testing.T) *vmRegistererTestResources {
433433
mockLog := logging.NewMockLogger(ctrl)
434434

435435
registerer := NewVMRegisterer(VMRegistererConfig{
436-
APIServer: mockServer,
437-
Log: mockLog,
438-
VMManager: mockManager,
436+
APIServer: mockServer,
437+
Log: mockLog,
438+
VMFactoryLog: logging.NoLog{},
439+
VMManager: mockManager,
439440
})
440441

441442
mockLog.EXPECT().Error(gomock.Any(), gomock.Any()).AnyTimes()

0 commit comments

Comments
 (0)