Skip to content
This repository was archived by the owner on Sep 3, 2025. It is now read-only.

Commit baf139d

Browse files
authored
feat(signal processing): adds better logging for troubleshooting purposes (#5592)
1 parent c85f3b0 commit baf139d

File tree

2 files changed

+26
-13
lines changed

2 files changed

+26
-13
lines changed

src/dispatch/plugins/dispatch_aws/plugin.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,16 +74,20 @@ def consume(self, db_session: Session, project: Project) -> None:
7474

7575
entries: list[SqsEntries] = []
7676
for message in response["Messages"]:
77-
message_body = json.loads(message["Body"])
78-
message_body_message = message_body.get("Message")
79-
message_attributes = message_body.get("MessageAttributes", {})
80-
81-
if message_attributes.get("compressed", {}).get("Value") == "zlib":
82-
# Message is compressed, decompress it
83-
message_body_message = decompress_json(message_body_message)
84-
signal_data = json.loads(message_body_message)
85-
else:
86-
signal_data = message_body_message
77+
try:
78+
message_body = json.loads(message["Body"])
79+
message_body_message = message_body.get("Message")
80+
message_attributes = message_body.get("MessageAttributes", {})
81+
82+
if message_attributes.get("compressed", {}).get("Value") == "zlib":
83+
# Message is compressed, decompress it
84+
message_body_message = decompress_json(message_body_message)
85+
signal_data = json.loads(message_body_message)
86+
else:
87+
signal_data = message_body_message
88+
except Exception as e:
89+
log.exception(f"Unable to extract signal data from SQS message: {e}")
90+
continue
8791

8892
try:
8993
signal_instance_in = SignalInstanceCreate(

src/dispatch/signal/service.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -544,9 +544,18 @@ def delete(*, db_session: Session, signal_id: int):
544544
return signal_id
545545

546546

547-
def is_valid_uuid(val):
547+
def is_valid_uuid(value) -> bool:
548+
"""
549+
Checks if the provided value is a valid UUID.
550+
551+
Args:
552+
val: The value to be checked.
553+
554+
Returns:
555+
bool: True if the value is a valid UUID, False otherwise.
556+
"""
548557
try:
549-
uuid.UUID(str(val), version=4)
558+
uuid.UUID(str(value), version=4)
550559
return True
551560
except ValueError:
552561
return False
@@ -587,7 +596,7 @@ def create_instance(
587596
signal_instance.id = signal_instance_in.raw["id"]
588597

589598
if signal_instance.id and not is_valid_uuid(signal_instance.id):
590-
msg = f"Invalid signal id format. Expecting UUID format. Received {signal_instance.id}."
599+
msg = f"Invalid signal id format. Expecting UUIDv4 format. Signal id: {signal_instance.id}. Signal name/variant: {signal_instance.signal.name if signal_instance.signal and signal_instance.signal.name else signal_instance.signal.variant}"
591600
log.warn(msg)
592601
raise HTTPException(
593602
status_code=status.HTTP_400_BAD_REQUEST,

0 commit comments

Comments
 (0)