Skip to content
Snippets Groups Projects
Unverified Commit 070104d0 authored by Andrei Fajardo's avatar Andrei Fajardo Committed by GitHub
Browse files

Small fixes to instrumentation (#12287)

span_handlers in root dispatcher; return Optional[T] to handle null handler case
parent 53c33e18
Branches
Tags
No related merge requests found
...@@ -5,7 +5,7 @@ from llama_index.core.instrumentation.span_handlers import NullSpanHandler ...@@ -5,7 +5,7 @@ from llama_index.core.instrumentation.span_handlers import NullSpanHandler
root_dispatcher: Dispatcher = Dispatcher( root_dispatcher: Dispatcher = Dispatcher(
name="root", name="root",
event_handlers=[NullEventHandler()], event_handlers=[NullEventHandler()],
span_handler=NullSpanHandler(), span_handlers=[NullSpanHandler()],
propagate=False, propagate=False,
) )
......
...@@ -37,17 +37,19 @@ class BaseSpanHandler(BaseModel, Generic[T]): ...@@ -37,17 +37,19 @@ class BaseSpanHandler(BaseModel, Generic[T]):
def span_exit(self, *args, id: str, result: Optional[Any] = None, **kwargs) -> None: def span_exit(self, *args, id: str, result: Optional[Any] = None, **kwargs) -> None:
"""Logic for exiting a span.""" """Logic for exiting a span."""
self.prepare_to_exit_span(*args, id=id, result=result, **kwargs) span = self.prepare_to_exit_span(*args, id=id, result=result, **kwargs)
if self.current_span_id == id: if span:
self.current_span_id = self.open_spans[id].parent_id if self.current_span_id == id:
del self.open_spans[id] self.current_span_id = self.open_spans[id].parent_id
del self.open_spans[id]
def span_drop(self, *args, id: str, err: Optional[Exception], **kwargs) -> None: def span_drop(self, *args, id: str, err: Optional[Exception], **kwargs) -> None:
"""Logic for dropping a span i.e. early exit.""" """Logic for dropping a span i.e. early exit."""
self.prepare_to_drop_span(*args, id=id, err=err, **kwargs) span = self.prepare_to_drop_span(*args, id=id, err=err, **kwargs)
if self.current_span_id == id: if span:
self.current_span_id = self.open_spans[id].parent_id if self.current_span_id == id:
del self.open_spans[id] self.current_span_id = self.open_spans[id].parent_id
del self.open_spans[id]
@abstractmethod @abstractmethod
def new_span( def new_span(
...@@ -59,13 +61,13 @@ class BaseSpanHandler(BaseModel, Generic[T]): ...@@ -59,13 +61,13 @@ class BaseSpanHandler(BaseModel, Generic[T]):
@abstractmethod @abstractmethod
def prepare_to_exit_span( def prepare_to_exit_span(
self, *args, id: str, result: Optional[Any] = None, **kwargs self, *args, id: str, result: Optional[Any] = None, **kwargs
) -> Any: ) -> Optional[T]:
"""Logic for preparing to exit a span.""" """Logic for preparing to exit a span."""
... ...
@abstractmethod @abstractmethod
def prepare_to_drop_span( def prepare_to_drop_span(
self, *args, id: str, err: Optional[Exception], **kwargs self, *args, id: str, err: Optional[Exception], **kwargs
) -> Any: ) -> Optional[T]:
"""Logic for preparing to drop a span.""" """Logic for preparing to drop a span."""
... ...
...@@ -28,20 +28,22 @@ class SimpleSpanHandler(BaseSpanHandler[SimpleSpan]): ...@@ -28,20 +28,22 @@ class SimpleSpanHandler(BaseSpanHandler[SimpleSpan]):
def prepare_to_exit_span( def prepare_to_exit_span(
self, *args, id: str, result: Optional[Any] = None, **kwargs self, *args, id: str, result: Optional[Any] = None, **kwargs
) -> None: ) -> SimpleSpan:
"""Logic for preparing to drop a span.""" """Logic for preparing to drop a span."""
span = self.open_spans[id] span = self.open_spans[id]
span = cast(SimpleSpan, span) span = cast(SimpleSpan, span)
span.end_time = datetime.now() span.end_time = datetime.now()
span.duration = (span.end_time - span.start_time).total_seconds() span.duration = (span.end_time - span.start_time).total_seconds()
self.completed_spans += [span] self.completed_spans += [span]
return span
def prepare_to_drop_span( def prepare_to_drop_span(
self, *args, id: str, err: Optional[Exception], **kwargs self, *args, id: str, err: Optional[Exception], **kwargs
) -> None: ) -> SimpleSpan:
"""Logic for droppping a span.""" """Logic for droppping a span."""
if err: if id in self.open_spans:
raise err return self.open_spans[id]
return None
def _get_trace_trees(self) -> List["Tree"]: def _get_trace_trees(self) -> List["Tree"]:
"""Method for getting trace trees.""" """Method for getting trace trees."""
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment