code: func (ix *Index) indexReadyBlobs(ctx context.Context) {
  	defer ix.reindexWg.Done()
  	ix.RLock()
  	// For tests
  	if ix.oooDisabled {
  		ix.RUnlock()
  		return
  	}
  	ix.RUnlock()
  	failed := make(map[blob.Ref]bool)
  	for {
  		ix.Lock()
  		if len(ix.readyReindex) == 0 {
  			ix.Unlock()
  			return
  		}
  		var br blob.Ref
  		for br = range ix.readyReindex {
  			break
  		}
  		delete(ix.readyReindex, br)
  		ix.Unlock()
  		if err := ix.indexBlob(ctx, br); err != nil {
  			log.Printf("out-of-order indexBlob(%v) = %v", br, err)
  			failed[br] = true
  		}
  	}
  	ix.Lock()
  	defer ix.Unlock()
  	for br := range failed {
  		ix.readyReindex[br] = true
  	}
  }
docs: // indexReadyBlobs indexes blobs that have been recently marked as ready to be
  // reindexed, after the blobs they depend on eventually were indexed.