fix: embedding migration, worker error handling, path traversal security, response mismatches (unread-count, plugins, manifests), frontend type safety
This commit is contained in:
@@ -42,6 +42,10 @@ async def index_mails(ctx: dict[str, Any], mail_ids: list[str]) -> None:
|
||||
await index_entity("mail", eid, tenant_id, db)
|
||||
except Exception:
|
||||
logger.exception("Failed to index mail %s", mail_id)
|
||||
try:
|
||||
await db.rollback()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
async def index_file(ctx: dict[str, Any], file_id: str) -> None:
|
||||
@@ -98,6 +102,10 @@ async def index_file(ctx: dict[str, Any], file_id: str) -> None:
|
||||
logger.info("Indexed file %s", file_id)
|
||||
except Exception:
|
||||
logger.exception("Failed to index file %s", file_id)
|
||||
try:
|
||||
await db.rollback()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
async def index_contact(ctx: dict[str, Any], contact_id: str) -> None:
|
||||
@@ -119,6 +127,10 @@ async def index_contact(ctx: dict[str, Any], contact_id: str) -> None:
|
||||
await index_entity("contact", eid, row["tenant_id"], db)
|
||||
except Exception:
|
||||
logger.exception("Failed to index contact %s", contact_id)
|
||||
try:
|
||||
await db.rollback()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
async def index_event(ctx: dict[str, Any], event_id: str) -> None:
|
||||
@@ -140,6 +152,10 @@ async def index_event(ctx: dict[str, Any], event_id: str) -> None:
|
||||
await index_entity("event", eid, row["tenant_id"], db)
|
||||
except Exception:
|
||||
logger.exception("Failed to index event %s", event_id)
|
||||
try:
|
||||
await db.rollback()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
async def reindex(ctx: dict[str, Any], entity_type: str) -> None:
|
||||
@@ -182,6 +198,10 @@ async def reindex(ctx: dict[str, Any], entity_type: str) -> None:
|
||||
)
|
||||
except Exception:
|
||||
logger.exception("Reindex failed for %s/%s", entity_type, row["id"])
|
||||
try:
|
||||
await db.rollback()
|
||||
except Exception:
|
||||
pass
|
||||
offset += BATCH_SIZE
|
||||
|
||||
logger.info("Reindex complete for %s", entity_type)
|
||||
@@ -217,7 +237,15 @@ async def embedding_batch(ctx: dict[str, Any]) -> None:
|
||||
await index_entity(etype, row["id"], row["tenant_id"], db)
|
||||
except Exception:
|
||||
logger.exception("Batch index failed for %s/%s", etype, row["id"])
|
||||
try:
|
||||
await db.rollback()
|
||||
except Exception:
|
||||
pass
|
||||
except Exception:
|
||||
logger.exception("Batch query failed for %s", etype)
|
||||
try:
|
||||
await db.rollback()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
logger.info("Embedding batch job complete")
|
||||
|
||||
Reference in New Issue
Block a user