code: func (t *QueueManager) StoreSeries(series []tsdb.RefSeries, index int) {
  	// Lock before any calls to labelsToLabels proto, as that's where string interning is done.
  	t.seriesMtx.Lock()
  	defer t.seriesMtx.Unlock()
  
  	temp := make(map[uint64][]prompb.Label, len(series))
  	for _, s := range series {
  		ls := processExternalLabels(s.Labels, t.externalLabels)
  		rl := relabel.Process(ls, t.relabelConfigs...)
  		if len(rl) == 0 {
  			t.droppedSeries[s.Ref] = struct{}{}
  			continue
  		}
  		temp[s.Ref] = labelsToLabelsProto(rl)
  	}
  
  	for ref, labels := range temp {
  		t.seriesSegmentIndexes[ref] = index
  
  		// We should not ever be replacing a series labels in the map, but just
  		// in case we do we need to ensure we do not leak the replaced interned
  		// strings.
  		if orig, ok := t.seriesLabels[ref]; ok {
  			release(orig)
  		}
  		t.seriesLabels[ref] = labels
  	}
  }
docs: // StoreSeries keeps track of which series we know about for lookups when sending samples to remote.