DataDog / datadog-ci

Use Datadog from your CI.
https://datadoghq.com
Apache License 2.0
129 stars 55 forks source link

fix: sfn context injection skipped if no update on last step #1458

Closed lym953 closed 2 months ago

lym953 commented 2 months ago

Background

A Step Function can have multiple steps. Some steps may execute Lambda functions. Some steps may execute other Step Functions. When instrumenting a Step Function, we want to inject necessary context into both Lambda functions and child Step Functions.

Problem

If the last step doesn't need to be updated, e.g. if it's neither a Lambda function nor a Step Function, then context injection will be skipped. This is because the flag definitionHasBeenUpdated isn't updated properly.

What

Fix the usage of the flag so that if any part of definition is updated, this flag will be true.

Testing

Steps

  1. Create a State Machine where
    • the Lambda step is not instrumented
    • the last step doesn't need to be updated
  2. Instrument the Step Function by running datadog-ci stepfunctions instrument

    Result

    Before:

    • definitionHasBeenUpdated was false finally.
    • No change was applied.

After:

Review checklist