Skip to content

1.31.0

Latest

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 25 May 19:17

What's Changed

Fix: render_services now exits non-zero on materialization failures
Previously, when a service failed to render (e.g. a Jinja2 UndefinedError), the behavior was broken in both code paths:

--multithreaded: The first failing future.result() would crash the process immediately, hiding any subsequent failures across other regions/services

Single-threaded: No error handling at all — an unhandled exception would crash with a raw traceback and no context about which service failed

Now both paths:

  • Collect all errors and continue processing remaining services
  • Print a clear Service FAILED: customer : cluster : service line for each failure as it occurs
  • Print a summary of all failures at the end
  • Exit with code 1 when any service fails to render, so CI correctly reports failure
  • Show full tracebacks with --debug, including customer/cluster/service context

Example output

Service unchanged: region1 : cluster-a : common
Service FAILED: region1 : cluster-a : my-service — UndefinedError: 'dict object' has no attribute 'some_var'
Service unchanged: region2 : cluster-a : common
Service FAILED: region2 : cluster-a : my-service — UndefinedError: 'dict object' has no attribute 'some_var'
2 service(s) failed to render:
  - region1 : cluster-a : my-service — 'dict object' has no attribute 'some_var'
  - region2 : cluster-a : my-service — 'dict object' has no attribute 'some_var'