Просмотр исходного кода

lib/db: Hold update lock while taking snapshot (#9496)

Jakob Borg 1 год назад
Родитель
Сommit
2e7c03420f
1 измененных файлов с 4 добавлено и 0 удалено
  1. 4 0
      lib/db/set.go

+ 4 - 0
lib/db/set.go

@@ -168,6 +168,10 @@ type Snapshot struct {
 func (s *FileSet) Snapshot() (*Snapshot, error) {
 	opStr := fmt.Sprintf("%s Snapshot()", s.folder)
 	l.Debugf(opStr)
+
+	s.updateMutex.Lock()
+	defer s.updateMutex.Unlock()
+
 	t, err := s.db.newReadOnlyTransaction()
 	if err != nil {
 		s.db.handleFailure(err)