Search code examples
javaspringkafka-consumer-apiavroaws-glue

What causes a Recursive Update when deserializing an Avro message


I am having issues deserializing an Avro message with the AWSKafkaAvroDeserializer. I am using an AWS Glue schema registry and I am able to produce the message and serialize it just fine. However, when my KafkaListener consumes it I get

Caused by: java.lang.IllegalStateException: Recursive update
    at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1760)
    at org.apache.avro.specific.SpecificData.getClass(SpecificData.java:254)
    at org.apache.avro.specific.SpecificData.getForSchema(SpecificData.java:161)
    at org.apache.avro.specific.SpecificDatumWriter.<init>(SpecificDatumWriter.java:43)

I have a valid Avro schema that generates valid Avro Java classes.


Solution

  • So I was able to fix the issue by changing the avro utility plug-in from

    plugins {
      id "com.commercehub.gradle.plugin.avro" version "0.99.99"
    }
    

    to:

    plugins {
      id "com.github.davidmc24.gradle.plugin.avro" version "1.3.0"
    }
    

    apparently the commercehub plug-in generates bad java code.