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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions