MeltanoLabs / Singer-Working-Group

Working group for ongoing development and iteration of the Singer Spec, the de-facto protocol for open source data connectors. Please use "Issues" to create discussion items - or use "Discussions" for general questions.
Apache License 2.0
13 stars 4 forks source link

Best Practice Target Capability: Data Type Failsafe #20

Open aaronsteers opened 2 years ago

aaronsteers commented 2 years ago

We've run into many, many cases where a specific target receives a JSON schema type that it doesn't expect and then immediately terminates the entire stream.

Rather than failing the sync entirely, we'd like to propose a best practice of always having a failsafe data type which handles two common scenarios:

  1. A catch for parsing exceptions when reading the json schema type. For instance, a $ref or missing properties can cause KeyError during type evaluation. These should be caught and handled with a default type - such as string.
  2. A final else statement at the end of all known cases. Similarly as with the above, if all known cases are evaluated and we've received a type we don't recognize, we should again default to string of similar so that the node's data can still be serialized without terminating the sync.