iwanbolzern opened a new issue #15287:
URL: https://github.com/apache/airflow/issues/15287
**Apache Airflow version**: 2.0.1
**Kubernetes version (if you are using kubernetes)** (use `kubectl
version`):
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.14",
GitCommit:"5de7fd1f9555368a86eb0f8f664dc58055c17269", GitTreeState:"clean",
BuildDate:"2021-01-18T09:31:01Z", GoVersion:"go1.13.15", Compiler:"gc",
Platform:"linux/amd64"}
**Environment**: TEST
- **Cloud provider or hardware configuration**: Azure Kubernetes
- **OS** (e.g. from /etc/os-release): airflow docker image with tag
apache/airflow:2.0.1-python3.8
- **Kernel** (e.g. `uname -a`):
- **Install tools**:
- **Others**:
**What happened**:
```
[2021-04-08 15:23:24,215] {dagbag.py:448} INFO - Filling up the DagBag from
/opt/airflow/dags/dag_xxxx.py
Running <TaskInstance: xxx.xxxx 2021-02-03T13:00:00+00:00 [queued]> on host
xxxx.392653599def4692b6d1eecae Traceback (most recent call last):
File "/home/airflow/.local/bin/airflow", line 8, in <module>
sys.exit(main())
File
"/home/airflow/.local/lib/python3.8/site-packages/airflow/__main__.py", line
40, in main
args.func(args)
File
"/home/airflow/.local/lib/python3.8/site-packages/airflow/cli/cli_parser.py",
line 48, in command
return func(*args, **kwargs)
File
"/home/airflow/.local/lib/python3.8/site-packages/airflow/utils/cli.py", line
89, in wrapper
return f(*args, **kwargs)
File
"/home/airflow/.local/lib/python3.8/site-packages/airflow/cli/commands/task_command.py",
line 235, in task_run
_run_task_by_selected_method(args, dag, ti)
File
"/home/airflow/.local/lib/python3.8/site-packages/airflow/cli/commands/task_command.py",
line 64, in _run_task_by_selected_method
_run_task_by_local_task_job(args, ti)
File
"/home/airflow/.local/lib/python3.8/site-packages/airflow/cli/commands/task_command.py",
line 124, in _run_task_by_local_task_job
logging.shutdown()
File "/usr/local/lib/python3.8/logging/__init__.py", line 2123, in shutdown
h.close()
File
"/home/airflow/.local/lib/python3.8/site-packages/airflow/providers/microsoft/azure/log/wasb_task_handler.py",
line 97, in close
self.wasb_write(log, remote_loc, append=True)
File
"/home/airflow/.local/lib/python3.8/site-packages/airflow/providers/microsoft/azure/log/wasb_task_handler.py",
line 178, in wasb_write
log = '\n'.join([old_log, log]) if old_log else log
TypeError: sequence item 0: expected str instance, bytes found
[2021-04-08 15:23:51,271] {wasb.py:304} INFO - Attempting to create
container: airflow-logs
[2021-04-08 15:23:51,280] {wasb.py:309} INFO - Container airflow-logs
already exists
[2021-04-08 15:23:51,287] {wasb.py:304} INFO - Attempting to create
container: airflow-logs
[2021-04-08 15:23:51,293] {wasb.py:309} INFO - Container airflow-logs
already exists
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/logging/__init__.py", line 2123, in shutdown
h.close()
File
"/home/airflow/.local/lib/python3.8/site-packages/airflow/providers/microsoft/azure/log/wasb_task_handler.py",
line 97, in close
self.wasb_write(log, remote_loc, append=True)
File
"/home/airflow/.local/lib/python3.8/site-packages/airflow/providers/microsoft/azure/log/wasb_task_handler.py",
line 178, in wasb_write
log = '\n'.join([old_log, log]) if old_log else log
TypeError: sequence item 0: expected str instance, bytes found
```
When I download the log file, it looks like:
```
xxxx.2deb6142e11d432797e534081bc
*** Reading remote log from
wasb-airflow-logs-test/xxxx/ftp_agg_ch_sensor/2021-02-01T13:00:00+00:00/1.log.
b"[2021-04-01 10:11:10,052] ...."
```
**What you expected to happen**:
To me it seems as if load_string does not proper encode the string value
before uploading into the wasb container. But this is just a feeling and not
validated.
```
def load_string(self, string_data: str, container_name: str, blob_name: str,
**kwargs) -> None:
"""
Upload a string to Azure Blob Storage.
:param string_data: String to load.
:type string_data: str
:param container_name: Name of the container.
:type container_name: str
:param blob_name: Name of the blob.
:type blob_name: str
:param kwargs: Optional keyword arguments that ``BlobClient.upload()``
takes.
:type kwargs: object
"""
# Reorder the argument order from
airflow.providers.amazon.aws.hooks.s3.load_string.
self.upload(container_name, blob_name, string_data, **kwargs)
```
**How to reproduce it**:
Simply use wasb_task_handler logging and then execute a task twice by
clearing the DAG.
--
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.
For queries about this service, please contact Infrastructure at:
[email protected]