Uploaded image for project: 'Apache Avro'
  1. Apache Avro
  2. AVRO-3980

Error to deserialize field of type Long after upgrade from 1.11.1 to 1.11.3

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Critical
    • Resolution: Unresolved
    • 1.11.3
    • None
    • java, logical types
    • None

    Description

      After we upgraded Avro library and avro-maven-plugin from version 1.11.1 to 1.11.3 and
      we started to get the error "cannot read collections larger than 2147483639 items in java library".
       
      This error is generated by SystemLimitException.checkMaxCollectionLength.
      The data that we are trying to deserialize (using avro 1.11.3) was serealized using avro 1.11.1.

      The object that we are trying to deserealize is:
      {
          "name": "statuses",
          "type":

      {         "type": "array",         "items": "com.entity.avro.StatusAvro"     }

      }

      {
          "name": "statuses",
          "type": {
              "type": "array",
              "items": {
                  "name": "StatusAvro",
                  "type": "record",
                  "namespace": "com.entity.avro",
                  "fields": [
                     

      {                     "name": "status",                     "type": [                         "null",                         "string"                     ]                 }

      ,
                     

      {                     "name": "reason",                     "type": [                         "null",                         "string"                     ]                 }

      ,
                     

      {                     "name": "validFor",                     "type": "com.entity.avro.ValidForAvro"                 }

                  ]
              }
          }
      }

      {
          "name": "validFor",
          "type": {
              "name": "ValidForAvro",
              "type": "record",
              "namespace": "com.entity.avro",
              "fields": [
                 

      {                 "name": "start",                 "type": "long"             }

      ,
                 

      {                 "name": "end",                 "type": "long"             }

              ]
          }
      }

      This is an example of the objects listed above:
      "statuses": [
          {
              "status": "INIT",
              "reason": "Final_New_Reason",
              "validFor":

      {             "start": "2020-01-30T11:45:00.839Z",             "end": "2030-01-23T06:58:21.563Z"         }

          }
      ]

      The problem is that the array has only one item as shown above, so why is it throwing an error of the collection is too long?

      Attachments

        1. party.avsc
          2 kB
          Jari Louvem
        2. party-sample-values.txt
          811 kB
          Jari Louvem

        Activity

          People

            Unassigned Unassigned
            jarilouvem Jari Louvem
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated: