in aws_advanced_python_wrapper/utils/telemetry/xray_telemetry.py [0:0]
def _clone_and_close_context(context: XRayTelemetryContext, trace_level: TelemetryTraceLevel) -> XRayTelemetryContext:
clone = XRayTelemetryContext(TelemetryConst.COPY_TRACE_NAME_PREFIX + context.get_name(), trace_level)
clone._trace_entity.start_time = context._trace_entity.start_time
for key in context._trace_entity.annotations.items():
value = context._trace_entity.annotations[key]
if key != TelemetryConst.TRACE_NAME_ANNOTATION and value is not None:
clone.set_attribute(key, value)
if context.is_segment and context._trace_entity.error:
clone._trace_entity.add_error_flag()
clone.set_attribute(TelemetryConst.SOURCE_TRACE_ANNOTATION, str(context._trace_entity.trace_id))
if context._trace_entity.parent_id is not None:
if trace_level == TelemetryTraceLevel.NESTED:
clone._trace_entity.parent_id = context._trace_entity.parent_id
clone.close_context(context._trace_entity.end_time)
return clone