code: func (process *TeleportProcess) syncRotationStateAndBroadcast(conn *Connector) (*rotationStatus, error) {
  	status, err := process.syncRotationState(conn)
  	if err != nil {
  		process.BroadcastEvent(Event{Name: TeleportDegradedEvent, Payload: nil})
  		if trace.IsConnectionProblem(err) {
  			process.Warningf("Connection problem: sync rotation state: %v.", err)
  		} else {
  			process.Warningf("Failed to sync rotation state: %v.", err)
  		}
  		return nil, trace.Wrap(err)
  	}
  	process.BroadcastEvent(Event{Name: TeleportOKEvent, Payload: nil})
  
  	if status.phaseChanged || status.needsReload {
  		process.Debugf("Sync rotation state detected cert authority reload phase update.")
  	}
  	if status.phaseChanged {
  		process.BroadcastEvent(Event{Name: TeleportPhaseChangeEvent})
  	}
  	if status.needsReload {
  		process.Debugf("Triggering reload process.")
  		process.BroadcastEvent(Event{Name: TeleportReloadEvent})
  	}
  	return status, nil
  }
docs: // syncRotationStateAndBroadcast syncs rotation state and broadcasts events
  // when phase has been changed or reload happened