You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Mahesh (JIRA)" <ji...@apache.org> on 2018/05/09 08:23:00 UTC
[jira] [Updated] (AVRO-2177) avro-protobuf not honouring
java_multiple_files option
[ https://issues.apache.org/jira/browse/AVRO-2177?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mahesh updated AVRO-2177:
-------------------------
Description:
Using avro-protobuf for google protobuf timestamp models fails to extract schema due to invalid namespace resolution.
Proto model for timestamp has following options defined.
{code:java}
option java_outer_classname = "TimestampProto";
option java_multiple_files = true;
{code}
That would mean that the generated code for Timestamp will be at "com.google.protobuf.Timestamp" rather than "com.google.protobuf.TimestampProto$Timestamp".
However, when I try to derive an avro schema from a proto model using google timestamp, avro-protobuf is not honouring the java_multiple_files option and tries to look for timestamp class at "com.google.protobuf.TimestampProto$Timestamp"
{code:java}
Caused by: java.lang.ClassNotFoundException: Failed to load classcom.google.protobuf.TimestampProto$Timestamp
at org.apache.avro.util.ClassUtils.forName(ClassUtils.java:60)
at org.apache.avro.util.ClassUtils.forName(ClassUtils.java:36)
at com.deliveroo.data.util.proto.avro.ProtobufData.newRecord(ProtobufData.java:137){code}
"getNamespace" of org.apache.avro.protobuf.ProtobufData ins't honouring multiple files option there by breaking models that import google proto definitions.
was:
Using avro-protobuf for google protobuf timestamp models fails to extract schema due to invalid namespace resolution.
Proto model for timestamp has following options defined.
{code:java}
option java_outer_classname = "TimestampProto";
option java_multiple_files = true;
{code}
That would mean that the generated code for Timestamp will be at "com.google.protobuf.Timestamp" rather than "com.google.protobuf.TimestampProto$Timestamp".
However, when I try to derive an avro schema from a proto model using google timestamp, avro-protobuf is not honouring the java_multiple_files option and tries to look for timestamp class at "com.google.protobuf.TimestampProto$Timestamp"
{code:java}
Caused by: java.lang.ClassNotFoundException: Failed to load classcom.google.protobuf.TimestampProto$Timestamp
at org.apache.avro.util.ClassUtils.forName(ClassUtils.java:60)
at org.apache.avro.util.ClassUtils.forName(ClassUtils.java:36)
at com.deliveroo.data.util.proto.avro.ProtobufData.newRecord(ProtobufData.java:137){code}
"getNamespace" of org.apache.avro.protobuf.ProtobufData ins't honouring multiple files option there by breaking models that import google proto definitions.
> avro-protobuf not honouring java_multiple_files option
> ------------------------------------------------------
>
> Key: AVRO-2177
> URL: https://issues.apache.org/jira/browse/AVRO-2177
> Project: Avro
> Issue Type: Bug
> Components: java
> Affects Versions: 1.8.2
> Reporter: Mahesh
> Priority: Major
>
> Using avro-protobuf for google protobuf timestamp models fails to extract schema due to invalid namespace resolution.
>
> Proto model for timestamp has following options defined.
> {code:java}
> option java_outer_classname = "TimestampProto";
> option java_multiple_files = true;
> {code}
>
> That would mean that the generated code for Timestamp will be at "com.google.protobuf.Timestamp" rather than "com.google.protobuf.TimestampProto$Timestamp".
>
> However, when I try to derive an avro schema from a proto model using google timestamp, avro-protobuf is not honouring the java_multiple_files option and tries to look for timestamp class at "com.google.protobuf.TimestampProto$Timestamp"
>
> {code:java}
> Caused by: java.lang.ClassNotFoundException: Failed to load classcom.google.protobuf.TimestampProto$Timestamp
> at org.apache.avro.util.ClassUtils.forName(ClassUtils.java:60)
> at org.apache.avro.util.ClassUtils.forName(ClassUtils.java:36)
> at com.deliveroo.data.util.proto.avro.ProtobufData.newRecord(ProtobufData.java:137){code}
>
> "getNamespace" of org.apache.avro.protobuf.ProtobufData ins't honouring multiple files option there by breaking models that import google proto definitions.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)