77 lines
2.2 KiB
Go
77 lines
2.2 KiB
Go
/*
|
|
Copyright IBM Corp. All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package state
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
const (
|
|
DefStateCheckInterval = 10 * time.Second
|
|
DefStateResponseTimeout = 3 * time.Second
|
|
DefStateBatchSize = 10
|
|
DefStateMaxRetries = 3
|
|
DefStateBlockBufferSize = 20
|
|
DefStateChannelSize = 100
|
|
DefStateEnabled = false
|
|
)
|
|
|
|
type StateConfig struct {
|
|
StateCheckInterval time.Duration
|
|
StateResponseTimeout time.Duration
|
|
StateBatchSize uint64
|
|
StateMaxRetries int
|
|
StateBlockBufferSize int
|
|
StateChannelSize int
|
|
StateEnabled bool
|
|
UseLeaderElection bool
|
|
OrgLeader bool
|
|
}
|
|
|
|
func GlobalConfig() *StateConfig {
|
|
c := &StateConfig{}
|
|
c.loadStateConfig()
|
|
return c
|
|
}
|
|
|
|
func (c *StateConfig) loadStateConfig() {
|
|
c.StateCheckInterval = DefStateCheckInterval
|
|
if viper.IsSet("peer.gossip.state.checkInterval") {
|
|
c.StateCheckInterval = viper.GetDuration("peer.gossip.state.checkInterval")
|
|
}
|
|
c.StateResponseTimeout = DefStateResponseTimeout
|
|
if viper.IsSet("peer.gossip.state.responseTimeout") {
|
|
c.StateResponseTimeout = viper.GetDuration("peer.gossip.state.responseTimeout")
|
|
}
|
|
c.StateBatchSize = DefStateBatchSize
|
|
if viper.IsSet("peer.gossip.state.batchSize") {
|
|
c.StateBatchSize = uint64(viper.GetInt("peer.gossip.state.batchSize"))
|
|
}
|
|
c.StateMaxRetries = DefStateMaxRetries
|
|
if viper.IsSet("peer.gossip.state.maxRetries") {
|
|
c.StateMaxRetries = viper.GetInt("peer.gossip.state.maxRetries")
|
|
}
|
|
c.StateBlockBufferSize = DefStateBlockBufferSize
|
|
if viper.IsSet("peer.gossip.state.blockBufferSize") {
|
|
c.StateBlockBufferSize = viper.GetInt("peer.gossip.state.blockBufferSize")
|
|
}
|
|
c.StateChannelSize = DefStateChannelSize
|
|
if viper.IsSet("peer.gossip.state.channelSize") {
|
|
c.StateChannelSize = viper.GetInt("peer.gossip.state.channelSize")
|
|
}
|
|
c.StateEnabled = DefStateEnabled
|
|
if viper.IsSet("peer.gossip.state.enabled") {
|
|
c.StateEnabled = viper.GetBool("peer.gossip.state.enabled")
|
|
}
|
|
// The below two configuration parameters are used for straggler() which warns
|
|
// if our peer is lagging behind the rest and has no way to catch up.
|
|
c.UseLeaderElection = viper.GetBool("peer.gossip.useLeaderElection")
|
|
c.OrgLeader = viper.GetBool("peer.gossip.orgLeader")
|
|
}
|