code: func (t *QueueManager) Stop() {
  	level.Info(t.logger).Log("msg", "Stopping remote storage...")
  	defer level.Info(t.logger).Log("msg", "Remote storage stopped.")
  
  	close(t.quit)
  	t.wg.Wait()
  	// Wait for all QueueManager routines to end before stopping shards and WAL watcher. This
  	// is to ensure we don't end up executing a reshard and shards.stop() at the same time, which
  	// causes a closed channel panic.
  	t.shards.stop()
  	t.watcher.Stop()
  
  	// On shutdown, release the strings in the labels from the intern pool.
  	t.seriesMtx.Lock()
  	defer t.seriesMtx.Unlock()
  	for _, labels := range t.seriesLabels {
  		release(labels)
  	}
  	// Delete metrics so we don't have alerts for queues that are gone.
  	name := t.client.Name()
  	queueHighestSentTimestamp.DeleteLabelValues(name)
  	queuePendingSamples.DeleteLabelValues(name)
  	enqueueRetriesTotal.DeleteLabelValues(name)
  	droppedSamplesTotal.DeleteLabelValues(name)
  	numShards.DeleteLabelValues(name)
  	failedSamplesTotal.DeleteLabelValues(name)
  	sentBatchDuration.DeleteLabelValues(name)
  	succeededSamplesTotal.DeleteLabelValues(name)
  	retriedSamplesTotal.DeleteLabelValues(name)
  	shardCapacity.DeleteLabelValues(name)
  }
docs: // Stop stops sending samples to the remote storage and waits for pending
  // sends to complete.