code: func StartCompactor(ctx context.Context, client *clientv3.Client, compactInterval time.Duration) {
  	endpointsMapMu.Lock()
  	defer endpointsMapMu.Unlock()
  
  	// In one process, we can have only one compactor for one cluster.
  	// Currently we rely on endpoints to differentiate clusters.
  	for _, ep := range client.Endpoints() {
  		if _, ok := endpointsMap[ep]; ok {
  			klog.V(4).Infof("compactor already exists for endpoints %v", client.Endpoints())
  			return
  		}
  	}
  	for _, ep := range client.Endpoints() {
  		endpointsMap[ep] = struct{}{}
  	}
  
  	if compactInterval != 0 {
  		go compactor(ctx, client, compactInterval)
  	}
  }
docs: // StartCompactor starts a compactor in the background to compact old version of keys that's not needed.
  // By default, we save the most recent 10 minutes data and compact versions > 10minutes ago.
  // It should be enough for slow watchers and to tolerate burst.
  // TODO: We might keep a longer history (12h) in the future once storage API can take advantage of past version of keys.