Эх сурвалжийг харах

accounts: add walletsNoLock to avoid double read lock (#20655)

Boqin Qin 5 жил өмнө
parent
commit
5f2002bbcc
1 өөрчлөгдсөн 6 нэмэгдсэн , 1 устгасан
  1. 6 1
      accounts/manager.go

+ 6 - 1
accounts/manager.go

@@ -141,6 +141,11 @@ func (am *Manager) Wallets() []Wallet {
 	am.lock.RLock()
 	defer am.lock.RUnlock()
 
+	return am.walletsNoLock()
+}
+
+// walletsNoLock returns all registered wallets. Callers must hold am.lock.
+func (am *Manager) walletsNoLock() []Wallet {
 	cpy := make([]Wallet, len(am.wallets))
 	copy(cpy, am.wallets)
 	return cpy
@@ -155,7 +160,7 @@ func (am *Manager) Wallet(url string) (Wallet, error) {
 	if err != nil {
 		return nil, err
 	}
-	for _, wallet := range am.Wallets() {
+	for _, wallet := range am.walletsNoLock() {
 		if wallet.URL() == parsed {
 			return wallet, nil
 		}