fix: remove redundant and incorrect health check (#2571)

remove redundant health check and incorrect checks
This commit is contained in:
ming 2024-07-08 03:34:47 -04:00 committed by GitHub
commit 7dcc716811
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -5,25 +5,22 @@ from loguru import logger
from pydantic import BaseModel
from sqlmodel import Session, select
from langflow.services.auth.utils import get_password_hash
from langflow.services.database.models.flow import Flow
from langflow.services.database.models.folder.utils import create_default_folder_if_it_doesnt_exist
from langflow.services.database.models.user.model import User
from langflow.services.deps import get_chat_service, get_session, get_variable_service
from langflow.services.variable.service import GENERIC_TYPE, VariableService
from langflow.services.deps import get_chat_service, get_session
health_check_router = APIRouter(tags=["Health Check"])
class HealthResponse(BaseModel):
status: str = "nok"
chat: str = "error"
db: str = "error"
folder: str = "error"
variables: str = "error"
chat: str = "error check the server logs"
db: str = "error check the server logs"
"""
Do not send exceptions and detailed error messages to the client because it might contain credentials and other sensitive server information.
"""
def has_error(self) -> bool:
return any(v == "error" for v in self.model_dump().values())
return any(v.startswith("error") for v in self.model_dump().values())
# /health is also supported by uvicorn
@ -40,24 +37,13 @@ async def health():
@health_check_router.get("/health_check", response_model=HealthResponse)
async def health_check(
session: Session = Depends(get_session),
variable_service: VariableService = Depends(get_variable_service),
):
response = HealthResponse()
test_id = uuid.uuid4()
# use a fixed valid UUId that UUID collision is very unlikely
user_id = "da93c2bd-c857-4b10-8c8c-60988103320f"
try:
if not session.exec(select(User).where(User.id == user_id)).first():
session.add(
User(
id=user_id,
username="health_check",
is_active=False,
password=get_password_hash("health_check"),
)
)
session.commit()
# Check database to query a bogus flow
stmt = select(Flow).where(Flow.id == test_id)
stmt = select(Flow).where(Flow.id == uuid.uuid4())
session.exec(stmt).first()
response.db = "ok"
except Exception as e:
@ -65,34 +51,9 @@ async def health_check(
try:
chat = get_chat_service()
await chat.set_cache("health_check", str(test_id))
if v := await chat.get_cache("health_check"):
if v.get("result") == str(test_id):
response.chat = "ok"
else:
logger.error("chat service get incorrect value")
except Exception as e:
logger.exception(e)
# use the same uuid for user_id for testing purpose
try:
variable_service.initialize_user_variables(user_id, session)
variable_service.create_variable(
user_id=user_id,
name="health_check_test",
value="ok",
default_fields=[],
_type=GENERIC_TYPE,
session=session,
)
variable_service.delete_variable(user_id=user_id, name="health_check_test", session=session)
response.variables = "ok"
except Exception as e:
logger.exception(e)
try:
create_default_folder_if_it_doesnt_exist(session, uuid.UUID(user_id))
response.folder = "ok"
await chat.set_cache("health_check", str(user_id))
await chat.get_cache("health_check")
response.chat = "ok"
except Exception as e:
logger.exception(e)