rpc: fix deadlock (#614)

This commit is contained in:
Federico Kunze 2020-11-24 16:15:42 +01:00 committed by GitHub
parent ef4193b4d4
commit 3072376371
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 2 deletions

View File

@ -44,6 +44,10 @@ Ref: https://keepachangelog.com/en/1.0.0/
* (evm) [#603](https://github.com/cosmos/ethermint/pull/603) Add state transition params that enable or disable the EVM `Call` and `Create` operations. * (evm) [#603](https://github.com/cosmos/ethermint/pull/603) Add state transition params that enable or disable the EVM `Call` and `Create` operations.
* (deps) [\#602](https://github.com/cosmos/ethermint/pull/602) Bump tendermint version to [v0.33.9](https://github.com/tendermint/tendermint/releases/tag/v0.33.9) * (deps) [\#602](https://github.com/cosmos/ethermint/pull/602) Bump tendermint version to [v0.33.9](https://github.com/tendermint/tendermint/releases/tag/v0.33.9)
### Bug Fixes
* (rpc) [\#613](https://github.com/cosmos/ethermint/issues/613) Fix potential deadlock caused if the keyring `List` returned an error.
## [v0.3.0] - 2020-11-16 ## [v0.3.0] - 2020-11-16
### API Breaking ### API Breaking

View File

@ -196,6 +196,7 @@ func (api *PublicEthereumAPI) GasPrice() *hexutil.Big {
func (api *PublicEthereumAPI) Accounts() ([]common.Address, error) { func (api *PublicEthereumAPI) Accounts() ([]common.Address, error) {
api.logger.Debug("eth_accounts") api.logger.Debug("eth_accounts")
api.keyringLock.Lock() api.keyringLock.Lock()
defer api.keyringLock.Unlock()
addresses := make([]common.Address, 0) // return [] instead of nil if empty addresses := make([]common.Address, 0) // return [] instead of nil if empty
@ -204,8 +205,6 @@ func (api *PublicEthereumAPI) Accounts() ([]common.Address, error) {
return addresses, err return addresses, err
} }
api.keyringLock.Unlock()
for _, info := range infos { for _, info := range infos {
addressBytes := info.GetPubKey().Address().Bytes() addressBytes := info.GetPubKey().Address().Bytes()
addresses = append(addresses, common.BytesToAddress(addressBytes)) addresses = append(addresses, common.BytesToAddress(addressBytes))