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

Ouverte
#893 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
48/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
python
Domaine
observability

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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
Langage dominant
Python
Étoiles
58
Forks
32
Merge moyen
1 j 6 h
PR mergées (30 j)
80

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de aws/aws-durable-execution-sdk-python

Toutes les issues de aws/aws-durable-execution-sdk-python

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.