From 159a87faf7bf10c4608f3b84430cf2e28f411dbf Mon Sep 17 00:00:00 2001 From: cheetah Date: Fri, 7 Jul 2023 23:30:57 -0500 Subject: [PATCH] mew --- storageserver/storageserver.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/storageserver/storageserver.go b/storageserver/storageserver.go index 72c78ed..6596a2a 100644 --- a/storageserver/storageserver.go +++ b/storageserver/storageserver.go @@ -683,6 +683,8 @@ func (p *PoolMaster) AcquireNewOrRecoverPool() (pool *Pool, err error) { } func (p *PoolMaster) Lookup(id string) (exists bool) { + p.lock.Lock() + defer p.lock.Unlock() for _, cp := range p.CurrentPool { if cp != nil { // CurrentPool for _, poolItem := range cp.items { @@ -692,8 +694,6 @@ func (p *PoolMaster) Lookup(id string) (exists bool) { } } } - p.lock.Lock() - defer p.lock.Unlock() for _, wormPool := range p.WORMPools { // WORM Pools for _, poolItem := range wormPool.items { if poolItem == id { @@ -877,6 +877,9 @@ func (p *PoolMaster) PackFullPools() (err error) { } func (p *PoolMaster) Fetch(id string, writer io.Writer) (err error) { + var unlocKOnce sync.Once + p.lock.Lock() + defer unlocKOnce.Do(p.lock.Unlock) for _, cp := range p.CurrentPool { if cp != nil { for _, poolItem := range cp.items { @@ -900,17 +903,15 @@ func (p *PoolMaster) Fetch(id string, writer io.Writer) (err error) { } } } - p.lock.Lock() for _, wormPool := range p.WORMPools { for _, poolItem := range wormPool.items { if poolItem == id { fmt.Printf("Fetch WORMPool %s file %s\n", wormPool.PoolID, id) - p.lock.Unlock() return wormPool.Fetch(id, writer) } } } - p.lock.Unlock() + unlocKOnce.Do(p.lock.Unlock) for _, fullPool := range p.FullPools { for _, poolItem := range fullPool.items { if poolItem == id {