Errores conocidos

Managed Airflow (3ª gen.) | Managed Airflow (2ª gen.) | Managed Airflow (1ª gen. heredada)

En esta página, se enumeran los problemas conocidos de Managed Airflow. Para obtener información sobre las correcciones de problemas, consulta las notas de la versión.

La primera ejecución del DAG para un archivo DAG subido arroja varias tareas con errores

Cuando subes un archivo DAG, a veces las primeras tareas del primer DAG que se ejecutan para él fallan debido al error Unable to read remote log.... Este problema ocurre porque el archivo de DAG se sincroniza entre el bucket de tu entorno, los trabajadores de Airflow y los programadores de Airflow de tu entorno. Si el programador obtiene el archivo DAG y lo programa para que lo ejecute un trabajador, y si el trabajador aún no tiene el archivo DAG, la ejecución de la tarea falla.

Para mitigar este problema, los entornos con Airflow 2 están configurados para realizar dos reintentos de una tarea con errores de forma predeterminada. Si una tarea falla, se reintenta dos veces con intervalos de 5 minutos.

Managed Airflow no debería verse afectado por la vulnerabilidad de Apache Log4j 2 (CVE-2021-44228)

En respuesta a la vulnerabilidad de Apache Log4j 2 (CVE-2021-44228), Managed Airflow realizó una investigación detallada y creemos que Managed Airflow no es vulnerable a este exploit.

A veces, la IU de Airflow no vuelve a cargar un complemento una vez que se cambia

Si un complemento consta de muchos archivos que importan otros módulos, es posible que la IU de Airflow no pueda reconocer el hecho de que se debe volver a cargar un complemento. En ese caso, reinicia el servidor web de Airflow de tu entorno.

Error 504 cuando se accede a la IU de Airflow

Puedes obtener el error 504 Gateway Timeout cuando accedes a la IU de Airflow. Este error puede tener varias causas:

  • Problema de comunicación transitorio. En este caso, intenta acceder a la IU de Airflow más tarde. También puedes reiniciar el servidor web de Airflow.

  • (Solo Managed Airflow (3ª gen.)) Problema de conectividad. Si la IU de Airflow no está disponible de forma permanente y se generan errores de tiempo de espera o 504, asegúrate de que tu entorno pueda acceder a *.composer.googleusercontent.com.

  • (Solo para Managed Airflow (2ª gen.)) Problema de conectividad. Si la IU de Airflow no está disponible de forma permanente y se generan errores de tiempo de espera o 504, asegúrate de que tu entorno pueda acceder a *.composer.cloud.google.com. Si usas el Acceso privado a Google y envías tráfico a través de IP virtuales de private.googleapis.com, o los Controles del servicio de VPC y envías tráfico a través de IP virtuales de restricted.googleapis.com, asegúrate de que tu Cloud DNS también esté configurado para los nombres de dominio de *.composer.cloud.google.com.

  • El servidor web de Airflow no responde. Si el error 504 persiste, pero aún puedes acceder a la IU de Airflow en ciertos momentos, es posible que el servidor web de Airflow no responda porque está sobrecargado. Intenta aumentar los parámetros de escala y rendimiento del servidor web.

Error 502 cuando se accede a la IU de Airflow

El error 502 Internal server exception indica que la IU de Airflow no puede atender las solicitudes entrantes. Este error puede tener varias causas:

  • Problema de comunicación transitorio. Intenta acceder a la IU de Airflow más tarde.

  • No se pudo iniciar el servidor web. Para comenzar, el servidor web requiere que primero se sincronicen los archivos de configuración. Revisa los registros del servidor web para buscar entradas de registro que se vean similares a las siguientes: GCS sync exited with 1: gcloud storage cp gs://<bucket-name>/airflow.cfg /home/airflow/gcs/airflow.cfg.tmp o GCS sync exited with 1: gcloud storage cp gs://<bucket-name>/env_var.json.cfg /home/airflow/gcs/env_var.json.tmp. Si ves estos errores, verifica si los archivos mencionados en los mensajes de error siguen presentes en el bucket del entorno.

    En caso de que se quiten de forma accidental (por ejemplo, porque se configuró una política de retención), puedes restablecerlos de la siguiente manera:

    1. Establece una nueva variable de entorno en tu entorno. Puedes usar cualquier nombre y valor de variable.

    2. Anula una opción de configuración de Airflow. Puedes usar una opción de configuración de Airflow que no exista.

Error 500 cuando se accede a la IU de Airflow después de anular [webserver]analytics_tool

En entornos con Airflow 2, si anulas la opción de configuración de Airflow [webserver]analytics_tool para enrutar datos de uso anónimos de la IU de Airflow a un servicio de estadísticas (como Google Analytics, Segment, MetaRouter o Matomo), acceder a la IU de Airflow después de que se actualice el entorno puede devolver una respuesta (500) Internal Server Error, con uno de los siguientes errores en los registros del servidor web de Airflow:

airflow.exceptions.AirflowConfigException: section/key [webserver/analytics_id] not found in config
airflow.exceptions.AirflowConfigException: section/key [webserver/analytics_url] not found in config

Cuando se configura [webserver]analytics_tool en Airflow 2, el servidor web de Airflow requiere que también se definan las opciones de estadísticas complementarias en la sección [webserver] cuando se renderiza la IU de Airflow.

En Airflow 3, se quitan las opciones de configuración [webserver]analytics_tool, [webserver]analytics_id y [webserver]analytics_url.

Soluciones:

  • Quita la anulación de la opción de configuración de Airflow [webserver]analytics_tool.
  • Especifica todas las opciones de configuración de Airflow requeridas juntas:
    • [webserver]analytics_tool
    • [webserver]analytics_id
    • [webserver]analytics_url (obligatorio en Airflow 2.9 y versiones posteriores, incluso si tu herramienta de estadísticas no usa una URL personalizada)

Cuando se coloca el cursor sobre la instancia de tarea en la vista de árbol, se genera un TypeError no detectado

En Airflow 2, la vista de árbol en la IU de Airflow puede no funcionar correctamente cuando se usa una zona horaria no predeterminada. Como solución alternativa para este problema, configura la zona horaria de forma explícita en la IU de Airflow.

Carpetas vacías en el programador y los trabajadores

Managed Airflow no quita de forma activa las carpetas vacías de los trabajadores y programadores de Airflow. Estas entidades se pueden crear como resultado del proceso de sincronización del bucket del entorno cuando estas carpetas existían en el bucket y, finalmente, se quitaron.

Recomendación: Ajusta tus DAG para que estén preparados para omitir esas carpetas vacías.

Estas entidades se quitan de los almacenamientos locales de los programadores y trabajadores de Airflow cuando se reinician estos componentes (por ejemplo, como resultado de operaciones de reducción de escala o mantenimiento en el clúster de tu entorno).

Compatibilidad con Kerberos

Managed Airflow no admite la configuración de Kerberos de Airflow.

Compatibilidad con clases de procesamiento en Managed Airflow (2ª gen.) y Managed Airflow (3ª gen.)

Airflow administrado (3ª gen.) y Airflow administrado (2ª gen.) solo admiten la clase de procesamiento de uso general. Esto significa que no es posible ejecutar Pods que soliciten otras clases de procesamiento (como Balanced o Scale-Out).

La clase de uso general permite ejecutar Pods que soliciten hasta 110 GB de memoria y hasta 30 CPU (como se describe en Solicitudes máximas de clase de procesamiento.

Si quieres usar una arquitectura basada en ARM o necesitas más CPU y memoria, debes usar una clase de procesamiento diferente, que no se admite en los clústeres de Managed Airflow (Gen 3) y Managed Airflow (Gen 2).

Recomendación: Usa GKEStartPodOperator para ejecutar Pods de Kubernetes en un clúster diferente que admita la clase de procesamiento seleccionada. Si ejecutas Pods personalizados que requieren una clase de procesamiento diferente, también deben ejecutarse en un clúster de Managed Airflow.

No es posible reducir el almacenamiento de Cloud SQL

Managed Airflow usa Cloud SQL para ejecutar la base de datos de Airflow. Con el tiempo, el almacenamiento en disco de la instancia de Cloud SQL puede aumentar, ya que el disco se escala para adaptarse a los datos que almacenan las operaciones de Cloud SQL cuando crece la base de datos de Airflow.

No es posible reducir el tamaño del disco de Cloud SQL.

Como solución alternativa, si quieres usar el tamaño de disco de Cloud SQL más pequeño, puedes volver a crear entornos de Managed Airflow con instantáneas.

La métrica de uso del disco de la base de datos no se reduce después de quitar registros de Cloud SQL

Las bases de datos relacionales, como Postgres o MySQL, no quitan físicamente las filas cuando se borran o actualizan. En su lugar, las marca como "tuplas inactivas" para mantener la coherencia de los datos y evitar el bloqueo de transacciones simultáneas.

Tanto MySQL como Postgres implementan mecanismos para recuperar espacio después de borrar registros.

Si bien es posible forzar a la base de datos a recuperar el espacio en el disco sin usar, esta es una operación que consume muchos recursos y que, además, bloquea la base de datos, lo que hace que Managed Airflow no esté disponible. Por lo tanto, se recomienda confiar en los mecanismos de compilación para recuperar el espacio no utilizado.

Acceso bloqueado: error de autorización

Si este problema afecta a un usuario, el diálogo Acceso bloqueado: Error de autorización contiene el mensaje Error 400: admin_policy_enforced.

Si la opción Controles de API > Apps de terceros no configuradas > No permitir que los usuarios accedan a ninguna app de terceros está habilitada en Google Workspace y la app de Apache Airflow en Managed Airflow no está permitida de forma explícita, los usuarios no pueden acceder a la IU de Airflow, a menos que permitan la aplicación de forma explícita.

Para permitir el acceso, sigue los pasos que se indican en Permite el acceso a la IU de Airflow en Google Workspace.

Bucle de acceso cuando se accede a la IU de Airflow

Este problema puede deberse a las siguientes causas:

La carpeta /data no está disponible en el servidor web de Airflow

En Managed Airflow (2ª gen.) y Managed Airflow (3ª gen.), el servidor web de Airflow está diseñado para ser un componente principalmente de solo lectura, y Managed Airflow no sincroniza la carpeta data/ con este componente.

A veces, es posible que quieras compartir archivos comunes entre todos los componentes de Airflow, incluido el servidor web de Airflow.

Solución:

  • Une los archivos que se compartirán con el servidor web en un módulo de PYPI y, luego, instálalo como un paquete de PYPI normal. Después de que se instala el módulo de PyPI en el entorno, los archivos se agregan a las imágenes de los componentes de Airflow y están disponibles para ellos.

  • Agrega archivos a la carpeta plugins/. Esta carpeta se sincroniza con el servidor web de Airflow.

Diagramas de tiempos de análisis de DAG no continuos y de tamaño de bolsa de DAG en la supervisión

Los diagramas de tiempos de análisis de DAG no continuos y de tamaño de bolsa de DAG en el panel de supervisión indican problemas con tiempos de análisis de DAG largos (más de 5 minutos).

Gráficos de tiempos de análisis de DAG de Airflow y tamaño de la bolsa de DAG que muestran una serie de intervalos no continuos
Figura 1. Gráficos de tiempos de análisis de DAG no continuos y tamaño de la bolsa de DAG (haz clic para ampliar)

Solución: Recomendamos mantener el tiempo total de análisis de DAG en menos de 5 minutos. Para reducir el tiempo de análisis de los DAG, sigue los lineamientos para escribir DAG.

Los registros de tareas aparecen con retrasos

Síntoma:

  • En Managed Airflow (3ª gen.), los registros de tareas de Airflow no aparecen de inmediato y se retrasan unos minutos.
  • Es posible que encuentres mensajes de Logs not found for Cloud Logging filter en los registros de Airflow

Causa:

Si tu entorno ejecuta una gran cantidad de tareas al mismo tiempo, los registros de tareas pueden retrasarse porque el tamaño de la infraestructura del entorno no es suficiente para procesar todos los registros con la rapidez necesaria.

Soluciones:

  • Considera aumentar el tamaño de la infraestructura del entorno para mejorar el rendimiento.
  • Distribuye las ejecuciones de DAG en el tiempo para que las tareas no se ejecuten al mismo tiempo.

Aumento de los tiempos de inicio de KubernetesPodOperator y KubernetesExecutor

Los Pods creados con KubernetesPodOperator y las tareas ejecutadas con KubernetesExecutor experimentan tiempos de inicio más largos. El equipo de Managed Airflow está trabajando en una solución y anunciará cuando se resuelva el problema.

Soluciones alternativas:

  • Iniciar Pods con más CPU
  • Si es posible, optimiza las imágenes (menos capas, tamaño más pequeño).

El entorno se encuentra en estado de error después de que se borró o desactivó la cuenta de facturación del proyecto, o se inhabilitó la API de Cloud Composer

Los entornos de Managed Airflow afectados por estos problemas no se pueden recuperar:

  • Después de que se borró o desactivó la cuenta de facturación del proyecto, incluso si se vinculó otra cuenta más adelante.
  • Después de que se inhabilitó la API de Cloud Composer en el proyecto, incluso si se habilitó más tarde.

Puedes hacer lo siguiente para solucionar el problema:

  • Aún puedes acceder a los datos almacenados en los buckets de tu entorno, pero los entornos en sí ya no se pueden usar. Puedes crear un nuevo entorno de Managed Airflow y, luego, transferir tus DAGs y datos.

  • Si deseas realizar alguna de las operaciones que hacen que tus entornos no se puedan recuperar, asegúrate de crear una copia de seguridad de tus datos, por ejemplo, creando una instantánea del entorno. De esta manera, puedes crear otro entorno y transferir sus datos cargando esta instantánea.

No se recopilan los registros de las tareas de Airflow si [core]execute_tasks_new_python_interpreter se establece en True

Managed Airflow no recopila registros de las tareas de Airflow si la opción de configuración de Airflow [core]execute_tasks_new_python_interpreter está establecida en True.

Solución posible:

  • Quita la anulación de esta opción de configuración o establece su valor en False.

Se produce un error cuando se quita el adjunto de red cuando se borra un entorno

Si se borran varios entornos que comparten el mismo adjunto de red al mismo tiempo, algunas operaciones de eliminación fallan con un error.

Síntomas:

Se genera el siguiente error:

Got error while removing Network Attachment: <error code>

El código de error informado puede ser Bad request: <resource> is not ready o Precondition failed: Invalid fingerprint.

Posibles soluciones alternativas:

  • Borra los entornos que usan el mismo adjunto de red uno por uno.

  • Inhabilita la conexión a una red de VPC para tus entornos antes de borrarlos. Recomendamos esta solución alternativa para la eliminación automatizada de entornos.

Rendimiento degradado del entorno en varias versiones del paquete google-api-core

Las versiones del paquete preinstalado google-api-core de la 2.28.0 a la 2.30.2 podrían provocar una degradación del rendimiento del entorno, lo que puede generar tiempos más largos para ejecutar una tarea y tiempos más largos para mover una tarea del estado en cola al estado de ejecución.

Compilaciones de Managed Airflow (3ª gen.) afectadas:

  • composer-3-airflow-3.1.7-build.0 a composer-3-airflow-3.1.7-build.5
  • composer-3-airflow-3.1.0-build.5 a composer-3-airflow-3.1.0-build.10
  • composer-3-airflow-2.11.1-build.0
  • composer-3-airflow-2.10.5-build.22 a composer-3-airflow-2.10.5-build.33
  • composer-3-airflow-2.9.3-build.42 a composer-3-airflow-2.9.3-build.53

Compilaciones de Managed Airflow (2ª gen.) afectadas:

  • composer-2.16.10-airflow-2.11.1
  • composer-2.16.0-airflow-2.10.5 a composer-2.16.10-airflow-2.10.5
  • composer-2.16.0-airflow-2.9.3 a composer-2.16.10-airflow-2.9.3

Te recomendamos que actualices tu entorno a las siguientes versiones, que incluyen una versión del paquete en la que se corrigió el problema o no está presente:

  • composer-3-airflow-3.1.7-build.7 y versiones posteriores
  • composer-3-airflow-2.11.1-build.3 y versiones posteriores
  • composer-3-airflow-2.10.5-build.36 y versiones posteriores
  • composer-3-airflow-2.9.3-build.54 (contiene 2.27.0)
  • composer-2.17.0-airflow-2.11.1 y versiones posteriores
  • composer-2.17.0-airflow-2.10.5 y versiones posteriores
  • composer-2.16.11-airflow-2.11.1 (contiene 2.27.0)
  • composer-2.16.11-airflow-2.10.5 (contiene 2.27.0)
  • composer-2.16.11-airflow-2.9.3 (contiene 2.27.0)

Como solución alternativa, puedes instalar de forma manual una versión posterior del paquete google-api-core en un entorno afectado especificando >=2.30.3 como la versión requerida.

La TI ya no está en estado de ejecución, la tarea debería finalizar y se producen errores de tarea no encontrada en Airflow 3

Airflow 3 tiene dos problemas relacionados con la pérdida del estado de la tarea por parte del programador durante sus reinicios:

  • Estado 409 Conflicto: Una condición de carrera en los programadores provoca la programación de instancias de tareas duplicadas (#59378, resuelto en #60330).

    Este problema se corrigió en Airflow 3.2.2.

  • Error 404 No encontrado: Los trabajadores de Airflow pierden el seguimiento de las instancias de tareas durante un reinicio regular del bucle del programador, que ocurre después de que el programador alcanza [scheduler]num_runs. Esto cambia los IDs de instancia de tarea existentes y genera errores 404 posteriores de un trabajador que no conoce el cambio ( #53140, #60330, resuelto en #61631).

    Este problema se corrigió en Airflow 3.3.1.

Síntomas

  • 409 Conflicto: El estado de limpieza huérfano de un programador reiniciado marca las tareas activas como FAILED, lo que hace que los trabajadores finalicen de forma anormal:

    Server indicated the task shouldn't be running anymore [supervisor]
    detail={'detail': {'reason': 'not_running', 'message': 'TI is no longer in
    the running state and task should terminate', 'current_state': 'scheduled'}} status_code=409 ti_id=UUID('...')
    
  • 404 No encontrado: Un programador reiniciado pierde los estados de las tareas y falla en las verificaciones de pulso de los trabajadores activos:

    Server indicated the task shouldn't be running anymore [detail={'detail':
    {'reason': 'not_found', 'message': 'Task Instance not found'}}]
    [status_code=404] [ti_id=...]
    

Solución:

  • Ambos problemas se corrigieron en la versión 3.3.1 de Airflow y en las posteriores. Actualiza tu entorno a una versión que use Airflow 3.3.1.

Posibles soluciones alternativas:

  • No es posible mitigar por completo el problema en las versiones de Airflow anteriores a la 3.3.1. Cualquier evento externo que haga que un solo programador se reinicie de forma inesperada activará los errores 404 y 409 (en las versiones de Airflow anteriores a la 3.2.2). Algunos ejemplos de estos eventos son las actualizaciones automáticas de los nodos en el clúster de tu entorno, las condiciones de OOM en los Pods o el alto consumo de memoria y CPU por parte de los programadores.

  • Reducir la escala de tu entorno a un programador y establecer la opción de configuración [scheduler]num_runs en -1 mitiga la causa de las condiciones de carrera en los programadores.

    En un entorno de alta resiliencia (alta disponibilidad), no es posible reducir la cantidad de programadores a uno. Aún puedes establecer [scheduler]num_runs en -1.

  • Asegúrate de que el consumo de memoria y CPU por parte del programador esté dentro de los límites de recursos disponibles.

¿Qué sigue?