[Bug]: Align Execution view log correlation with Workflow and operation spans

Aperta
#893 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
python
Ambito
observability

Direzione di ricerca

Start with get_current_span_context() and on_user_function_start() in execution_plugin.py, then read the two named log-correlation tests and the Execution-view documentation in the README. Run the relevant tests and extend coverage through the durable logger and real handler path. Done means the stated span mapping and replay, scope-restoration, and Invocation-control behaviors are covered, with tracing topology preserved.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug pkg:otel project
Expected Behavior

With the Execution view's built-in log enrichment enabled, durable log records should identify their logical workflow or operation:

Log location Expected spanId
Top-level handler, including before a durable wait and after resume Workflow span
Step body, including successive retry attempts Step operation span
Child-context body Child operation span
Step body inside a child context That step's operation span

Keep the existing Invocation view behavior. This is a log-correlation change: retain attempt spans, active tracing scopes, and span parentage. Workflow should continue to be exported once at terminal completion; log correlation can use its stable identity before it is exported.

Actual Behavior

The Execution plugin explicitly excludes the enclosing Workflow context when resolving a log's span and falls back to Invocation. Step bodies make the attempt span current, so their log records identify the attempt. Child-context bodies already use the child operation span.

  • get_current_span_context() implements the Workflow exclusion and Invocation fallback.
  • on_user_function_start() activates an attempt for a step body and an operation context for a child body.
  • The inspected checkout also has dedicated tests named test_top_level_log_names_invocation_span_not_the_attached_workflow_span and test_step_attempt_log_names_the_attempt_span; their expectations and the README need to be updated with the behavior.
Steps to Reproduce

This report is based on source and existing-test inspection. The following full execution validation recipe has not been run for this report.

  1. Enable the Execution plugin and its built-in log enrichment, and capture the logger's correlation fields plus exported spans.
  2. Emit a durable log at the top level before any operations.
  3. Run a named step that logs from its body, and a named child context that logs from its body and a nested step.
  4. Perform a durable wait that suspends the invocation, then emit another top-level log after resume.
  5. Compare each record's spanId with the corresponding Workflow, Step operation, Child operation, and Attempt spans.
  6. Add a retrying step to check that records from different attempts use the same Step operation spanId.
SDK Version

aws-durable-execution-sdk-python-otel, public main inspected at 4625d01bbfa97da67050014851af7eb41c61a842.

Python Version

Not applicable to source inspection; no Python runtime reproduction was run for this report.

Is this a regression?

Unknown; no last working version has been established.

Acceptance Criteria
  • Top-level logs before suspension and after resume carry the same Workflow spanId, including when a compatible Lambda span was already active.
  • Step-body logs carry the corresponding Step operation spanId across retries; a nested step uses its own operation span.
  • Child-body logs retain the Child operation spanId; leaving a nested scope restores the enclosing logical scope.
  • Replay suppresses duplicate durable logs from completed work.
  • Attempt spans and tracing topology remain intact, and Workflow is exported once at terminal completion.
  • Add regression coverage through the SDK's durable logger and real handler execution path, including concurrent-invocation isolation, enrichment disabled, and the Invocation view as a control.
  • Update the Execution-view log-correlation documentation and any tests that assert the previous mapping.
Related Issues
Lingua principale
Python
Stelle
58
Fork
32
Merge medio
1g 6h
PR unite (30g)
80

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di aws/aws-durable-execution-sdk-python

Tutte le issue di aws/aws-durable-execution-sdk-python

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.