[
https://issues.apache.org/jira/browse/AVRO-1915?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ryan Blue resolved AVRO-1915.
-----------------------------
Resolution: Not A Problem
Thanks for letting us know you got past this. I'm going to resolve this issue.
> AvroTypeException decoding from earlier schema version
> ------------------------------------------------------
>
> Key: AVRO-1915
> URL: https://issues.apache.org/jira/browse/AVRO-1915
> Project: Avro
> Issue Type: Bug
> Components: java
> Affects Versions: 1.7.7
> Reporter: NPE
>
> We have two services which communicate with one another by sending
> JSON-encoded Avro-based messages over Kafka. We want to update the schema
> for messages sent from service A to service B by adding an additional string
> field with a default value of "" (empty string). We have tested by initially
> adding the updated schema to service B (the reader) and continuing to send
> messages in the older format from service A (the writer).
> Simplified example of old schema (some fields omitted):
> {code}
> {
> "type": "record",
> "name": "Envelope",
> "fields": [{
> "name": "appId",
> "type": "string"
> }, {
> "name": "time",
> "type": "long"
> }, {
> "name": "type",
> "type": "string"
> }, {
> "name": "payload",
> "type": [{
> "type": "record",
> "name": "MessagePayload",
> "fields": [{
> "name": "context",
> "type": {
> "type": "record",
> "name": "PayloadContext",
> "fields": [{
> "name": "source",
> "type": "string"
> }, {
> "name": "requestId",
> "type": "string"
> }]
> }
> }, {
> "name": "content",
> "type": "string"
> }, {
> "name": "contentType",
> "type": "string"
> }]
> }]
> }]
> }
> {code}
> Simplified example of new schema (some fields omitted):
> {code}
> {
> "type": "record",
> "name": "Envelope",
> "fields": [{
> "name": "appId",
> "type": "string"
> }, {
> "name": "time",
> "type": "long"
> }, {
> "name": "type",
> "type": "string"
> }, {
> "name": "payload",
> "type": [{
> "type": "record",
> "name": "MessagePayload",
> "fields": [{
> "name": "context",
> "type": {
> "type": "record",
> "name": "PayloadContext",
> "fields": [{
> "name": "source",
> "type": "string"
> }, {
> "name": "requestId",
> "type": "string"
> }, {
> "name": "newField",
> "type": "string",
> "default": ""
> }]
> }
> }, {
> "name": "content",
> "type": "string"
> }, {
> "name": "contentType",
> "type": "string"
> }]
> }]
> }]
> }
> {code}
> Our understanding was that the reader, with the newer schema, should be able
> to parse messages sent with the older given the default value for the missing
> field; however, we are getting the following exception:
> {code}
> org.apache.avro.AvroTypeException: Expected string. Got END_OBJECT
> {code}
> Are we missing something here?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)