avro-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mr Fish (JIRA)" <j...@apache.org>
Subject [jira] Updated: (AVRO-171) Protocol Introspection can produce invalid forward references
Date Sat, 24 Oct 2009 14:05:59 GMT

     [ https://issues.apache.org/jira/browse/AVRO-171?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Mr Fish updated AVRO-171:
-------------------------

    Description: 
Take a look at this code which is what happens in the SpecificResponder handshake.

        // server side
        final Protocol protocol = ReflectData.get().getProtocol(MyServiceIface.class);
        final String string = protocol.toString();

        // client side
        Protocol.parse(string);

If you have a compound object made of 
class A {
    B1 b1;
    B2 b2;
}

class B1 {
    X x;
}

class B2 {
    X x;
}

class X {
 int i;
}

Then the types will be built up by RefectData.createSchema()
A, B1, X, B2

This is then reversed by RefectData.getProtocol() so B1 has no forward reference
B2, X, B1, A.

But this breaks B2
org.apache.avro.SchemaParseException: Undefined name: "X"

  




  was:
Take a look at this code that is what happens in SpecificResponder handshake.

        // server side
        final Protocol protocol = ReflectData.get().getProtocol(MyServiceIface.class);
        final String string = protocol.toString();

        // client side
        Protocol.parse(string);

If you have a compound object made of 
class A {
    B1 b1;
    B2 b2;
}

class B1 {
    X x;
}

class B2 {
    X x;
}

Then the types will be built up by RefectData.createSchema()
A, B1, X, B2

This is then reversed by RefectData.getProtocol() so B1 has no forward reference
B2, X, B1, A.

But this breaks B2
org.apache.avro.SchemaParseException: Undefined name: "X"

  





> Protocol Introspection can produce invalid forward references
> -------------------------------------------------------------
>
>                 Key: AVRO-171
>                 URL: https://issues.apache.org/jira/browse/AVRO-171
>             Project: Avro
>          Issue Type: Bug
>          Components: java
>    Affects Versions: 1.2.0
>         Environment: java
>            Reporter: Mr Fish
>
> Take a look at this code which is what happens in the SpecificResponder handshake.
>         // server side
>         final Protocol protocol = ReflectData.get().getProtocol(MyServiceIface.class);
>         final String string = protocol.toString();
>         // client side
>         Protocol.parse(string);
> If you have a compound object made of 
> class A {
>     B1 b1;
>     B2 b2;
> }
> class B1 {
>     X x;
> }
> class B2 {
>     X x;
> }
> class X {
>  int i;
> }
> Then the types will be built up by RefectData.createSchema()
> A, B1, X, B2
> This is then reversed by RefectData.getProtocol() so B1 has no forward reference
> B2, X, B1, A.
> But this breaks B2
> org.apache.avro.SchemaParseException: Undefined name: "X"
>   

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message