def _enforce_instance_details(self): """ Ensures all running instances are configured correctly. """ with (yield self._work_lock.acquire()): # Restart instances with an outdated revision or login server. for instance in self._running_instances: try: version = self._projects_manager.version_from_key(instance.version_key) except KeyError: # If the version no longer exists, avoid doing any work. The # scheduler should remove any assignments for it. continue login_server_changed = ( self._login_server is not None and self._login_server != get_login_server(instance)) if (instance.revision_key != version.revision_key or login_server_changed): logger.info('Configuration changed for {}'.format(instance)) yield self._stop_app_instance(instance) yield self._start_instance(version, instance.port)