refactor: Improve error handling in ComponentBuildException
This commit is contained in:
parent
bbd3ab4960
commit
f8ef220a6e
5 changed files with 22 additions and 13 deletions
|
|
@ -24,13 +24,7 @@ from langflow.api.v1.schemas import (
|
|||
VertexBuildResponse,
|
||||
VerticesOrderResponse,
|
||||
)
|
||||
from langflow.schema.schema import Log
|
||||
from langflow.services.auth.utils import get_current_active_user
|
||||
from langflow.services.chat.service import ChatService
|
||||
from langflow.services.deps import get_chat_service, get_session, get_session_service
|
||||
from langflow.services.monitor.utils import log_vertex_build
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from langflow.exceptions.component import ComponentBuildException
|
||||
from langflow.graph.vertex.types import InterfaceVertex
|
||||
from langflow.services.session.service import SessionService
|
||||
|
||||
|
|
@ -190,9 +184,13 @@ async def build_vertex(
|
|||
|
||||
result_data_response = ResultDataResponse.model_validate(result_dict, from_attributes=True)
|
||||
except Exception as exc:
|
||||
tb = traceback.format_exc()
|
||||
logger.exception(f"Error building Component: {exc}")
|
||||
params = format_exception_message(exc)
|
||||
if isinstance(exc, ComponentBuildException):
|
||||
params = exc.message
|
||||
tb = exc.formatted_traceback
|
||||
else:
|
||||
tb = traceback.format_exc()
|
||||
logger.exception(f"Error building Component: {exc}")
|
||||
params = format_exception_message(exc)
|
||||
message = {"errorMessage": params, "stackTrace": tb}
|
||||
valid = False
|
||||
output_label = vertex.outputs[0]["name"] if vertex.outputs else "output"
|
||||
|
|
|
|||
0
src/backend/base/langflow/exceptions/__init__.py
Normal file
0
src/backend/base/langflow/exceptions/__init__.py
Normal file
6
src/backend/base/langflow/exceptions/component.py
Normal file
6
src/backend/base/langflow/exceptions/component.py
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# Create an exception class that receives the message and the formatted traceback
|
||||
class ComponentBuildException(Exception):
|
||||
def __init__(self, message: str, formatted_traceback: str):
|
||||
self.message = message
|
||||
self.formatted_traceback = formatted_traceback
|
||||
super().__init__(message)
|
||||
|
|
@ -4,9 +4,10 @@ from collections import defaultdict, deque
|
|||
from functools import partial
|
||||
from itertools import chain
|
||||
from typing import TYPE_CHECKING, Dict, Generator, List, Optional, Tuple, Type, Union
|
||||
|
||||
from loguru import logger
|
||||
|
||||
from langflow.exceptions.component import ComponentBuildException
|
||||
from langflow.exceptions.component import ComponentBuildException
|
||||
from langflow.graph.edge.base import ContractEdge
|
||||
from langflow.graph.graph.constants import lazy_load_vertex_dict
|
||||
from langflow.graph.graph.runnable_vertices_manager import RunnableVerticesManager
|
||||
|
|
@ -830,7 +831,8 @@ class Graph:
|
|||
log_transaction(flow_id, vertex, status="success")
|
||||
return result_dict, params, valid, artifacts, vertex
|
||||
except Exception as exc:
|
||||
logger.exception(f"Error building Component:\n\n{exc}")
|
||||
if not isinstance(exc, ComponentBuildException):
|
||||
logger.exception(f"Error building Component:\n\n{exc}")
|
||||
flow_id = self.flow_id
|
||||
log_transaction(flow_id, vertex, status="failure", error=str(exc))
|
||||
raise exc
|
||||
|
|
|
|||
|
|
@ -2,12 +2,14 @@ import ast
|
|||
import asyncio
|
||||
import inspect
|
||||
import os
|
||||
import traceback
|
||||
import types
|
||||
from enum import Enum
|
||||
from typing import TYPE_CHECKING, Any, AsyncIterator, Callable, Dict, Iterator, List, Mapping, Optional
|
||||
|
||||
from loguru import logger
|
||||
|
||||
from langflow.exceptions.component import ComponentBuildException
|
||||
from langflow.graph.schema import INPUT_COMPONENTS, OUTPUT_COMPONENTS, InterfaceComponentTypes, ResultData
|
||||
from langflow.graph.utils import UnbuiltObject, UnbuiltResult
|
||||
from langflow.interface.initialize import loading
|
||||
|
|
@ -621,8 +623,9 @@ class Vertex:
|
|||
self.logs = build_logs(self, result)
|
||||
self._update_built_object_and_artifacts(result)
|
||||
except Exception as exc:
|
||||
tb = traceback.format_exc()
|
||||
logger.exception(exc)
|
||||
raise ValueError(f"Error building Component {self.display_name}:\n\n{exc}") from exc
|
||||
raise ComponentBuildException(f"Error building Component {self.display_name}:\n\n{exc}", tb) from exc
|
||||
|
||||
def _update_built_object_and_artifacts(self, result):
|
||||
"""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue