nandini created AVRO-2974:
-----------------------------

             Summary: Env variable AVRO_DISABLE_ENUM_SYMBOL_VALIDATION is not 
honoured
                 Key: AVRO-2974
                 URL: https://issues.apache.org/jira/browse/AVRO-2974
             Project: Apache Avro
          Issue Type: Improvement
    Affects Versions: 1.9.0
            Reporter: nandini


Our project upgraded from 1.8.2 to 1.9.1

We observed that it made the constraints checking more strict.

https://my.diffend.io/gems/avro/1.8.2/1.9.1

 

Although the switch is provided, in Schema.Parser, it does not parse 
AVRO_DISABLE_ENUM_SYMBOL_VALIDATION in getValidateDefaults()) - which is why 
this environment variable if set still is not honoured. It is set in code to 
true. We can see it is parsed in data/lib/avro.rb file. A similar approach 
should be taken for java APIs so that migration may be easier. Ofcourse with a 
warning.

I understand this is not a bug but an enhancement, but some users may want to 
by pass this check (which was thought out while introducing the environment 
variable I believe). 

POC:
{code:java}
public static void main(String[] args) throws Exception {
 //If env AVRO_DISABLE_FIELD_DEFAULT_VALIDATION=false then disable check 
 //Else, it will default to true (as the behaviour in 1.9.1)
 Schema.Parser parser = new Schema.Parser();
 System.out.println(parser.getValidateDefaults());

String disableEnv = System.getenv("AVRO_DISABLE_FIELD_DEFAULT_VALIDATION");
boolean disable = null != disableEnv?Boolean.parseBoolean(disableEnv): true;
System.out.println(disable);

parser.setValidateDefaults(disable);
System.out.println(parser.getValidateDefaults());
 Schema schema = parser.parse(schemaText);
 //Schema schema = parser.setValidateDefaults(false).parse(schemaText);
System.out.println(schema);
}
{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to