goavro icon indicating copy to clipboard operation
goavro copied to clipboard

Fix incorrect calculation of canonical schema

Open timou opened this issue 1 year ago • 0 comments

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.

timou avatar Apr 14 '23 17:04 timou