code: func (pm *Manager) HandleExitEvent(id string) error {
  	p, err := pm.config.Store.GetV2Plugin(id)
  	if err != nil {
  		return err
  	}
  
  	if err := os.RemoveAll(filepath.Join(pm.config.ExecRoot, id)); err != nil && !os.IsNotExist(err) {
  		logrus.WithError(err).WithField("id", id).Error("Could not remove plugin bundle dir")
  	}
  
  	pm.mu.RLock()
  	c := pm.cMap[p]
  	if c.exitChan != nil {
  		close(c.exitChan)
  		c.exitChan = nil // ignore duplicate events (containerd issue #2299)
  	}
  	restart := c.restart
  	pm.mu.RUnlock()
  
  	if restart {
  		pm.enable(p, c, true)
  	} else {
  		if err := mount.RecursiveUnmount(filepath.Join(pm.config.Root, id)); err != nil {
  			return errors.Wrap(err, "error cleaning up plugin mounts")
  		}
  	}
  	return nil
  }
docs: // HandleExitEvent is called when the executor receives the exit event
  // In the future we may change this, but for now all we care about is the exit event.