Skip to content

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

Description

@lynochka

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() .

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions