forked from TrueCloudLab/frostfs-node
[#168] node: Refactor config initialization
Resolve funlen linter for initCfg function Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
This commit is contained in:
parent
3bbb516528
commit
c94372e6f9
1 changed files with 103 additions and 69 deletions
|
@ -541,7 +541,6 @@ type cfgReputation struct {
|
||||||
|
|
||||||
var persistateSideChainLastBlockKey = []byte("side_chain_last_processed_block")
|
var persistateSideChainLastBlockKey = []byte("side_chain_last_processed_block")
|
||||||
|
|
||||||
// nolint: funlen
|
|
||||||
func initCfg(appCfg *config.Config) *cfg {
|
func initCfg(appCfg *config.Config) *cfg {
|
||||||
c := &cfg{}
|
c := &cfg{}
|
||||||
|
|
||||||
|
@ -558,86 +557,29 @@ func initCfg(appCfg *config.Config) *cfg {
|
||||||
log, err := logger.NewLogger(logPrm)
|
log, err := logger.NewLogger(logPrm)
|
||||||
fatalOnErr(err)
|
fatalOnErr(err)
|
||||||
|
|
||||||
var netAddr network.AddressGroup
|
c.internals = initInternals(appCfg, log)
|
||||||
|
|
||||||
relayOnly := nodeconfig.Relay(appCfg)
|
relayOnly := nodeconfig.Relay(appCfg)
|
||||||
if !relayOnly {
|
|
||||||
netAddr = nodeconfig.BootstrapAddresses(appCfg)
|
|
||||||
}
|
|
||||||
|
|
||||||
maxChunkSize := uint64(maxMsgSize) * 3 / 4 // 25% to meta, 75% to payload
|
|
||||||
maxAddrAmount := uint64(maxChunkSize) / addressSize // each address is about 72 bytes
|
|
||||||
|
|
||||||
netState := newNetworkState()
|
netState := newNetworkState()
|
||||||
|
|
||||||
persistate, err := state.NewPersistentStorage(nodeconfig.PersistentState(appCfg).Path())
|
c.shared = initShared(appCfg, key, netState, relayOnly)
|
||||||
fatalOnErr(err)
|
|
||||||
|
|
||||||
containerWorkerPool, err := ants.NewPool(notificationHandlerPoolSize)
|
|
||||||
fatalOnErr(err)
|
|
||||||
|
|
||||||
netmapWorkerPool, err := ants.NewPool(notificationHandlerPoolSize)
|
|
||||||
fatalOnErr(err)
|
|
||||||
|
|
||||||
reputationWorkerPool, err := ants.NewPool(notificationHandlerPoolSize)
|
|
||||||
fatalOnErr(err)
|
|
||||||
|
|
||||||
c.internals = internals{
|
|
||||||
done: make(chan struct{}),
|
|
||||||
appCfg: appCfg,
|
|
||||||
internalErr: make(chan error),
|
|
||||||
log: log,
|
|
||||||
wg: new(sync.WaitGroup),
|
|
||||||
apiVersion: version.Current(),
|
|
||||||
healthStatus: atomic.NewInt32(int32(control.HealthStatus_HEALTH_STATUS_UNDEFINED)),
|
|
||||||
}
|
|
||||||
|
|
||||||
cacheOpts := cache.ClientCacheOpts{
|
|
||||||
DialTimeout: apiclientconfig.DialTimeout(appCfg),
|
|
||||||
StreamTimeout: apiclientconfig.StreamTimeout(appCfg),
|
|
||||||
Key: &key.PrivateKey,
|
|
||||||
AllowExternal: apiclientconfig.AllowExternal(appCfg),
|
|
||||||
ReconnectTimeout: apiclientconfig.ReconnectTimeout(appCfg),
|
|
||||||
}
|
|
||||||
c.shared = shared{
|
|
||||||
key: key,
|
|
||||||
binPublicKey: key.PublicKey().Bytes(),
|
|
||||||
localAddr: netAddr,
|
|
||||||
respSvc: response.NewService(response.WithNetworkState(netState)),
|
|
||||||
clientCache: cache.NewSDKClientCache(cacheOpts),
|
|
||||||
bgClientCache: cache.NewSDKClientCache(cacheOpts),
|
|
||||||
putClientCache: cache.NewSDKClientCache(cacheOpts),
|
|
||||||
persistate: persistate,
|
|
||||||
}
|
|
||||||
c.cfgAccounting = cfgAccounting{
|
c.cfgAccounting = cfgAccounting{
|
||||||
scriptHash: contractsconfig.Balance(appCfg),
|
scriptHash: contractsconfig.Balance(appCfg),
|
||||||
}
|
}
|
||||||
c.cfgContainer = cfgContainer{
|
c.cfgContainer = initContainer(appCfg)
|
||||||
scriptHash: contractsconfig.Container(appCfg),
|
|
||||||
workerPool: containerWorkerPool,
|
c.cfgNetmap = initNetmap(appCfg, netState, relayOnly)
|
||||||
}
|
|
||||||
c.cfgNetmap = cfgNetmap{
|
c.cfgGRPC = initCfgGRPC()
|
||||||
scriptHash: contractsconfig.Netmap(appCfg),
|
|
||||||
state: netState,
|
|
||||||
workerPool: netmapWorkerPool,
|
|
||||||
needBootstrap: !relayOnly,
|
|
||||||
reBoostrapTurnedOff: atomic.NewBool(relayOnly),
|
|
||||||
}
|
|
||||||
c.cfgGRPC = cfgGRPC{
|
|
||||||
maxChunkSize: maxChunkSize,
|
|
||||||
maxAddrAmount: maxAddrAmount,
|
|
||||||
}
|
|
||||||
c.cfgMorph = cfgMorph{
|
c.cfgMorph = cfgMorph{
|
||||||
proxyScriptHash: contractsconfig.Proxy(appCfg),
|
proxyScriptHash: contractsconfig.Proxy(appCfg),
|
||||||
}
|
}
|
||||||
c.cfgObject = cfgObject{
|
c.cfgObject = initCfgObject(appCfg)
|
||||||
pool: initObjectPool(appCfg),
|
|
||||||
tombstoneLifetime: objectconfig.TombstoneLifetime(appCfg),
|
c.cfgReputation = initReputation(appCfg)
|
||||||
}
|
|
||||||
c.cfgReputation = cfgReputation{
|
|
||||||
scriptHash: contractsconfig.Reputation(appCfg),
|
|
||||||
workerPool: reputationWorkerPool,
|
|
||||||
}
|
|
||||||
|
|
||||||
user.IDFromKey(&c.ownerIDFromKey, key.PrivateKey.PublicKey)
|
user.IDFromKey(&c.ownerIDFromKey, key.PrivateKey.PublicKey)
|
||||||
|
|
||||||
|
@ -652,6 +594,98 @@ func initCfg(appCfg *config.Config) *cfg {
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func initInternals(appCfg *config.Config, log *logger.Logger) internals {
|
||||||
|
return internals{
|
||||||
|
done: make(chan struct{}),
|
||||||
|
appCfg: appCfg,
|
||||||
|
internalErr: make(chan error),
|
||||||
|
log: log,
|
||||||
|
wg: new(sync.WaitGroup),
|
||||||
|
apiVersion: version.Current(),
|
||||||
|
healthStatus: atomic.NewInt32(int32(control.HealthStatus_HEALTH_STATUS_UNDEFINED)),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func initShared(appCfg *config.Config, key *keys.PrivateKey, netState *networkState, relayOnly bool) shared {
|
||||||
|
var netAddr network.AddressGroup
|
||||||
|
|
||||||
|
if !relayOnly {
|
||||||
|
netAddr = nodeconfig.BootstrapAddresses(appCfg)
|
||||||
|
}
|
||||||
|
|
||||||
|
persistate, err := state.NewPersistentStorage(nodeconfig.PersistentState(appCfg).Path())
|
||||||
|
fatalOnErr(err)
|
||||||
|
|
||||||
|
cacheOpts := cache.ClientCacheOpts{
|
||||||
|
DialTimeout: apiclientconfig.DialTimeout(appCfg),
|
||||||
|
StreamTimeout: apiclientconfig.StreamTimeout(appCfg),
|
||||||
|
Key: &key.PrivateKey,
|
||||||
|
AllowExternal: apiclientconfig.AllowExternal(appCfg),
|
||||||
|
ReconnectTimeout: apiclientconfig.ReconnectTimeout(appCfg),
|
||||||
|
}
|
||||||
|
|
||||||
|
return shared{
|
||||||
|
key: key,
|
||||||
|
binPublicKey: key.PublicKey().Bytes(),
|
||||||
|
localAddr: netAddr,
|
||||||
|
respSvc: response.NewService(response.WithNetworkState(netState)),
|
||||||
|
clientCache: cache.NewSDKClientCache(cacheOpts),
|
||||||
|
bgClientCache: cache.NewSDKClientCache(cacheOpts),
|
||||||
|
putClientCache: cache.NewSDKClientCache(cacheOpts),
|
||||||
|
persistate: persistate,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func initNetmap(appCfg *config.Config, netState *networkState, relayOnly bool) cfgNetmap {
|
||||||
|
netmapWorkerPool, err := ants.NewPool(notificationHandlerPoolSize)
|
||||||
|
fatalOnErr(err)
|
||||||
|
|
||||||
|
return cfgNetmap{
|
||||||
|
scriptHash: contractsconfig.Netmap(appCfg),
|
||||||
|
state: netState,
|
||||||
|
workerPool: netmapWorkerPool,
|
||||||
|
needBootstrap: !relayOnly,
|
||||||
|
reBoostrapTurnedOff: atomic.NewBool(relayOnly),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func initContainer(appCfg *config.Config) cfgContainer {
|
||||||
|
containerWorkerPool, err := ants.NewPool(notificationHandlerPoolSize)
|
||||||
|
fatalOnErr(err)
|
||||||
|
|
||||||
|
return cfgContainer{
|
||||||
|
scriptHash: contractsconfig.Container(appCfg),
|
||||||
|
workerPool: containerWorkerPool,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func initReputation(appCfg *config.Config) cfgReputation {
|
||||||
|
reputationWorkerPool, err := ants.NewPool(notificationHandlerPoolSize)
|
||||||
|
fatalOnErr(err)
|
||||||
|
|
||||||
|
return cfgReputation{
|
||||||
|
scriptHash: contractsconfig.Reputation(appCfg),
|
||||||
|
workerPool: reputationWorkerPool,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func initCfgGRPC() cfgGRPC {
|
||||||
|
maxChunkSize := uint64(maxMsgSize) * 3 / 4 // 25% to meta, 75% to payload
|
||||||
|
maxAddrAmount := uint64(maxChunkSize) / addressSize // each address is about 72 bytes
|
||||||
|
|
||||||
|
return cfgGRPC{
|
||||||
|
maxChunkSize: maxChunkSize,
|
||||||
|
maxAddrAmount: maxAddrAmount,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func initCfgObject(appCfg *config.Config) cfgObject {
|
||||||
|
return cfgObject{
|
||||||
|
pool: initObjectPool(appCfg),
|
||||||
|
tombstoneLifetime: objectconfig.TombstoneLifetime(appCfg),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (c *cfg) engineOpts() []engine.Option {
|
func (c *cfg) engineOpts() []engine.Option {
|
||||||
opts := make([]engine.Option, 0, 4)
|
opts := make([]engine.Option, 0, 4)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue