-
Notifications
You must be signed in to change notification settings - Fork 16.4k
Closed
Labels
affected_version:main_branchIssues Reported for main branchIssues Reported for main brancharea:corearea:system-testskind:bugThis is a clearly a bugThis is a clearly a bug
Description
Apache Airflow version
2.7.1
What happened
The Dynamo-to-S3 system test has been failing since #34492 got merged. It looks like the get_export_time task is returning a datetime in a format that is no longer being supported. This might be a matter of just converting the format of that return value, but it ma also indicate a larger issue with that change.
Relevant logs for the failing test runs:
INFO [airflow.task] Executing <Task(DynamoDBToS3Operator): backup_db_to_point_in_time> on 2021-01-01 00:00:00+00:00
--
ERROR [airflow.task.operators] Exception rendering Jinja template for task 'backup_db_to_point_in_time', field 'export_time'. Template: XComArg(<Task(_PythonDecoratedOperator): get_export_time>)
Traceback (most recent call last):
File "/opt/airflow/airflow/models/abstractoperator.py", line 699, in _do_render_template_fields
rendered_content = self.render_template(
File "/opt/airflow/airflow/template/templater.py", line 157, in render_template
return value.resolve(context)
File "/opt/airflow/airflow/utils/session.py", line 79, in wrapper
return func(*args, session=session, **kwargs)
File "/opt/airflow/airflow/models/xcom_arg.py", line 417, in resolve
result = ti.xcom_pull(
File "/opt/airflow/airflow/utils/session.py", line 76, in wrapper
return func(*args, **kwargs)
File "/opt/airflow/airflow/models/taskinstance.py", line 2967, in xcom_pull
return XCom.deserialize_value(first)
File "/opt/airflow/airflow/models/xcom.py", line 696, in deserialize_value
return BaseXCom._deserialize_value(result, False)
File "/opt/airflow/airflow/models/xcom.py", line 689, in _deserialize_value
return json.loads(result.value.decode("UTF-8"), cls=XComDecoder, object_hook=object_hook)
File "/usr/local/lib/python3.8/json/__init__.py", line 370, in loads
return cls(**kw).decode(s)
File "/usr/local/lib/python3.8/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/local/lib/python3.8/json/decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
File "/opt/airflow/airflow/utils/json.py", line 117, in object_hook
return deserialize(dct)
File "/opt/airflow/airflow/serialization/serde.py", line 255, in deserialize
return _deserializers[classname].deserialize(classname, version, deserialize(value))
File "/opt/airflow/airflow/serialization/serializers/datetime.py", line 86, in deserialize
tz = deserialize_timezone(data[TIMEZONE][1], data[TIMEZONE][2], data[TIMEZONE][0])
File "/opt/airflow/airflow/serialization/serializers/timezone.py", line 72, in deserialize
return timezone(data)
File "/usr/local/lib/python3.8/site-packages/pendulum/tz/__init__.py", line 37, in timezone
tz = _Timezone(name, extended=extended)
File "/usr/local/lib/python3.8/site-packages/pendulum/tz/timezone.py", line 40, in __init__
tz = read(name, extend=extended)
File "/usr/local/lib/python3.8/site-packages/pendulum/tz/zoneinfo/__init__.py", line 9, in read
return Reader(extend=extend).read_for(name)
File "/usr/local/lib/python3.8/site-packages/pendulum/tz/zoneinfo/reader.py", line 50, in read_for
file_path = pytzdata.tz_path(timezone)
File "/usr/local/lib/python3.8/site-packages/pytzdata/__init__.py", line 63, in tz_path
raise ValueError('Invalid timezone')
ValueError: Invalid timezone
ERROR [airflow.models.taskinstance.TaskInstance] Task failed with exception
Traceback (most recent call last):
File "/opt/airflow/airflow/models/taskinstance.py", line 2246, in _run_raw_task
self._execute_task_with_callbacks(context, test_mode, session=session)
File "/opt/airflow/airflow/models/taskinstance.py", line 2375, in _execute_task_with_callbacks
task_orig = self.render_templates(context=context)
File "/opt/airflow/airflow/models/taskinstance.py", line 2787, in render_templates
original_task.render_template_fields(context)
File "/opt/airflow/airflow/models/baseoperator.py", line 1248, in render_template_fields
self._do_render_template_fields(self, self.template_fields, context, jinja_env, set())
File "/opt/airflow/airflow/utils/session.py", line 79, in wrapper
return func(*args, session=session, **kwargs)
File "/opt/airflow/airflow/models/abstractoperator.py", line 699, in _do_render_template_fields
rendered_content = self.render_template(
File "/opt/airflow/airflow/template/templater.py", line 157, in render_template
return value.resolve(context)
File "/opt/airflow/airflow/utils/session.py", line 79, in wrapper
return func(*args, session=session, **kwargs)
File "/opt/airflow/airflow/models/xcom_arg.py", line 417, in resolve
result = ti.xcom_pull(
File "/opt/airflow/airflow/utils/session.py", line 76, in wrapper
return func(*args, **kwargs)
File "/opt/airflow/airflow/models/taskinstance.py", line 2967, in xcom_pull
return XCom.deserialize_value(first)
File "/opt/airflow/airflow/models/xcom.py", line 696, in deserialize_value
return BaseXCom._deserialize_value(result, False)
File "/opt/airflow/airflow/models/xcom.py", line 689, in _deserialize_value
return json.loads(result.value.decode("UTF-8"), cls=XComDecoder, object_hook=object_hook)
File "/usr/local/lib/python3.8/json/__init__.py", line 370, in loads
return cls(**kw).decode(s)
File "/usr/local/lib/python3.8/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/local/lib/python3.8/json/decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
File "/opt/airflow/airflow/utils/json.py", line 117, in object_hook
return deserialize(dct)
File "/opt/airflow/airflow/serialization/serde.py", line 255, in deserialize
return _deserializers[classname].deserialize(classname, version, deserialize(value))
File "/opt/airflow/airflow/serialization/serializers/datetime.py", line 86, in deserialize
tz = deserialize_timezone(data[TIMEZONE][1], data[TIMEZONE][2], data[TIMEZONE][0])
File "/opt/airflow/airflow/serialization/serializers/timezone.py", line 72, in deserialize
return timezone(data)
File "/usr/local/lib/python3.8/site-packages/pendulum/tz/__init__.py", line 37, in timezone
tz = _Timezone(name, extended=extended)
File "/usr/local/lib/python3.8/site-packages/pendulum/tz/timezone.py", line 40, in __init__
tz = read(name, extend=extended)
File "/usr/local/lib/python3.8/site-packages/pendulum/tz/zoneinfo/__init__.py", line 9, in read
return Reader(extend=extend).read_for(name)
File "/usr/local/lib/python3.8/site-packages/pendulum/tz/zoneinfo/reader.py", line 50, in read_for
file_path = pytzdata.tz_path(timezone)
File "/usr/local/lib/python3.8/site-packages/pytzdata/__init__.py", line 63, in tz_path
raise ValueError('Invalid timezone')
ValueError: Invalid timezone
What you think should happen instead
The PR I referenced broke existing code. If this is a matter of adjusting one return value that's great, but it may indicate a larger issue.
How to reproduce
The issue comes up when running the system test, there are surely other ways to repro it.
Operating System
linux
Versions of Apache Airflow Providers
No response
Deployment
Other
Deployment details
No response
Anything else
No response
Are you willing to submit PR?
- Yes I am willing to submit a PR!
Code of Conduct
- I agree to follow this project's Code of Conduct
Metadata
Metadata
Assignees
Labels
affected_version:main_branchIssues Reported for main branchIssues Reported for main brancharea:corearea:system-testskind:bugThis is a clearly a bugThis is a clearly a bug