code: func (process *TeleportProcess) periodicSyncRotationState() error {
  	// start rotation only after teleport process has started
  	eventC := make(chan Event, 1)
  	process.WaitForEvent(process.ExitContext(), TeleportReadyEvent, eventC)
  	select {
  	case <-eventC:
  		process.Infof("The new service has started successfully. Starting syncing rotation status with period %v.", process.Config.PollingPeriod)
  	case <-process.ExitContext().Done():
  		return nil
  	}
  
  	retryTicker := time.NewTicker(defaults.HighResPollingPeriod)
  	defer retryTicker.Stop()
  	for {
  		err := process.syncRotationStateCycle()
  		if err == nil {
  			return nil
  		}
  		process.Warningf("Sync rotation state cycle failed: %v, going to retry after %v.", err, defaults.HighResPollingPeriod)
  		select {
  		case <-retryTicker.C:
  		case <-process.ExitContext().Done():
  			return nil
  		}
  	}
  }
docs: // periodicSyncRotationState checks rotation state periodically and
  // takes action if necessary