Skip to content

Add deserialization_exception field for programmatic error handling#316

Open
bjester wants to merge 2 commits intolearningequality:release-v0.8.xfrom
bjester:des-exc
Open

Add deserialization_exception field for programmatic error handling#316
bjester wants to merge 2 commits intolearningequality:release-v0.8.xfrom
bjester:des-exc

Conversation

@bjester
Copy link
Copy Markdown
Member

@bjester bjester commented Apr 14, 2026

Summary

This allows programmatic handling of deserialization errors instead of parsing error messages

  • Adds a new deserialization_exception nullable field to Store model that stores the fully-qualified exception class path when deserialization fails
  • Updates existing deserialization_error field to be nullable
  • Updates handling of deserialization errors to set both fields, or otherwise null both of them
  • Adds tests for changes
  • Removes migration tests that verified the squash migration, which now cause issues with new migrations

References

Followup to #306
Closes #315

AI Usage

Directed an AI agent to tackle the issue, iterated on its work for a loop, then did a small refactor myself. Had the AI agent add test coverage, then reviewed.

Comment thread morango/sync/operations.py
Copy link
Copy Markdown
Member

@ozer550 ozer550 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might be wrong but it seems like we are doing opposite of "skip rows that previously failed deserialization" ? Was this change in behavior intended? Also adding some tests to verify the null string change for skipping would be useful!

Comment thread morango/sync/operations.py
Copy link
Copy Markdown
Member

@ozer550 ozer550 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did a grep on places where we had "deserialization_exception" and found a place where we might need to add the execution path as well?

Comment thread morango/sync/operations.py Outdated
@bjester
Copy link
Copy Markdown
Member Author

bjester commented Apr 24, 2026

@ozer550 I've updated it to set the exception in the code you found. I also grepped and found some backend code setting to empty string. We probably didn't to set it there, but I updated the code anyway, to be have parity with deserialization_error handling.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants