mortazakiani opened a new issue, #67028:
URL: https://github.com/apache/airflow/issues/67028
### Under which category would you file this issue?
Helm chart
### Apache Airflow version
airflow3.1.7
### What happened and how to reproduce it?
i use git sync and my dag name in gitlab contain space character the dag
proccessor will restart
### What you think should happen instead?
the space character of dag proccesor
### Operating System
rocky 9.6
### Deployment
Official Apache Airflow Helm Chart
### Apache Airflow Provider(s)
_No response_
### Versions of Apache Airflow Providers
3.1.7
### Official Helm Chart version
1.19.0
### Kubernetes Version
1.35.0
### Helm Chart configuration
airflowConfigAnnotations: {}
airflowHome: /opt/airflow
airflowPodAnnotations: {}
airflowVersion: 3.1.7
allowJobLaunching: false
allowPodLaunching: true
apiSecretKeySecretName: airflow-api-secret
apiServer:
affinity: {}
allowPodLogReading: true
annotations: {}
enabled: true
env: []
extraContainers: []
extraInitContainers: []
extraVolumeMounts: []
extraVolumes: []
hpa:
behavior:
scaleDown:
stabilizationWindowSeconds: 300
scaleUp:
stabilizationWindowSeconds: 0
enabled: true
maxReplicaCount: 5
metrics:
- resource:
name: memory
target:
averageUtilization: 80
type: Utilization
type: Resource
minReplicaCount: 1
labels: {}
livenessProbe:
failureThreshold: 5
initialDelaySeconds: 15
periodSeconds: 10
scheme: HTTP
timeoutSeconds: 5
nodeSelector:
airflow-role: core
podAnnotations: {}
podDisruptionBudget:
enabled: false
readinessProbe:
failureThreshold: 5
initialDelaySeconds: 15
periodSeconds: 10
scheme: HTTP
timeoutSeconds: 5
replicas: 1
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: "1"
memory: 2Gi
securityContexts:
container: {}
pod: {}
service:
annotations: {}
ports:
- name: api-server
port: '{{ .Values.ports.apiServer }}'
type: ClusterIP
serviceAccount:
annotations: {}
automountServiceAccountToken: true
create: true
startupProbe:
failureThreshold: 6
initialDelaySeconds: 0
periodSeconds: 10
scheme: HTTP
timeoutSeconds: 20
tolerations: []
waitForMigrations:
enabled: true
cleanup:
affinity: {}
args:
- bash
- -c
- exec airflow kubernetes cleanup-pods --namespace={{ .Release.Namespace }}
enabled: false
labels: {}
nodeSelector:
airflow-role: core
podAnnotations: {}
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: "1"
memory: 2Gi
schedule: '*/15 * * * *'
securityContexts:
container: {}
pod: {}
serviceAccount:
annotations: {}
automountServiceAccountToken: true
create: true
tolerations: []
config:
api:
auth_jwt_leeway: "30"
base_url: https://edl-dm.mtnirancell.ir
core:
auth_manager:
airflow.providers.fab.auth_manager.fab_auth_manager.FabAuthManager
colored_console_log: "False"
dags_folder: '{{ include "airflow_dags" . }}'
executor: '{{ .Values.executor }}'
load_examples: "False"
max_active_tasks_per_dag: 16
parallelism: 32
remote_logging: "False"
database:
sql_alchemy_max_overflow: "30"
sql_alchemy_pool_pre_ping: "True"
sql_alchemy_pool_recycle: "1800"
sql_alchemy_pool_size: "10"
fab:
enable_proxy_fix: "True"
kubernetes:
kube_client_request_args: '{"_request_timeout": 60}'
multi_namespace_mode: "False"
namespace: '{{ .Release.Namespace }}'
pod_template_file: '{{ include "airflow_pod_template_file" .
}}/pod_template_file.yaml'
worker_container_repository: */apache/airflow-custom
worker_container_tag: latest
kubernetes_executor:
delete_worker_pods: "True"
delete_worker_pods_on_failure: "False"
multi_namespace_mode: "False"
namespace: '{{ .Release.Namespace }}'
pod_template_file: '{{ include "airflow_pod_template_file" .
}}/pod_template_file.yaml'
worker_container_repository: */apache/airflow-custom
worker_container_tag: latest
worker_pods_creation_batch_size: 8
logging:
colored_console_log: "False"
remote_logging: "False"
metrics:
statsd_host: '{{ printf "%s-statsd" (include "airflow.fullname" .) }}'
statsd_on: '{{ ternary "True" "False" .Values.statsd.enabled }}'
statsd_port: 9125
statsd_prefix: airflow
scheduler:
dag_dir_list_interval: "20"
min_file_process_interval: "5"
parsing_processes: "4"
processor_poll_interval: "1"
run_duration: "41460"
scheduler_health_check_threshold: "30"
scheduler_heartbeat_sec: "10"
scheduler_max_threads: "4"
standalone_dag_processor: '{{ ternary "True" "False" (or (semverCompare
">=3.0.0"
.Values.airflowVersion) (.Values.dagProcessor.enabled | default
false)) }}'
statsd_host: '{{ printf "%s-statsd" (include "airflow.fullname" .) }}'
statsd_on: '{{ ternary "True" "False" .Values.statsd.enabled }}'
statsd_port: 9125
statsd_prefix: airflow
webserver:
enable_proxy_fix: "True"
createUserJob:
affinity: {}
applyCustomEnv: true
defaultUser:
email: [email protected]
firstName: admin
lastName: user
password: *
role: Admin
username: admin
enabled: true
extraContainers: []
extraInitContainers: []
extraVolumeMounts: []
extraVolumes: []
nodeSelector:
airflow-role: core
resources:
limits:
cpu: 1800m
memory: 2Gi
requests:
cpu: 800m
memory: 1512Mi
securityContexts:
container: {}
pod: {}
serviceAccount:
annotations: {}
automountServiceAccountToken: true
create: true
tolerations: []
ttlSecondsAfterFinished: 300
useHelmHooks: true
dagProcessor:
affinity: {}
annotations: {}
dagBundleConfigList:
- classpath: airflow.dag_processing.bundles.local.LocalDagBundle
kwargs: {}
name: dags
enabled: true
env: []
extraContainers: []
extraInitContainers: []
extraVolumeMounts: []
extraVolumes: []
labels: {}
livenessProbe:
failureThreshold: 5
initialDelaySeconds: 10
periodSeconds: 60
timeoutSeconds: 20
logGroomerSidecar:
enabled: true
frequencyMinutes: 15
retentionDays: 15
nodeSelector:
airflow-role: core
podAnnotations: {}
replicas: 2
resources:
limits:
cpu: "4"
memory: 4Gi
requests:
cpu: "2"
memory: 2Gi
safeToEvict: true
securityContexts:
container: {}
pod: {}
serviceAccount:
annotations: {}
automountServiceAccountToken: true
create: true
terminationGracePeriodSeconds: 60
tolerations: []
waitForMigrations:
enabled: true
dags:
gitSync:
branch: dev
containerName: git-sync
credentialsSecret: airflow-git-credentials
enabled: true
period: 30s
ref: HEAD
repo: */airflow.git
resources:
limits:
cpu: "2"
memory: 4G
requests:
cpu: 100m
memory: 128Mi
rev: HEAD
securityContexts:
container: {}
subPath: ""
uid: 65533
persistence:
accessMode: ReadWriteMany
enabled: true
size: 20Gi
storageClassName: longhorn
data:
metadataSecretName: ""
databaseCleanup:
affinity: {}
applyCustomEnv: true
enabled: true
failedJobsHistoryLimit: 1
nodeSelector:
airflow-role: core
resources:
limits:
cpu: 1800m
memory: 2Gi
requests:
cpu: 200m
memory: 512Mi
retentionDays: 90
schedule: 0 0 * * 0
serviceAccount:
annotations: {}
automountServiceAccountToken: true
create: true
skipArchive: false
successfulJobsHistoryLimit: 1
tolerations: []
verbose: true
defaultAirflowRepository: */apache/airflow-custom
defaultAirflowTag: latest
elasticsearch:
enabled: false
enableBuiltInSecretEnvVars:
AIRFLOW__API__SECRET_KEY: true
AIRFLOW__API_AUTH__JWT_SECRET: true
AIRFLOW__CELERY__BROKER_URL: false
AIRFLOW__CELERY__CELERY_RESULT_BACKEND: false
AIRFLOW__CELERY__RESULT_BACKEND: false
AIRFLOW__CORE__FERNET_KEY: true
AIRFLOW__CORE__SQL_ALCHEMY_CONN: true
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: true
AIRFLOW__ELASTICSEARCH__ELASTICSEARCH_HOST: false
AIRFLOW__ELASTICSEARCH__HOST: false
AIRFLOW__OPENSEARCH__HOST: false
AIRFLOW__WEBSERVER__SECRET_KEY: true
AIRFLOW_CONN_AIRFLOW_DB: true
env:
- name: PYTHONPATH
value:
/opt/airflow/dags/repo:/opt/airflow/dags/repo/dags:opt/airflow/dags/repo/plugins
- name: SPARK_HOME
value: /opt/spark
- name: JAVA_HOME
value: /opt/java/openjdk
executor: KubernetesExecutor
extraEnv: null
extraEnvFrom: null
fernetKeySecretName: airflow-fernet-secret
flower:
enabled: false
fullnameOverride: airflow
gid: 0
images:
airflow:
pullPolicy: Always
repository: */apache/airflow-custom
tag: latest
gitSync:
pullPolicy: IfNotPresent
repository: */k8s/git-sync/git-sync
tag: v4.4.2
migrationsWaitTimeout: 60
pgbouncer:
pullPolicy: IfNotPresent
repository: */apache/airflow
tag: airflow-pgbouncer-2025.03.05-1.23.1
pgbouncerExporter:
pullPolicy: IfNotPresent
repository: */apache/airflow
tag: airflow-pgbouncer-exporter-2025.03.05-0.18.0
pod_template:
pullPolicy: Always
repository: */apache/airflow-custom
tag: latest
statsd:
pullPolicy: IfNotPresent
repository: */quay/prometheus/statsd-exporter
tag: v0.28.0
useDefaultImageForMigration: false
ingress:
apiServer:
annotations:
cert-manager.io/issuer: airflow-selfsigned-issuer
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
enabled: true
hosts:
- name: *
tls:
enabled: true
secretName: airflow-general-tls-secret
ingressClassName: nginx
path: /
pathType: Prefix
flower:
enabled: false
web:
enabled: false
jwtSecretName: airflow-api-secret
kerberos:
enabled: false
labels: {}
logs:
persistence:
enabled: true
size: 20Gi
storageClassName: longhorn
migrateDatabaseJob:
affinity: {}
applyCustomEnv: true
enabled: true
extraInitContainers: []
extraVolumeMounts: []
extraVolumes: []
nodeSelector:
airflow-role: core
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: 500m
memory: 2Gi
securityContexts:
container: {}
pod: {}
serviceAccount:
annotations: {}
automountServiceAccountToken: true
create: true
tolerations: []
ttlSecondsAfterFinished: 300
useHelmHooks: true
multiNamespaceMode: false
nameOverride: ""
networkPolicies:
enabled: false
opensearch:
enabled: false
pgbouncer:
enabled: false
podTemplate: |
apiVersion: v1
kind: Pod
metadata:
name: airflow-task-pod
spec:
nodeSelector:
airflow-role: exec
tolerations:
- key: "dedicated"
operator: "Equal"
value: "data"
effect: "NoSchedule"
restartPolicy: Never
imagePullSecrets:
- name: harbor-pull-secret
initContainers:
- name: git-sync
image: */git-sync/git-sync:v4.4.2
envFrom:
- secretRef:
name: airflow-git-credentials
env:
- name: GIT_SYNC_REPO
value:*
- name: GIT_SYNC_BRANCH
value: dev
- name: GIT_SYNC_REV
value: HEAD
- name: GIT_SYNC_DEPTH
value: "1"
- name: GIT_SYNC_ROOT
value: /git
- name: GIT_SYNC_DEST
value: repo
- name: GIT_SYNC_ONE_TIME
value: "true"
volumeMounts:
- name: dags
mountPath: /git
containers:
- name: base
image: placeholder
imagePullPolicy: Always
env:
- name: AIRFLOW__CORE__EXECUTION_API_SERVER_URL
value: http://airflow-api-server:8080/execution/
- name: AIRFLOW__DAG_PROCESSOR__DAG_BUNDLE_CONFIG_LIST
value:
'[{"classpath":"airflow.dag_processing.bundles.local.LocalDagBundle","kwargs":{},"name":"dags"}]'
- name: PYTHONPATH
value:
"/opt/airflow/dags/repo:/opt/airflow/dags/repo/dags:/opt/airflow/dags/repo/plugins"
- name: SPARK_HOME
value: /opt/spark
- name: JAVA_HOME
value: /opt/java/openjdk
volumeMounts:
- name: logs
mountPath: /opt/airflow/logs
- name: dags
mountPath: /opt/airflow/dags
subPath: repo
volumes:
- name: logs
persistentVolumeClaim:
claimName: airflow-logs
- name: dags
emptyDir: {}
ports:
airflowUI: 8080
apiServer: 8080
flowerUI: 5555
pgbouncer: 6543
pgbouncerScrape: 9127
redisDB: 6379
statsdIngest: 9125
statsdScrape: 9102
triggererLogs: 8794
workerLogs: 8793
postgresql:
enabled: true
image:
registry: *
repository: */bitnami/postgresql
persistence:
enabled: true
size: 20Gi
storageClass: longhorn
rbac:
create: true
createSCCRoleBinding: false
redis:
enabled: false
revisionHistoryLimit: 3
scheduler:
affinity: {}
annotations: {}
enabled: true
extraContainers: []
extraInitContainers: []
extraVolumeMounts: []
extraVolumes: []
labels: {}
livenessProbe:
failureThreshold: 5
initialDelaySeconds: 10
periodSeconds: 60
timeoutSeconds: 20
logGroomerSidecar:
enabled: true
frequencyMinutes: 15
retentionDays: 15
nodeSelector:
airflow-role: core
podAnnotations: {}
replicas: 2
resources:
limits:
cpu: "4"
memory: 4Gi
requests:
cpu: "2"
memory: 2Gi
safeToEvict: true
securityContexts:
container: {}
pod: {}
serviceAccount:
annotations: {}
automountServiceAccountToken: true
create: true
startupProbe:
failureThreshold: 6
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 20
terminationGracePeriodSeconds: 60
tolerations: []
waitForMigrations:
enabled: true
securityContexts:
containers:
allowPrivilegeEscalation: false
pod:
fsGroup: 0
runAsGroup: 0
runAsUser: 50000
statsd:
enabled: true
triggerer:
enabled: true
uid: 50000
useStandardNaming: true
webserver:
enabled: false
webserverSecretKeySecretName: airflow-api-secret
### Docker Image customizations
_No response_
### Anything else?
the log of dag processor 2026-05-16T07:36:50.294405Z [error ] Invalid
stat name: dag_processing.last_run.seconds_ago.test_of sprak_opertaor.
[airflow.metrics.validators] loc=validators.py:125
Traceback (most recent call last):
File
"/home/airflow/.local/lib/python3.12/site-packages/airflow/metrics/validators.py",
line 122, in wrapper
stat = handler_stat_name_func(stat)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/home/airflow/.local/lib/python3.12/site-packages/airflow/metrics/validators.py",
line 210, in stat_name_default_handler
raise InvalidStatsNameException(
airflow.exceptions.InvalidStatsNameException: The stat name
(dag_processing.last_run.seconds_ago.test_of sprak_opertaor) has to be composed
of ASCII alphabets, numbers, or the underscore, dot, or dash characters.
### Are you willing to submit PR?
- [ ] Yes I am willing to submit a PR!
### Code of Conduct
- [x] I agree to follow this project's [Code of
Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]