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

Insufficient validation in generated specific record builder implementations


    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.6.1
    • Fix Version/s: 1.6.2
    • Component/s: None
    • Labels:


      The are two main problems with the generated build() method in specific record builders:

      • For non-primitive types, if there is no default value and the user does not set the value, build() will execute successfully without throwing an exception
        • Instead, an AvroRuntimeException should be thrown with an exception message indicating the name of the required field that was not set
      • For primitive types, if there is no default value and the user does not set the value, an AvroRuntimeException is thrown with the 'cause' set to a NullPointerException, which is not very helpful
        • The NPE comes from attempting to set the primitive field to the result of defaultValue(), which is null


        1. AVRO-1007.patch
          3 kB
          James Baldassari
        2. AVRO-1007-v2.patch
          8 kB
          James Baldassari
        3. AVRO-1007-v3.patch
          11 kB
          James Baldassari
        4. AVRO-1007-v4.patch
          11 kB
          Scott Carey
        5. AVRO-1007.patch
          5 kB
          Doug Cutting
        6. AVRO-1007.patch
          6 kB
          Doug Cutting
        7. AVRO-1007.patch
          7 kB
          Doug Cutting



            • Assignee:
              jbaldassari James Baldassari
              jbaldassari James Baldassari
            • Votes:
              0 Vote for this issue
              1 Start watching this issue


              • Created: