-
Notifications
You must be signed in to change notification settings - Fork 102
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve resilience of ser/des using Vulcan amd Schema Registry #663
Comments
I have done some code analysis for serialisation:
|
This is wrapped in a
I agree - a PR would be very welcome! |
👍 thanks for the feedback! I am happy to take a crack at this (I will also review and include deserialisation in scope, too). |
Serialisation / deserialisation using vulcan codecs in
fs2-kafka-vulcan
requires communication with a Schema Registry REST API, implemented in Confluent's Java code whichfs2-kafka-vulcan
wraps. Transient problems communicating with the registry's API - e.g. network problems, timeouts, unexpected server-side errors - bubble up from the schema registry client's Java code tofs2-kafka-vulcan
and cause fatal exceptions unless deliberately handled in your application code -fs2-kafka-vulcan
makes no attempts to retry. This makes Avro ser/des a weak point forfs2-kafka
application resiliency.For example, I recently experienced an unhealthy Kafka cluster affecting both broker and schema registry. Interactions with the broker were robust and self-recovered from various errors, but a
SocketTimeoutException
communicating with the Schema Registry during serialisation blew up the application (stacktrace).Is there appetite to include Schema Registry retries in
fs2-kafka-vulcan
? As I see it, ideally the library would have some default retry config - similar to the situation with the Kafka broker publisher/consumer. Having reviewed the Confluent Java code, there's no allowance for retries in the client or related classes, so this would have to be added infs2-kafka-vulcan
.The text was updated successfully, but these errors were encountered: