From cc5ada63a445bf9b69a4f44d76b18759bffa20bf Mon Sep 17 00:00:00 2001 From: Felix Lee Date: Sat, 7 Oct 2017 05:11:42 -0700 Subject: [PATCH] fixes #1251, race when writing indexes --- internal/repository/master_index.go | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/internal/repository/master_index.go b/internal/repository/master_index.go index 0902dcfac..ad458774d 100644 --- a/internal/repository/master_index.go +++ b/internal/repository/master_index.go @@ -120,19 +120,16 @@ func (mi *MasterIndex) Remove(index *Index) { // Store remembers the id and pack in the index. func (mi *MasterIndex) Store(pb restic.PackedBlob) { - mi.idxMutex.RLock() + mi.idxMutex.Lock() + defer mi.idxMutex.Unlock() + for _, idx := range mi.idx { if !idx.Final() { - mi.idxMutex.RUnlock() idx.Store(pb) return } } - mi.idxMutex.RUnlock() - mi.idxMutex.Lock() - defer mi.idxMutex.Unlock() - newIdx := NewIndex() newIdx.Store(pb) mi.idx = append(mi.idx, newIdx)