-
Notifications
You must be signed in to change notification settings - Fork 179
/
node_mode.go
131 lines (116 loc) · 4.74 KB
/
node_mode.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package app
import (
"errors"
"fmt"
"sort"
"strings"
"github.com/spf13/viper"
"github.com/okex/exchain/app/config"
appconfig "github.com/okex/exchain/app/config"
"github.com/okex/exchain/app/rpc/backend"
"github.com/okex/exchain/app/types"
"github.com/okex/exchain/libs/cosmos-sdk/client/flags"
"github.com/okex/exchain/libs/cosmos-sdk/server"
store "github.com/okex/exchain/libs/cosmos-sdk/store/iavl"
"github.com/okex/exchain/libs/cosmos-sdk/types/innertx"
"github.com/okex/exchain/libs/iavl"
abcitypes "github.com/okex/exchain/libs/tendermint/abci/types"
"github.com/okex/exchain/libs/tendermint/libs/log"
"github.com/okex/exchain/libs/tendermint/mempool"
tmtypes "github.com/okex/exchain/libs/tendermint/types"
evmtypes "github.com/okex/exchain/x/evm/types"
"github.com/okex/exchain/x/evm/watcher"
)
func setNodeConfig(ctx *server.Context) error {
nodeMode := viper.GetString(types.FlagNodeMode)
ctx.Logger.Info("Starting node", "mode", nodeMode)
switch types.NodeMode(nodeMode) {
case types.RpcNode:
setRpcConfig(ctx)
case types.ValidatorNode:
setValidatorConfig(ctx)
case types.ArchiveNode:
setArchiveConfig(ctx)
case types.InnertxNode:
if !innertx.IsAvailable {
return errors.New("innertx is not available for innertx node")
}
setRpcConfig(ctx)
default:
if len(nodeMode) > 0 {
ctx.Logger.Error(
fmt.Sprintf("Wrong value (%s) is set for %s, the correct value should be one of %s, %s, and %s",
nodeMode, types.FlagNodeMode, types.RpcNode, types.ValidatorNode, types.ArchiveNode))
}
}
return nil
}
func setRpcConfig(ctx *server.Context) {
viper.SetDefault(abcitypes.FlagDisableABCIQueryMutex, true)
viper.SetDefault(evmtypes.FlagEnableBloomFilter, true)
viper.SetDefault(watcher.FlagFastQueryLru, 10000)
viper.SetDefault(watcher.FlagFastQuery, true)
viper.SetDefault(backend.FlagApiBackendBlockLruCache, 30000)
viper.SetDefault(backend.FlagApiBackendTxLruCache, 100000)
viper.SetDefault(iavl.FlagIavlEnableAsyncCommit, true)
viper.SetDefault(flags.FlagMaxOpenConnections, 20000)
viper.SetDefault(mempool.FlagEnablePendingPool, true)
viper.SetDefault(server.FlagCORS, "*")
ctx.Logger.Info(fmt.Sprintf(
"Set --%s=%v\n--%s=%v\n--%s=%v\n--%s=%v\n--%s=%v\n--%s=%v\n--%s=%v\n--%s=%v by rpc node mode",
abcitypes.FlagDisableABCIQueryMutex, true, evmtypes.FlagEnableBloomFilter, true, watcher.FlagFastQueryLru, 10000,
watcher.FlagFastQuery, true, iavl.FlagIavlEnableAsyncCommit, true,
flags.FlagMaxOpenConnections, 20000, mempool.FlagEnablePendingPool, true,
server.FlagCORS, "*"))
}
func setValidatorConfig(ctx *server.Context) {
viper.SetDefault(abcitypes.FlagDisableABCIQueryMutex, true)
viper.SetDefault(appconfig.FlagDynamicGpMode, tmtypes.MinimalGpMode)
viper.SetDefault(iavl.FlagIavlEnableAsyncCommit, true)
viper.SetDefault(store.FlagIavlCacheSize, 10000000)
viper.SetDefault(server.FlagPruning, "everything")
viper.SetDefault(evmtypes.FlagEnableBloomFilter, false)
viper.SetDefault(watcher.FlagFastQuery, false)
viper.SetDefault(appconfig.FlagMaxGasUsedPerBlock, 120000000)
viper.SetDefault(mempool.FlagEnablePendingPool, false)
viper.SetDefault(config.FlagEnablePGU, true)
ctx.Logger.Info(fmt.Sprintf("Set --%s=%v\n--%s=%v\n--%s=%v\n--%s=%v\n--%s=%v\n--%s=%v\n--%s=%v\n--%s=%v\n--%s=%v by validator node mode",
abcitypes.FlagDisableABCIQueryMutex, true, appconfig.FlagDynamicGpMode, tmtypes.MinimalGpMode, iavl.FlagIavlEnableAsyncCommit, true,
store.FlagIavlCacheSize, 10000000, server.FlagPruning, "everything",
evmtypes.FlagEnableBloomFilter, false, watcher.FlagFastQuery, false, appconfig.FlagMaxGasUsedPerBlock, 120000000,
mempool.FlagEnablePendingPool, false))
}
func setArchiveConfig(ctx *server.Context) {
viper.SetDefault(server.FlagPruning, "nothing")
viper.SetDefault(abcitypes.FlagDisableABCIQueryMutex, true)
viper.SetDefault(evmtypes.FlagEnableBloomFilter, true)
viper.SetDefault(iavl.FlagIavlEnableAsyncCommit, true)
viper.SetDefault(flags.FlagMaxOpenConnections, 20000)
viper.SetDefault(server.FlagCORS, "*")
ctx.Logger.Info(fmt.Sprintf(
"Set --%s=%v\n--%s=%v\n--%s=%v\n--%s=%v\n--%s=%v\n--%s=%v by archive node mode",
server.FlagPruning, "nothing", abcitypes.FlagDisableABCIQueryMutex, true, evmtypes.FlagEnableBloomFilter, true,
iavl.FlagIavlEnableAsyncCommit, true, flags.FlagMaxOpenConnections, 20000,
server.FlagCORS, "*"))
}
func logStartingFlags(logger log.Logger) {
msg := "All flags:\n"
var maxLen int
kvMap := make(map[string]interface{})
var keys []string
for _, key := range viper.AllKeys() {
if strings.Index(key, "infura.") == 0 {
continue
}
keys = append(keys, key)
kvMap[key] = viper.Get(key)
if len(key) > maxLen {
maxLen = len(key)
}
}
sort.Strings(keys)
for _, k := range keys {
msg += fmt.Sprintf(" %-45s= %v\n", k, kvMap[k])
}
logger.Info(msg)
}