NPE in Java, RecordBuilderBase.defaultValue
-------------------------------------------

                 Key: AVRO-999
                 URL: https://issues.apache.org/jira/browse/AVRO-999
             Project: Avro
          Issue Type: Bug
          Components: java
    Affects Versions: 1.6.1
         Environment: Java
            Reporter: Jay Rutten


If you have a union with a default of null, the code in 
RecordBuilderBase.defaultValue will cause an NPE in ConcurrentHashMap, since it 
is trying to add a null to the map.

Sample union:

{code}
record Sample {
    union{null, string} value = null;
}
{code}

Code:

{code}
// If not cached, get the default Java value by encoding the default JSON
// value and then decoding it:
if (defaultValue == null) {
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  encoder = EncoderFactory.get().binaryEncoder(baos, encoder);
  ResolvingGrammarGenerator.encode(encoder, field.schema(), defaultJsonValue);
  encoder.flush();
  decoder = DecoderFactory.get().binaryDecoder(baos.toByteArray(), decoder);
  defaultValue = new GenericDatumReader(field.schema()).read(null, decoder);
  defaultSchemaValues.putIfAbsent(field.pos(), defaultValue); // <-- NPE from 
here
}
{code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to