You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by GitBox <gi...@apache.org> on 2021/02/25 10:01:38 UTC

[GitHub] [pulsar] patricklucas opened a new issue #9718: Avro "fixed" field causes ClassCastException

patricklucas opened a new issue #9718:
URL: https://github.com/apache/pulsar/issues/9718


   **Describe the bug**
   If you have an Avro "fixed" field in a record (or presumably if you try to produce a "fixed" field directly), you get a ClassCastException when producing a message.
   
   ```
   java.lang.ClassCastException: class org.apache.pulsar.examples.Fixed cannot be cast to class org.apache.pulsar.shade.org.apache.avro.generic.GenericFixed (org.apache.pulsar.examples.Fixed and org.apache.pulsar.shade.org.apache.avro.generic.GenericFixed are in unnamed module of loader 'app')
   ```
   
   (full traceback below)
   
   I slightly tweaked @sijie 's [`pulsar-avro-schema-example`](https://github.com/sijie/pulsar-avro-schema-example) project to demonstrate the issue: [patricklucas/pulsar-avro-schema-example](https://github.com/patricklucas/pulsar-avro-schema-example).
   
   (I updated dependencies, and then added a [fixed field](https://github.com/patricklucas/pulsar-avro-schema-example/blob/master/src/main/avro/fixed.avsc) to the [TwitterSchema](https://github.com/patricklucas/pulsar-avro-schema-example/blob/master/src/main/avro/twitter.avsc) record. Additionally, I added code to serialize the message to JSON before producing, to demonstrate that Avro itself handles the message correctly)
   
   It's possible this is unsupported in some way by Pulsar, but I couldn't find anything in the documentation about such limitations, so I thought I'd ask here.
   
   **To Reproduce**
   Steps to reproduce the behavior:
   1. Clone the project [patricklucas/pulsar-avro-schema-example](https://github.com/patricklucas/pulsar-avro-schema-example)
   2. Run [TweetProducer](https://github.com/patricklucas/pulsar-avro-schema-example/blob/master/src/main/java/org/apache/pulsar/examples/TweetProducer.java), passing a Pulsar service URL as a single argument
   3. Observe error
   
   **Expected behavior**
   The message should be serialized successfully.
   
   **Additional context**
   
   Full traceback:
   
   ```
   org.apache.pulsar.client.api.SchemaSerializationException: java.lang.ClassCastException: class org.apache.pulsar.examples.Fixed cannot be cast to class org.apache.pulsar.shade.org.apache.avro.generic.GenericFixed (org.apache.pulsar.examples.Fixed and org.apache.pulsar.shade.org.apache.avro.generic.GenericFixed are in unnamed module of loader 'app')
   	at org.apache.pulsar.client.impl.schema.writer.AvroWriter.write(AvroWriter.java:55)
   	at org.apache.pulsar.client.impl.schema.AbstractStructSchema.encode(AbstractStructSchema.java:50)
   	at org.apache.pulsar.client.impl.TypedMessageBuilderImpl.value(TypedMessageBuilderImpl.java:178)
   	at org.apache.pulsar.client.impl.ProducerBase.send(ProducerBase.java:63)
   	at org.apache.pulsar.examples.TweetProducer.main(TweetProducer.java:43)
   Caused by: java.lang.ClassCastException: class org.apache.pulsar.examples.Fixed cannot be cast to class org.apache.pulsar.shade.org.apache.avro.generic.GenericFixed (org.apache.pulsar.examples.Fixed and org.apache.pulsar.shade.org.apache.avro.generic.GenericFixed are in unnamed module of loader 'app')
   	at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.writeFixed(GenericDatumWriter.java:339)
   	at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:147)
   	at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:82)
   	at org.apache.pulsar.shade.org.apache.avro.reflect.ReflectDatumWriter.write(ReflectDatumWriter.java:158)
   	at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:206)
   	at org.apache.pulsar.shade.org.apache.avro.specific.SpecificDatumWriter.writeField(SpecificDatumWriter.java:101)
   	at org.apache.pulsar.shade.org.apache.avro.reflect.ReflectDatumWriter.writeField(ReflectDatumWriter.java:186)
   	at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:195)
   	at org.apache.pulsar.shade.org.apache.avro.specific.SpecificDatumWriter.writeRecord(SpecificDatumWriter.java:83)
   	at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:130)
   	at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:82)
   	at org.apache.pulsar.shade.org.apache.avro.reflect.ReflectDatumWriter.write(ReflectDatumWriter.java:158)
   	at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:72)
   	at org.apache.pulsar.client.impl.schema.writer.AvroWriter.write(AvroWriter.java:53)
   	... 4 more
   ```
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [pulsar] codelipenghui commented on issue #9718: Avro "fixed" field causes ClassCastException

Posted by GitBox <gi...@apache.org>.
codelipenghui commented on issue #9718:
URL: https://github.com/apache/pulsar/issues/9718#issuecomment-1058892938


   The issue had no activity for 30 days, mark with Stale label.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [pulsar] patricklucas commented on issue #9718: Avro "fixed" field causes ClassCastException

Posted by GitBox <gi...@apache.org>.
patricklucas commented on issue #9718:
URL: https://github.com/apache/pulsar/issues/9718#issuecomment-1058983997


   This still occurs on latest Pulsar.
   
   I've updated the repo with the reproducing example to upgrade to Pulsar 2.9.1 and to make it easier to run:
   - `docker-compose up -d` will run Pulsar in standalone mode locally
   - `./gradlew :runTweetProducer` will run the example
   
   Full output:
   
   ```
   $ docker-compose up -d
   [+] Running 2/2
    ⠿ Network pulsar-avro-schema-example_default     Created                                                                                                                                                                                                                              0.0s
    ⠿ Container pulsar-avro-schema-example-pulsar-1  Started 
   $ ./gradlew :runTweetProducer
   
   > Task :runTweetProducer
   ...
   Tweet JSON: {
     "username" : "user-0",
     "tweet" : "tweet-0",
     "fixed" : "Hello",
     "timestamp" : 1646385474269
   }
   org.apache.pulsar.client.api.SchemaSerializationException: java.lang.ClassCastException: class org.apache.pulsar.examples.Fixed cannot be cast to class org.apache.pulsar.shade.org.apache.avro.generic.GenericFixed (org.apache.pulsar.examples.Fixed and org.apache.pulsar.shade.org.apache.avro.generic.GenericFixed are in unnamed module of loader 'app') in field fixed
           at org.apache.pulsar.client.impl.schema.writer.AvroWriter.write(AvroWriter.java:55)
           at org.apache.pulsar.client.impl.schema.AbstractStructSchema.encode(AbstractStructSchema.java:57)
           at org.apache.pulsar.client.impl.TypedMessageBuilderImpl.value(TypedMessageBuilderImpl.java:175)
           at org.apache.pulsar.client.impl.ProducerBase.send(ProducerBase.java:64)
           at org.apache.pulsar.examples.TweetProducer.main(TweetProducer.java:42)
   Caused by: java.lang.ClassCastException: class org.apache.pulsar.examples.Fixed cannot be cast to class org.apache.pulsar.shade.org.apache.avro.generic.GenericFixed (org.apache.pulsar.examples.Fixed and org.apache.pulsar.shade.org.apache.avro.generic.GenericFixed are in unnamed module of loader 'app') in field fixed
           at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.addClassCastMsg(GenericDatumWriter.java:191)
           at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:229)
           at org.apache.pulsar.shade.org.apache.avro.specific.SpecificDatumWriter.writeField(SpecificDatumWriter.java:101)
           at org.apache.pulsar.shade.org.apache.avro.reflect.ReflectDatumWriter.writeField(ReflectDatumWriter.java:184)
           at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:210)
           at org.apache.pulsar.shade.org.apache.avro.specific.SpecificDatumWriter.writeRecord(SpecificDatumWriter.java:83)
           at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:131)
           at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:83)
           at org.apache.pulsar.shade.org.apache.avro.reflect.ReflectDatumWriter.write(ReflectDatumWriter.java:158)
           at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:73)
           at org.apache.pulsar.client.impl.schema.writer.AvroWriter.write(AvroWriter.java:53)
           ... 4 more
   Caused by: java.lang.ClassCastException: class org.apache.pulsar.examples.Fixed cannot be cast to class org.apache.pulsar.shade.org.apache.avro.generic.GenericFixed (org.apache.pulsar.examples.Fixed and org.apache.pulsar.shade.org.apache.avro.generic.GenericFixed are in unnamed module of loader 'app')
           at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.writeFixed(GenericDatumWriter.java:362)
           at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:148)
           at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:83)
           at org.apache.pulsar.shade.org.apache.avro.reflect.ReflectDatumWriter.write(ReflectDatumWriter.java:158)
           at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:221)
           ... 13 more
   
   BUILD SUCCESSFUL in 6s
   4 actionable tasks: 1 executed, 3 up-to-date
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org