Fix trigger sync (#21264)
Some checks are pending
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions

- don't look for event ids when trigger type is description
- don't try to delete thumbnail whe trigger type is description
- pass correct event ID into thumbnail deletion
This commit is contained in:
Josh Hawkins 2025-12-13 12:15:25 -06:00 committed by GitHub
parent af7af33645
commit 430cebecda
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -498,35 +498,38 @@ class Embeddings:
if needs_embedding_update: if needs_embedding_update:
existing_trigger.save() existing_trigger.save()
continue
else: else:
# Create new trigger # Create new trigger
try: try:
try: # For thumbnail triggers, validate the event exists
event: Event = Event.get(Event.id == trigger.data) if trigger.type == "thumbnail":
except DoesNotExist: try:
logger.warning( event: Event = Event.get(Event.id == trigger.data)
f"Event ID {trigger.data} for trigger {trigger_name} does not exist." except DoesNotExist:
logger.warning(
f"Event ID {trigger.data} for trigger {trigger_name} does not exist."
)
continue
# Skip the event if not an object
if event.data.get("type") != "object":
logger.warning(
f"Event ID {trigger.data} for trigger {trigger_name} is not a tracked object."
)
continue
thumbnail = get_event_thumbnail_bytes(event)
if not thumbnail:
logger.warning(
f"Unable to retrieve thumbnail for event ID {trigger.data} for {trigger_name}."
)
continue
self.write_trigger_thumbnail(
camera.name, trigger.data, thumbnail
) )
continue
# Skip the event if not an object
if event.data.get("type") != "object":
logger.warning(
f"Event ID {trigger.data} for trigger {trigger_name} is not a tracked object."
)
continue
thumbnail = get_event_thumbnail_bytes(event)
if not thumbnail:
logger.warning(
f"Unable to retrieve thumbnail for event ID {trigger.data} for {trigger_name}."
)
continue
self.write_trigger_thumbnail(
camera.name, trigger.data, thumbnail
)
# Calculate embedding for new trigger # Calculate embedding for new trigger
embedding = self._calculate_trigger_embedding( embedding = self._calculate_trigger_embedding(
@ -557,7 +560,11 @@ class Embeddings:
Trigger.camera == camera.name, Trigger.name.in_(triggers_to_remove) Trigger.camera == camera.name, Trigger.name.in_(triggers_to_remove)
).execute() ).execute()
for trigger_name in triggers_to_remove: for trigger_name in triggers_to_remove:
self.remove_trigger_thumbnail(camera.name, trigger_name) # Only remove thumbnail files for thumbnail triggers
if existing_triggers[trigger_name].type == "thumbnail":
self.remove_trigger_thumbnail(
camera.name, existing_triggers[trigger_name].data
)
def write_trigger_thumbnail( def write_trigger_thumbnail(
self, camera: str, event_id: str, thumbnail: bytes self, camera: str, event_id: str, thumbnail: bytes