Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between full compatibility and transitive full compatibility

Confluent's Schema Registry defined several compatiblity levels, which are richer than the compatibility checks that Avro provides.

However, although I understand the definitions for each compatibility level, I don't understand what sequence of schemas could be "fully compatible" but not "fully transitively compatible".

Could anyone provide an example of a sequence of schemas that fits that criteria?

like image 328
edrevo Avatar asked Oct 20 '25 07:10

edrevo


1 Answers

The effect that transitive has is that it'll check all previous versions rather than only the current against the next inserted version.

I wouldn't call this "richer". The schema registry is still using the same Avro compatibility methods behind the scenes, it just is an improvement over the implicit transitivity that happens if you don't override the configuration in between two versions. (If v2 is compatible with v1, then v3 is compatible to v2, then you would assume v3 is compatible with v1)

I haven't used FULL, but let's say for example, you want to completely break the schema. You could have the default compatibility of BACKWARD (schema v1), then set to NONE and push a schema (v2), then again to BACKWARD. Now, if you push push a new schema (v3), only v2 would be checked against.

If you had set the transitive setting before v3, then v1 would have been checked as well as v2.

like image 157
OneCricketeer Avatar answered Oct 26 '25 09:10

OneCricketeer



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!