mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-04-26 01:06:23 +02:00
fix(hitl): rollback on KB delete failure, tighten linear tool guards
- delete_linear_issue + delete_notion_page: add db_session.rollback() in the KB document deletion exception handler so the session is never left in a PendingRollbackError state after a failed commit, which would otherwise break all subsequent DB operations in the same request - delete_linear_issue: include issue identifier (e.g. ENG-42) in the success message so the caller can confirm which issue was archived - update_linear_issue: remove redundant label_ids ternary (x if x is not None else None -> x) - create_linear_issue: add logger.error on empty-title guard for parity with the equivalent Notion tool
This commit is contained in:
parent
ca624385a6
commit
d4e2ebb99f
4 changed files with 7 additions and 5 deletions
|
|
@ -144,6 +144,7 @@ def create_create_linear_issue_tool(
|
|||
final_connector_id = final_params.get("connector_id", connector_id)
|
||||
|
||||
if not final_title or not final_title.strip():
|
||||
logger.error("Title is empty or contains only whitespace")
|
||||
return {"status": "error", "message": "Issue title cannot be empty."}
|
||||
if not final_team_id:
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -99,6 +99,7 @@ def create_delete_linear_issue_tool(
|
|||
return {"status": "error", "message": error_msg}
|
||||
|
||||
issue_id = context["issue"]["id"]
|
||||
issue_identifier = context["issue"].get("identifier", "")
|
||||
document_id = context["issue"]["document_id"]
|
||||
connector_id_from_context = context.get("workspace", {}).get("id")
|
||||
|
||||
|
|
@ -229,12 +230,15 @@ def create_delete_linear_issue_tool(
|
|||
logger.warning(f"Document {document_id} not found in KB")
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to delete document from KB: {e}")
|
||||
await db_session.rollback()
|
||||
result["warning"] = (
|
||||
f"Issue archived in Linear, but failed to remove from knowledge base: {e!s}"
|
||||
)
|
||||
|
||||
if result.get("status") == "success":
|
||||
result["deleted_from_kb"] = deleted_from_kb
|
||||
if issue_identifier:
|
||||
result["message"] = f"Issue {issue_identifier} archived successfully."
|
||||
if deleted_from_kb:
|
||||
result["message"] = (
|
||||
f"{result.get('message', '')} Also removed from the knowledge base."
|
||||
|
|
|
|||
|
|
@ -232,9 +232,7 @@ def create_update_linear_issue_tool(
|
|||
state_id=final_new_state_id,
|
||||
assignee_id=final_new_assignee_id,
|
||||
priority=final_new_priority,
|
||||
label_ids=final_new_label_ids
|
||||
if final_new_label_ids is not None
|
||||
else None,
|
||||
label_ids=final_new_label_ids,
|
||||
)
|
||||
|
||||
if updated_issue.get("status") == "error":
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue