Skip to content

Instantly share code, notes, and snippets.

@teabot
Last active January 10, 2022 11:53
Show Gist options
  • Save teabot/e2562894d77fb49ec302803e5b539593 to your computer and use it in GitHub Desktop.
Save teabot/e2562894d77fb49ec302803e5b539593 to your computer and use it in GitHub Desktop.
Avro evolution questions
Action BACKWARD TRANSITIVE FORWARD TRANSITIVE FULL TRANSITIVE
Can I add a new field with a default value? Yes Yes Yes
Can I add a new field without a default value? No Yes No
Can I remove an existing field with a default value? Yes Yes Yes
Can I remove an existing field without a default value? Yes No No
Can I rename an existing field with an alias? Yes Yes Yes
Can I rename an existing field without an alias? No No No
Can I add a default value to an existing field? Maybe Maybe Maybe
Can I remove a default from an existing field? Maybe Maybe Maybe
Can I make an existing field nullable? Yes No No
Can I make an existing field a union? Yes No No
Can I add a type to an existing union? Yes No No
Can I remove a type from an existing union? No No No
Can I promote an existing int field to a long, float, or double? Yes No No
Can I promote an existing float field to a double? Yes No No
Can I promote an existing long field to a float or double? Yes No No
Can I demote an existing long field to an int? No Yes No
Can I demote an existing double field to a float or int? No Yes No
Can I demote an existing float field to an int? No Yes No
Can I add another value to an existing enum? Yes Maybe Maybe
Can I remove a value from an existing enum? No No No
Can I change string to bytes? Yes Yes Yes
Can I change bytes to string? Yes Yes Yes
Can I evolve the elements of an array? Recurse on array element type Recurse on array element type Recurse on array element type
Can I evolve the values of a map? Recurse on map value type Recurse on map value type Recurse on map value type
Must I update the consumer before sending events using my new schema? Yes No No
Must I update the producer before consuming events using my new schema? No Yes No
Can I do anything else not on this list of questions? Probably not Probably not Probably not
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment