[Bug] PYTHON_ENABLE_OPENTELEMETRY=true crashes every async invocation (NoneType.extract) on v2 runtime, Python 3.13

Open Beginner friendly
#1,881 2 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
78/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
azure, python

Research direction

Start in runtimes/v2/azure_functions_runtime/handle_event.py at worker_init and compare the PYTHON_ENABLE_OPENTELEMETRY branch with the PYTHON_APPLICATIONINSIGHTS_ENABLE_TELEMETRY path. Then inspect runtimes/v2/azure_functions_runtime/otel.py at configure_opentelemetry; done means async invocations no longer fail when the setting is enabled and trace context is initialized or handled safely.

Written by the indexing model from the issue text.

Description

bug python
Expected Behavior

With host.json telemetryMode: OpenTelemetry and app setting PYTHON_ENABLE_OPENTELEMETRY=true, async functions should invoke normally (the worker should either initialize the OpenTelemetry trace-context propagator or no-op safely)

Actual Behavior

Every async invocation returns HTTP 500. In v2 worker_init (runtimes/v2/azure_functions_runtime/handle_event.py), PYTHON_ENABLE_OPENTELEMETRY=true only calls otel_manager.set_otel_libs_available(True) and never calls update_opentelemetry_status() (unlike the PYTHON_APPLICATIONINSIGHTS_ENABLE_TELEMETRY path). The propagator stays None, so per-invocation context activation crashes:

 AttributeError: 'NoneType' object has no attribute 'extract'
   File ".../azure_functions_runtime/otel.py", line 112, in configure_opentelemetry
     ctx = otel_manager.get_trace_context_propagator().extract(carrier)

Removing the setting makes the app healthy. Appears to be the crash manifestation of #1870.

Steps to Reproduce
  1. Deploy a Python 3.13 Flex Consumption function app with an async HTTP trigger.
  2. host.json: { "version": "2.0", "telemetryMode": "OpenTelemetry" }.
  3. Add app setting PYTHON_ENABLE_OPENTELEMETRY=true.
  4. Call any async function -> HTTP 500 with the AttributeError above.
  5. Remove PYTHON_ENABLE_OPENTELEMETRY -> healthy.
Relevant code being tried
host.json: `{ "version": "2.0", "telemetryMode": "OpenTelemetry" }`

App setting:  PYTHON_ENABLE_OPENTELEMETRY=true 
(App also calls  azure.monitor.opentelemetry.configure_azure_monitor(...) at startup; removing that call does not change the crash.)
Relevant log output
AttributeError: 'NoneType' object has no attribute 'extract'
   File ".../azure_functions_runtime/otel.py", line ~112, in configure_opentelemetry
     ctx = otel_manager.get_trace_context_propagator().extract(carrier)
requirements.txt file
azure-functions
azure-functions-durable
azure-monitor-opentelemetry
Where are you facing this problem?

Production Environment (explain below)

Function app name

No response

Additional Information

Hosting: Azure Functions Flex Consumption (FC1), Python 3.13, v2 azure_functions_runtime.

Related:
#1870 (worker-side auto-init gap),
#1626 (late context propagation).

Suggested fix: call  update_opentelemetry_status()  in the  PYTHON_ENABLE_OPENTELEMETRY  branch of worker_init  (symmetric to the App Insights path), and/or add a  None  guard in  configure_opentelemetry() .

Dominant language
Python
Stars
357
Forks
116
Avg merge
32m
Merged PRs (30d)
1

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Azure/azure-functions-python-worker

All issues in Azure/azure-functions-python-worker

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.