Skip to content

Conversation

@timou
Copy link

@timou timou commented Apr 14, 2023

For some valid schemas, goavro will incorrectly compute the canonical form. This results in an incorrect Rabin fingerprint. Due to the random nature of map iteration in golang, the fingerprint for the exact same schema can change between consecutive runs, which should not happen.

The error occurs with namespaces, with two nested names that are the same. The outer name can get incorrectly namespaced if it is processed last, due to the name collision in the typeLookup map.

The fix is to remove the colliding name if the type is not one of the types that is supposed to be namespaced.

For some valid schemas, goavro will incorrectly compute the
canonical form. This results in an incorrect Rabin fingerprint.
Due to the random nature of map iteration in golang, the
fingerprint for the exact same schema can change between
consecutive runs, which should not happen.

The error occurs with namespaces, with two nested names that
are the same. The outer name can get incorrectly namespaced
if it is processed last, due to the name collision in the
typeLookup map.

The fix is to remove the colliding name if the type is not
one of the types that is supposed to be namespaced.
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.

1 participant