Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 15 additions & 10 deletions ddtrace/internal/ci_visibility/api/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,10 @@ def _finish_span(self, override_finish_time: Optional[float] = None) -> None:
self._add_all_tags_to_span()
self._span.finish(finish_time=override_finish_time)

parent_span = self.get_parent_span()
if parent_span:
self._tracer.context_provider.activate(parent_span)

def _set_default_tags(self) -> None:
"""Applies the tags that should be on every span regardless of the item type

Expand Down Expand Up @@ -617,18 +621,19 @@ def finish(
# Respect override status no matter what
self.set_status(override_status)

if force:
# Finish all children regardless of their status
for child in self._children.values():
if not child.is_finished():
child.finish(force=force)
self.set_status(self.get_raw_status())

item_status = self.get_status()

if item_status == SPECIAL_STATUS.UNFINISHED:
if force:
# Finish all children regardless of their status
for child in self._children.values():
if not child.is_finished():
child.finish(force=force)
self.set_status(self.get_raw_status())
else:
return
elif not isinstance(item_status, SPECIAL_STATUS):
if item_status == SPECIAL_STATUS.UNFINISHED and not force:
return

if not isinstance(item_status, SPECIAL_STATUS):
self.set_status(item_status)

super().finish(force=force, override_status=override_status, override_finish_time=override_finish_time)
Expand Down
Loading