Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
1.9.2, 1.10.1
Description
When you do a .newBuilder() for avro generated classes, this will call
org.apache.avro.specific.SpecificData.getForSchema:
public static SpecificData getForSchema(Schema reader) {
if (reader.getType() == Type.RECORD) {
final String className = getClassName(reader);
if (className != null) {
final Class<?> clazz;
try
{ clazz = Class.forName(className); return getForClass(clazz); }catch (ClassNotFoundException e)
{ return SpecificData.get(); }}
}
which seems then to seldom find the value inside the try and a lot of ClassNotFoundException is thrown.
Throwing internal exceptions has great performance penalties and in practice users of avro 1.9.x. and 1.10.x in high performance applications are forced not to use builders.
Information about same problem is also found on:
Problem exists on at least 1.9.2 and 1.10.1 (but not on 1.7.x) in OSGI environment
Attachments
Issue Links
- relates to
-
AVRO-3156 Performance degradation in SpecificRecordBuilder introduced in 1.9.0
- Resolved
- links to