Overseer uses user-supplied ex-data as additional metadata when sending
errors to Sentry. However, values are serialized as JSON when sending
over the wire, so we need to ensure we only attempt to send serializable
values in the first place. We've seen bugs where, e.g. prismatic/schema
fails validation on a datatype and includes the value in the ex-data,
causing serialization errors.
Before, something like
(throw (ex-info "" {:foo 1 :bar (Object.)}))
would cause the failure. Now, invalid keys/values are simply stripped
out of the data map.
Overseer uses user-supplied
ex-data
as additional metadata when sending errors to Sentry. However, values are serialized as JSON when sending over the wire, so we need to ensure we only attempt to send serializable values in the first place. We've seen bugs where, e.g. prismatic/schema fails validation on a datatype and includes the value in the ex-data, causing serialization errors.Before, something like
would cause the failure. Now, invalid keys/values are simply stripped out of the data map.