fix(server): properly parse multiple gas config (#18537)
This commit is contained in:
parent
fc4ce6c778
commit
875a71cc6f
@ -67,6 +67,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* (server) [#18537](https://github.com/cosmos/cosmos-sdk/pull/18537) Fix panic when defining minimum gas config as `100stake;100uatom`. Use a `,` delimiter instead of `;`. Fixes the server config getter to use the correct delimiter.
|
||||
* (client/tx) [#18472](https://github.com/cosmos/cosmos-sdk/pull/18472) Utilizes the correct Pubkey when simulating a transaction.
|
||||
* (baseapp) [#18486](https://github.com/cosmos/cosmos-sdk/pull/18486) Fixed FinalizeBlock calls not being passed to ABCIListeners
|
||||
* (baseapp) [#18383](https://github.com/cosmos/cosmos-sdk/pull/18383) Fixed a data race inside BaseApp.getContext, found by end-to-end (e2e) tests.
|
||||
|
||||
@ -74,26 +74,12 @@ the viper literal and passed to the application construction.
|
||||
Example:
|
||||
|
||||
```go
|
||||
func newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts server.AppOptions) server.Application {
|
||||
var cache sdk.MultiStorePersistentCache
|
||||
|
||||
if cast.ToBool(appOpts.Get(server.FlagInterBlockCache)) {
|
||||
cache = store.NewCommitKVStoreCacheManager()
|
||||
}
|
||||
|
||||
pruningOpts, err := server.GetPruningOptionsFromFlags(appOpts)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
func newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts servertypes.AppOptions) servertypes.Application {
|
||||
baseappOptions := server.DefaultBaseappOptions(appOpts)
|
||||
return simapp.NewSimApp(
|
||||
logger, db, traceStore, true,
|
||||
baseapp.SetPruning(pruningOpts),
|
||||
baseapp.SetMinGasPrices(cast.ToString(appOpts.Get(server.FlagMinGasPrices))),
|
||||
baseapp.SetHaltHeight(cast.ToUint64(appOpts.Get(server.FlagHaltHeight))),
|
||||
baseapp.SetHaltTime(cast.ToUint64(appOpts.Get(server.FlagHaltTime))),
|
||||
baseapp.SetInterBlockCache(cache),
|
||||
baseapp.SetTrace(cast.ToBool(appOpts.Get(server.FlagTrace))),
|
||||
appOpts,
|
||||
baseappOptions...,
|
||||
)
|
||||
}
|
||||
```
|
||||
|
||||
@ -3,7 +3,6 @@ package config
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"strings"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
|
||||
@ -202,23 +201,15 @@ func (c *Config) SetMinGasPrices(gasPrices sdk.DecCoins) {
|
||||
c.MinGasPrices = gasPrices.String()
|
||||
}
|
||||
|
||||
// GetMinGasPrices returns the validator's minimum gas prices based on the set
|
||||
// configuration.
|
||||
// GetMinGasPrices returns the validator's minimum gas prices based on the set configuration.
|
||||
func (c *Config) GetMinGasPrices() sdk.DecCoins {
|
||||
if c.MinGasPrices == "" {
|
||||
return sdk.DecCoins{}
|
||||
}
|
||||
|
||||
gasPricesStr := strings.Split(c.MinGasPrices, ";")
|
||||
gasPrices := make(sdk.DecCoins, len(gasPricesStr))
|
||||
|
||||
for i, s := range gasPricesStr {
|
||||
gasPrice, err := sdk.ParseDecCoin(s)
|
||||
if err != nil {
|
||||
panic(fmt.Errorf("failed to parse minimum gas price coin (%s): %s", s, err))
|
||||
}
|
||||
|
||||
gasPrices[i] = gasPrice
|
||||
gasPrices, err := sdk.ParseDecCoins(c.MinGasPrices)
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("invalid minimum gas prices: %v", err))
|
||||
}
|
||||
|
||||
return gasPrices
|
||||
|
||||
@ -18,10 +18,18 @@ func TestDefaultConfig(t *testing.T) {
|
||||
require.True(t, cfg.GetMinGasPrices().IsZero())
|
||||
}
|
||||
|
||||
func TestSetMinimumFees(t *testing.T) {
|
||||
func TestGetAndSetMinimumGas(t *testing.T) {
|
||||
cfg := DefaultConfig()
|
||||
cfg.SetMinGasPrices(sdk.DecCoins{sdk.NewInt64DecCoin("foo", 5)})
|
||||
|
||||
input := sdk.DecCoins{sdk.NewInt64DecCoin("foo", 5)}
|
||||
cfg.SetMinGasPrices(input)
|
||||
require.Equal(t, "5.000000000000000000foo", cfg.MinGasPrices)
|
||||
require.EqualValues(t, cfg.GetMinGasPrices(), input)
|
||||
|
||||
input = sdk.DecCoins{sdk.NewInt64DecCoin("bar", 1), sdk.NewInt64DecCoin("foo", 5)}
|
||||
cfg.SetMinGasPrices(input)
|
||||
require.Equal(t, "1.000000000000000000bar,5.000000000000000000foo", cfg.MinGasPrices)
|
||||
require.EqualValues(t, cfg.GetMinGasPrices(), input)
|
||||
}
|
||||
|
||||
func TestIndexEventsMarshalling(t *testing.T) {
|
||||
|
||||
@ -18,7 +18,7 @@ const DefaultConfigTemplate = `# This is a TOML config file.
|
||||
|
||||
# The minimum gas prices a validator is willing to accept for processing a
|
||||
# transaction. A transaction's fees must meet the minimum of any denomination
|
||||
# specified in this config (e.g. 0.25token1;0.0001token2).
|
||||
# specified in this config (e.g. 0.25token1,0.0001token2).
|
||||
minimum-gas-prices = "{{ .BaseConfig.MinGasPrices }}"
|
||||
|
||||
# The maximum gas a query coming over rest/grpc may consume.
|
||||
|
||||
@ -126,7 +126,6 @@ func newApp(
|
||||
appOpts servertypes.AppOptions,
|
||||
) servertypes.Application {
|
||||
baseappOptions := server.DefaultBaseappOptions(appOpts)
|
||||
|
||||
return simapp.NewSimApp(
|
||||
logger, db, traceStore, true,
|
||||
appOpts,
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
|
||||
# The minimum gas prices a validator is willing to accept for processing a
|
||||
# transaction. A transaction's fees must meet the minimum of any denomination
|
||||
# specified in this config (e.g. 0.25token1;0.0001token2).
|
||||
# specified in this config (e.g. 0.25token1,0.0001token2).
|
||||
minimum-gas-prices = "0stake"
|
||||
|
||||
# default: the last 362880 states are kept, pruning at 10 block intervals
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
|
||||
# The minimum gas prices a validator is willing to accept for processing a
|
||||
# transaction. A transaction's fees must meet the minimum of any denomination
|
||||
# specified in this config (e.g. 0.25token1;0.0001token2).
|
||||
# specified in this config (e.g. 0.25token1,0.0001token2).
|
||||
minimum-gas-prices = "0stake"
|
||||
|
||||
# The maximum gas a query coming over rest/grpc may consume.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user