From 1b2707a3b8ecc077283c71ea107d57a0fec78822 Mon Sep 17 00:00:00 2001 From: Yun Yeo Date: Sun, 20 Feb 2022 15:11:32 +0900 Subject: [PATCH 1/7] cache serialized artifact instead module --- go.mod | 1 + go.sum | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 2ed2e9de5..39efbba6e 100644 --- a/go.mod +++ b/go.mod @@ -121,6 +121,7 @@ require ( replace ( github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 + github.com/CosmWasm/wasmvm => github.com/terra-money/wasmvm v0.16.4-0.20220220060348-bae0189eebdb github.com/cosmos/cosmos-sdk => github.com/terra-money/cosmos-sdk v0.44.5-terra.2 github.com/cosmos/ledger-cosmos-go => github.com/terra-money/ledger-terra-go v0.11.2 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 diff --git a/go.sum b/go.sum index 5b089a5ee..f9282bb9f 100644 --- a/go.sum +++ b/go.sum @@ -58,8 +58,6 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= -github.com/CosmWasm/wasmvm v0.16.3 h1:hUf33EHRmyyvKMhwVl7nMaAOY0vYJVB4bhU+HPfHfBM= -github.com/CosmWasm/wasmvm v0.16.3/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= @@ -805,6 +803,8 @@ github.com/terra-money/ledger-terra-go v0.11.2 h1:BVXZl+OhJOri6vFNjjVaTabRLApw9M github.com/terra-money/ledger-terra-go v0.11.2/go.mod h1:ClJ2XMj1ptcnONzKH+GhVPi7Y8pXIT+UzJ0TNt0tfZE= github.com/terra-money/tendermint v0.34.14-terra.2 h1:UYDDCI001ZNhs+aX09HjKVldUcz084q3RwLHUOSSZQU= github.com/terra-money/tendermint v0.34.14-terra.2/go.mod h1:FrwVm3TvsVicI9Z7FlucHV6Znfd5KBc/Lpp69cCwtk0= +github.com/terra-money/wasmvm v0.16.4-0.20220220060348-bae0189eebdb h1:meMNzRyc/OHjMUssIMSq7FSU+ftnsfwRs/8S+pwLttI= +github.com/terra-money/wasmvm v0.16.4-0.20220220060348-bae0189eebdb/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= github.com/tidwall/gjson v1.6.7/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= From 9db2020cb9cb4fe7962c2b154c07cff3f3f6900f Mon Sep 17 00:00:00 2001 From: Yun Yeo Date: Thu, 24 Feb 2022 17:08:17 +0900 Subject: [PATCH 2/7] change to reuse engine and artifact not store --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 39efbba6e..cc42efc89 100644 --- a/go.mod +++ b/go.mod @@ -121,7 +121,7 @@ require ( replace ( github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 - github.com/CosmWasm/wasmvm => github.com/terra-money/wasmvm v0.16.4-0.20220220060348-bae0189eebdb + github.com/CosmWasm/wasmvm => github.com/terra-money/wasmvm v0.16.4-0.20220224074113-71efcb628691 github.com/cosmos/cosmos-sdk => github.com/terra-money/cosmos-sdk v0.44.5-terra.2 github.com/cosmos/ledger-cosmos-go => github.com/terra-money/ledger-terra-go v0.11.2 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 diff --git a/go.sum b/go.sum index f9282bb9f..0087653b6 100644 --- a/go.sum +++ b/go.sum @@ -803,8 +803,8 @@ github.com/terra-money/ledger-terra-go v0.11.2 h1:BVXZl+OhJOri6vFNjjVaTabRLApw9M github.com/terra-money/ledger-terra-go v0.11.2/go.mod h1:ClJ2XMj1ptcnONzKH+GhVPi7Y8pXIT+UzJ0TNt0tfZE= github.com/terra-money/tendermint v0.34.14-terra.2 h1:UYDDCI001ZNhs+aX09HjKVldUcz084q3RwLHUOSSZQU= github.com/terra-money/tendermint v0.34.14-terra.2/go.mod h1:FrwVm3TvsVicI9Z7FlucHV6Znfd5KBc/Lpp69cCwtk0= -github.com/terra-money/wasmvm v0.16.4-0.20220220060348-bae0189eebdb h1:meMNzRyc/OHjMUssIMSq7FSU+ftnsfwRs/8S+pwLttI= -github.com/terra-money/wasmvm v0.16.4-0.20220220060348-bae0189eebdb/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= +github.com/terra-money/wasmvm v0.16.4-0.20220224074113-71efcb628691 h1:Q85I+jWqZUQYlv/ym//oOzuLTD7j0drvrHNE2n3w6Og= +github.com/terra-money/wasmvm v0.16.4-0.20220224074113-71efcb628691/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= github.com/tidwall/gjson v1.6.7/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= From b225a2e21bdd9392b65b16bed3ea28696050c0e1 Mon Sep 17 00:00:00 2001 From: Yun Yeo Date: Sat, 26 Feb 2022 00:56:12 +0900 Subject: [PATCH 3/7] revert to background wasm cache replacement --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index cc42efc89..7a8ae4fb1 100644 --- a/go.mod +++ b/go.mod @@ -121,7 +121,7 @@ require ( replace ( github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 - github.com/CosmWasm/wasmvm => github.com/terra-money/wasmvm v0.16.4-0.20220224074113-71efcb628691 + github.com/CosmWasm/wasmvm => github.com/terra-money/wasmvm v0.16.4-0.20220223064700-00b867119589 github.com/cosmos/cosmos-sdk => github.com/terra-money/cosmos-sdk v0.44.5-terra.2 github.com/cosmos/ledger-cosmos-go => github.com/terra-money/ledger-terra-go v0.11.2 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 diff --git a/go.sum b/go.sum index 0087653b6..166433516 100644 --- a/go.sum +++ b/go.sum @@ -803,8 +803,8 @@ github.com/terra-money/ledger-terra-go v0.11.2 h1:BVXZl+OhJOri6vFNjjVaTabRLApw9M github.com/terra-money/ledger-terra-go v0.11.2/go.mod h1:ClJ2XMj1ptcnONzKH+GhVPi7Y8pXIT+UzJ0TNt0tfZE= github.com/terra-money/tendermint v0.34.14-terra.2 h1:UYDDCI001ZNhs+aX09HjKVldUcz084q3RwLHUOSSZQU= github.com/terra-money/tendermint v0.34.14-terra.2/go.mod h1:FrwVm3TvsVicI9Z7FlucHV6Znfd5KBc/Lpp69cCwtk0= -github.com/terra-money/wasmvm v0.16.4-0.20220224074113-71efcb628691 h1:Q85I+jWqZUQYlv/ym//oOzuLTD7j0drvrHNE2n3w6Og= -github.com/terra-money/wasmvm v0.16.4-0.20220224074113-71efcb628691/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= +github.com/terra-money/wasmvm v0.16.4-0.20220223064700-00b867119589 h1:0sA+UJS6NH0KTGuKlh3EU6zgIiAom7VIVhex2ymoITw= +github.com/terra-money/wasmvm v0.16.4-0.20220223064700-00b867119589/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= github.com/tidwall/gjson v1.6.7/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= From 9dd6aba19211b89071fb0c4dba447752a48fe1fb Mon Sep 17 00:00:00 2001 From: Yun Yeo Date: Thu, 3 Mar 2022 14:07:35 +0900 Subject: [PATCH 4/7] add refresh_thread_num cache option --- go.mod | 2 +- go.sum | 4 ++-- x/wasm/config/config.go | 13 +++++++++++++ x/wasm/keeper/keeper.go | 6 ++++++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 7a8ae4fb1..d35d14da7 100644 --- a/go.mod +++ b/go.mod @@ -121,7 +121,7 @@ require ( replace ( github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 - github.com/CosmWasm/wasmvm => github.com/terra-money/wasmvm v0.16.4-0.20220223064700-00b867119589 + github.com/CosmWasm/wasmvm => github.com/terra-money/wasmvm v0.16.4-0.20220303060445-1ebe5807aa66 github.com/cosmos/cosmos-sdk => github.com/terra-money/cosmos-sdk v0.44.5-terra.2 github.com/cosmos/ledger-cosmos-go => github.com/terra-money/ledger-terra-go v0.11.2 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 diff --git a/go.sum b/go.sum index 166433516..77feaa0c9 100644 --- a/go.sum +++ b/go.sum @@ -803,8 +803,8 @@ github.com/terra-money/ledger-terra-go v0.11.2 h1:BVXZl+OhJOri6vFNjjVaTabRLApw9M github.com/terra-money/ledger-terra-go v0.11.2/go.mod h1:ClJ2XMj1ptcnONzKH+GhVPi7Y8pXIT+UzJ0TNt0tfZE= github.com/terra-money/tendermint v0.34.14-terra.2 h1:UYDDCI001ZNhs+aX09HjKVldUcz084q3RwLHUOSSZQU= github.com/terra-money/tendermint v0.34.14-terra.2/go.mod h1:FrwVm3TvsVicI9Z7FlucHV6Znfd5KBc/Lpp69cCwtk0= -github.com/terra-money/wasmvm v0.16.4-0.20220223064700-00b867119589 h1:0sA+UJS6NH0KTGuKlh3EU6zgIiAom7VIVhex2ymoITw= -github.com/terra-money/wasmvm v0.16.4-0.20220223064700-00b867119589/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= +github.com/terra-money/wasmvm v0.16.4-0.20220303060445-1ebe5807aa66 h1:d1kSz5gbRraD1UU3X51xT1kIeYTJnrd6waqv9501QXc= +github.com/terra-money/wasmvm v0.16.4-0.20220303060445-1ebe5807aa66/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= github.com/tidwall/gjson v1.6.7/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= diff --git a/x/wasm/config/config.go b/x/wasm/config/config.go index 4dae6095c..e6b7701a9 100644 --- a/x/wasm/config/config.go +++ b/x/wasm/config/config.go @@ -11,6 +11,7 @@ const ( DefaultContractQueryGasLimit = uint64(3000000) DefaultContractDebugMode = false DefaultContractMemoryCacheSize = uint32(100) + DefaultRefreshThreadNum = uint32(16) ) // DBDir used to store wasm data to @@ -28,6 +29,11 @@ type Config struct { // The WASM VM memory cache size in MiB not bytes ContractMemoryCacheSize uint32 `mapstructure:"contract-memory-cache-size"` + + // The number of background thread to refresh wasm cache. + // This background thread is to prevent memory leak which + // comes from reusing wasm module. + RefreshThreadNum uint32 `mapstructure:"refresh-thread-num"` } // DefaultConfig returns the default settings for WasmConfig @@ -36,6 +42,7 @@ func DefaultConfig() *Config { ContractQueryGasLimit: DefaultContractQueryGasLimit, ContractDebugMode: DefaultContractDebugMode, ContractMemoryCacheSize: DefaultContractMemoryCacheSize, + RefreshThreadNum: DefaultRefreshThreadNum, } } @@ -45,6 +52,7 @@ func GetConfig(appOpts servertypes.AppOptions) *Config { ContractQueryGasLimit: cast.ToUint64(appOpts.Get("wasm.contract-query-gas-limit")), ContractDebugMode: cast.ToBool(appOpts.Get("wasm.contract-debug-mode")), ContractMemoryCacheSize: cast.ToUint32(appOpts.Get("wasm.contract-memory-cache-size")), + RefreshThreadNum: cast.ToUint32(appOpts.Get("wasm.refresh-thread-num")), } } @@ -61,4 +69,9 @@ contract-debug-mode = "{{ .WASMConfig.ContractDebugMode }}" # The WASM VM memory cache size in MiB not bytes contract-memory-cache-size = "{{ .WASMConfig.ContractMemoryCacheSize }}" + +# The number of background thread to refresh wasm cache. +# This background thread is to prevent memory leak which +# comes from reusing wasm module. +refresh-thread-num = "{{ .WASMConfig.RefreshThreadNum }}" ` diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 0d59ffdc1..868497c96 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -65,12 +65,18 @@ func NewKeeper( wasmConfig.ContractMemoryCacheSize = config.DefaultContractMemoryCacheSize } + // prevent zero refresh thread + if wasmConfig.RefreshThreadNum == 0 { + wasmConfig.RefreshThreadNum = config.DefaultRefreshThreadNum + } + vm, err := wasmvm.NewVM( filepath.Join(homePath, config.DBDir), supportedFeatures, types.ContractMemoryLimit, wasmConfig.ContractDebugMode, wasmConfig.ContractMemoryCacheSize, + wasmConfig.RefreshThreadNum, ) if err != nil { From 70c1ef6f11b0317266275b2dcea01f46c9dab928 Mon Sep 17 00:00:00 2001 From: Yun Yeo Date: Fri, 4 Mar 2022 13:03:24 +0900 Subject: [PATCH 5/7] bump wasmvm to v0.16.4 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d35d14da7..32034ccb5 100644 --- a/go.mod +++ b/go.mod @@ -121,7 +121,7 @@ require ( replace ( github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 - github.com/CosmWasm/wasmvm => github.com/terra-money/wasmvm v0.16.4-0.20220303060445-1ebe5807aa66 + github.com/CosmWasm/wasmvm => github.com/terra-money/wasmvm v0.16.4 github.com/cosmos/cosmos-sdk => github.com/terra-money/cosmos-sdk v0.44.5-terra.2 github.com/cosmos/ledger-cosmos-go => github.com/terra-money/ledger-terra-go v0.11.2 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 diff --git a/go.sum b/go.sum index 77feaa0c9..1cb0f68d4 100644 --- a/go.sum +++ b/go.sum @@ -803,8 +803,8 @@ github.com/terra-money/ledger-terra-go v0.11.2 h1:BVXZl+OhJOri6vFNjjVaTabRLApw9M github.com/terra-money/ledger-terra-go v0.11.2/go.mod h1:ClJ2XMj1ptcnONzKH+GhVPi7Y8pXIT+UzJ0TNt0tfZE= github.com/terra-money/tendermint v0.34.14-terra.2 h1:UYDDCI001ZNhs+aX09HjKVldUcz084q3RwLHUOSSZQU= github.com/terra-money/tendermint v0.34.14-terra.2/go.mod h1:FrwVm3TvsVicI9Z7FlucHV6Znfd5KBc/Lpp69cCwtk0= -github.com/terra-money/wasmvm v0.16.4-0.20220303060445-1ebe5807aa66 h1:d1kSz5gbRraD1UU3X51xT1kIeYTJnrd6waqv9501QXc= -github.com/terra-money/wasmvm v0.16.4-0.20220303060445-1ebe5807aa66/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= +github.com/terra-money/wasmvm v0.16.4 h1:7zPlIV9zFy4NH+kfV2Yu9o5pMuD6rK36Fmdw4/CLur0= +github.com/terra-money/wasmvm v0.16.4/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= github.com/tidwall/gjson v1.6.7/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= From 40ba3cf737705796de273ed66c63359a833c344c Mon Sep 17 00:00:00 2001 From: Yun Yeo Date: Fri, 1 Apr 2022 14:52:21 +0900 Subject: [PATCH 6/7] bump wasmvm to v0.16.6 --- go.mod | 3 +-- go.sum | 4 ++-- x/wasm/config/config.go | 13 ------------- x/wasm/keeper/keeper.go | 6 ------ 4 files changed, 3 insertions(+), 23 deletions(-) diff --git a/go.mod b/go.mod index 32034ccb5..5272182bd 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ go 1.17 module github.com/terra-money/core require ( - github.com/CosmWasm/wasmvm v0.16.3 + github.com/CosmWasm/wasmvm v0.16.6 github.com/cosmos/cosmos-sdk v0.44.5 github.com/cosmos/ibc-go v1.1.5 github.com/gogo/protobuf v1.3.3 @@ -121,7 +121,6 @@ require ( replace ( github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 - github.com/CosmWasm/wasmvm => github.com/terra-money/wasmvm v0.16.4 github.com/cosmos/cosmos-sdk => github.com/terra-money/cosmos-sdk v0.44.5-terra.2 github.com/cosmos/ledger-cosmos-go => github.com/terra-money/ledger-terra-go v0.11.2 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 diff --git a/go.sum b/go.sum index 1cb0f68d4..a80ac3af4 100644 --- a/go.sum +++ b/go.sum @@ -58,6 +58,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/CosmWasm/wasmvm v0.16.6 h1:YEqno8DJifj+1NixXSJGOXCKGX4Qb4kdYK1+JIHLpog= +github.com/CosmWasm/wasmvm v0.16.6/go.mod h1:saGLYYSj6rRVFL6EaWZHzXbLD3Rgn8ZEK+0H+UjKOE4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= @@ -803,8 +805,6 @@ github.com/terra-money/ledger-terra-go v0.11.2 h1:BVXZl+OhJOri6vFNjjVaTabRLApw9M github.com/terra-money/ledger-terra-go v0.11.2/go.mod h1:ClJ2XMj1ptcnONzKH+GhVPi7Y8pXIT+UzJ0TNt0tfZE= github.com/terra-money/tendermint v0.34.14-terra.2 h1:UYDDCI001ZNhs+aX09HjKVldUcz084q3RwLHUOSSZQU= github.com/terra-money/tendermint v0.34.14-terra.2/go.mod h1:FrwVm3TvsVicI9Z7FlucHV6Znfd5KBc/Lpp69cCwtk0= -github.com/terra-money/wasmvm v0.16.4 h1:7zPlIV9zFy4NH+kfV2Yu9o5pMuD6rK36Fmdw4/CLur0= -github.com/terra-money/wasmvm v0.16.4/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= github.com/tidwall/gjson v1.6.7/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= diff --git a/x/wasm/config/config.go b/x/wasm/config/config.go index e6b7701a9..4dae6095c 100644 --- a/x/wasm/config/config.go +++ b/x/wasm/config/config.go @@ -11,7 +11,6 @@ const ( DefaultContractQueryGasLimit = uint64(3000000) DefaultContractDebugMode = false DefaultContractMemoryCacheSize = uint32(100) - DefaultRefreshThreadNum = uint32(16) ) // DBDir used to store wasm data to @@ -29,11 +28,6 @@ type Config struct { // The WASM VM memory cache size in MiB not bytes ContractMemoryCacheSize uint32 `mapstructure:"contract-memory-cache-size"` - - // The number of background thread to refresh wasm cache. - // This background thread is to prevent memory leak which - // comes from reusing wasm module. - RefreshThreadNum uint32 `mapstructure:"refresh-thread-num"` } // DefaultConfig returns the default settings for WasmConfig @@ -42,7 +36,6 @@ func DefaultConfig() *Config { ContractQueryGasLimit: DefaultContractQueryGasLimit, ContractDebugMode: DefaultContractDebugMode, ContractMemoryCacheSize: DefaultContractMemoryCacheSize, - RefreshThreadNum: DefaultRefreshThreadNum, } } @@ -52,7 +45,6 @@ func GetConfig(appOpts servertypes.AppOptions) *Config { ContractQueryGasLimit: cast.ToUint64(appOpts.Get("wasm.contract-query-gas-limit")), ContractDebugMode: cast.ToBool(appOpts.Get("wasm.contract-debug-mode")), ContractMemoryCacheSize: cast.ToUint32(appOpts.Get("wasm.contract-memory-cache-size")), - RefreshThreadNum: cast.ToUint32(appOpts.Get("wasm.refresh-thread-num")), } } @@ -69,9 +61,4 @@ contract-debug-mode = "{{ .WASMConfig.ContractDebugMode }}" # The WASM VM memory cache size in MiB not bytes contract-memory-cache-size = "{{ .WASMConfig.ContractMemoryCacheSize }}" - -# The number of background thread to refresh wasm cache. -# This background thread is to prevent memory leak which -# comes from reusing wasm module. -refresh-thread-num = "{{ .WASMConfig.RefreshThreadNum }}" ` diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 868497c96..0d59ffdc1 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -65,18 +65,12 @@ func NewKeeper( wasmConfig.ContractMemoryCacheSize = config.DefaultContractMemoryCacheSize } - // prevent zero refresh thread - if wasmConfig.RefreshThreadNum == 0 { - wasmConfig.RefreshThreadNum = config.DefaultRefreshThreadNum - } - vm, err := wasmvm.NewVM( filepath.Join(homePath, config.DBDir), supportedFeatures, types.ContractMemoryLimit, wasmConfig.ContractDebugMode, wasmConfig.ContractMemoryCacheSize, - wasmConfig.RefreshThreadNum, ) if err != nil { From 8c48fee3294d56695c4ef3a1235596696c81655f Mon Sep 17 00:00:00 2001 From: Yun Yeo Date: Fri, 1 Apr 2022 15:24:13 +0900 Subject: [PATCH 7/7] add changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 821cef6cc..a5e079403 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## [unreleased] + +- [\#690](https://github.com/terra-money/core/pull/690) Fix wasm memory leak and module drop order + ## v0.5.17 This release contains security update.