You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@avro.apache.org by Alex Kozlov <al...@gmail.com> on 2013/02/11 02:21:27 UTC

1.7.3 regression?

When trying to compile generated code for the following schema:

{code}
 {
  "type" : "record",
  "namespace" : "com.mycompany.hadoop",
  "name" : "AvroDisk",
  "fields" : [ {
    "name" : "serial_num",
    "type" : [ "null", "string" ],
    "doc" : "Serial Number"
  }, {
    "name" : "seq",
    "type" : [ "null", "long" ],
    "doc" : "Sequence #"
  }, {
    "name" : "attributes",
    "type" : [ "null", {
      "type" : "map",
      "values" : "string"
    } ],
    "doc" : "Attributes of a disk"
  } ]
}
{code}

I get errors:

{code}
[ERROR] /Users/akozlov/.../AvroDisk.java:[137,41] incompatible types
[ERROR] found   : java.lang.Object
[ERROR] required: java.lang.CharSequence
[ERROR] /Users/akozlov/.../AvroDisk.java:[141,34] incompatible types
[ERROR] found   : java.lang.Object
[ERROR] required: java.lang.Long
[ERROR] /Users/akozlov/.../AvroDisk.java:[145,41] incompatible types
[ERROR] found   : java.lang.Object
[ERROR] required: java.util.Map<java.lang.CharSequence,java.lang.CharSequence>
{code}

It appears that the 1.7.3 code is missing an explicit cast to
((java.lang.{CharSequence, Long,Map}) in the Builder method:

{code}
  133     /** Creates a Builder by copying an existing AvroDisk instance */
    134     private Builder(com.seagate.hadoop.avro.AvroDisk other) {
    135             super(com.seagate.hadoop.avro.AvroDisk.SCHEMA$);
    136       if (isValidValue(fields()[0], other.serial_num)) {
    137         this.serial_num =
data().deepCopy(fields()[0].schema(), other.serial_num);
    138         fieldSetFlags()[0] = true;
    139       }
    140       if (isValidValue(fields()[1], other.seq)) {
    141         this.seq = data().deepCopy(fields()[1].schema(), other.seq);
    142         fieldSetFlags()[1] = true;
    143       }
    144       if (isValidValue(fields()[2], other.attributes)) {
    145         this.attributes =
data().deepCopy(fields()[2].schema(), other.attributes);
    146         fieldSetFlags()[2] = true;
    147       }
    148     }
{code}

The compiler works fine for 1.7.1 and 1.7.2 versions.  The java
version I am using is:

$ java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)

Has anyone else seen this error?

Thx,

-- 
Alex Kozlov
(408) 507-4987
(408) 830-9982 fax
(650) 887-2135 efax
alexvk@gmail.com

Re: 1.7.3 regression?

Posted by Alex Kozlov <al...@gmail.com>.
Yes, it does compile from the command line with avro-1.7.3.jar in the
classpath.  Maven seems to pull a previous version of the library from
dependencies even though I configured it as per
http://avro.apache.org/docs/1.7.3/gettingstartedjava.html.

Thank  you!

On Mon, Feb 11, 2013 at 6:11 PM, Doug Cutting <cu...@apache.org> wrote:
> Alex,
>
> Is it possible that you're compiling the schema to Java with Avro
> 1.7.3, then compiling the Java with javac against the Avro 1.7.2 jar
> file?
>
> Doug
>
> On Mon, Feb 11, 2013 at 5:37 PM, Doug Cutting <cu...@apache.org> wrote:
>> This was done as a part of AVRO-1199.
>>
>> http://svn.apache.org/viewvc?view=revision&revision=1409542
>>
>> The deepCopy() method is now generic.  This works for me in Java 7.
>> Do others see this problem in Java 6?  If so, please file a bug in
>> Jira.
>>
>> Thanks,
>>
>> Doug
>>
>> On Sun, Feb 10, 2013 at 5:21 PM, Alex Kozlov <al...@gmail.com> wrote:
>>> When trying to compile generated code for the following schema:
>>>
>>> {code}
>>>  {
>>>   "type" : "record",
>>>   "namespace" : "com.mycompany.hadoop",
>>>   "name" : "AvroDisk",
>>>   "fields" : [ {
>>>     "name" : "serial_num",
>>>     "type" : [ "null", "string" ],
>>>     "doc" : "Serial Number"
>>>   }, {
>>>     "name" : "seq",
>>>     "type" : [ "null", "long" ],
>>>     "doc" : "Sequence #"
>>>   }, {
>>>     "name" : "attributes",
>>>     "type" : [ "null", {
>>>       "type" : "map",
>>>       "values" : "string"
>>>     } ],
>>>     "doc" : "Attributes of a disk"
>>>   } ]
>>> }
>>> {code}
>>>
>>> I get errors:
>>>
>>> {code}
>>> [ERROR] /Users/akozlov/.../AvroDisk.java:[137,41] incompatible types
>>> [ERROR] found   : java.lang.Object
>>> [ERROR] required: java.lang.CharSequence
>>> [ERROR] /Users/akozlov/.../AvroDisk.java:[141,34] incompatible types
>>> [ERROR] found   : java.lang.Object
>>> [ERROR] required: java.lang.Long
>>> [ERROR] /Users/akozlov/.../AvroDisk.java:[145,41] incompatible types
>>> [ERROR] found   : java.lang.Object
>>> [ERROR] required: java.util.Map<java.lang.CharSequence,java.lang.CharSequence>
>>> {code}
>>>
>>> It appears that the 1.7.3 code is missing an explicit cast to
>>> ((java.lang.{CharSequence, Long,Map}) in the Builder method:
>>>
>>> {code}
>>>   133     /** Creates a Builder by copying an existing AvroDisk instance */
>>>     134     private Builder(com.seagate.hadoop.avro.AvroDisk other) {
>>>     135             super(com.seagate.hadoop.avro.AvroDisk.SCHEMA$);
>>>     136       if (isValidValue(fields()[0], other.serial_num)) {
>>>     137         this.serial_num =
>>> data().deepCopy(fields()[0].schema(), other.serial_num);
>>>     138         fieldSetFlags()[0] = true;
>>>     139       }
>>>     140       if (isValidValue(fields()[1], other.seq)) {
>>>     141         this.seq = data().deepCopy(fields()[1].schema(), other.seq);
>>>     142         fieldSetFlags()[1] = true;
>>>     143       }
>>>     144       if (isValidValue(fields()[2], other.attributes)) {
>>>     145         this.attributes =
>>> data().deepCopy(fields()[2].schema(), other.attributes);
>>>     146         fieldSetFlags()[2] = true;
>>>     147       }
>>>     148     }
>>> {code}
>>>
>>> The compiler works fine for 1.7.1 and 1.7.2 versions.  The java
>>> version I am using is:
>>>
>>> $ java -version
>>> java version "1.6.0_37"
>>> Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
>>> Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
>>>
>>> Has anyone else seen this error?
>>>
>>> Thx,
>>>
>>> --
>>> Alex Kozlov
>>> (408) 507-4987
>>> (408) 830-9982 fax
>>> (650) 887-2135 efax
>>> alexvk@gmail.com

Re: 1.7.3 regression?

Posted by Doug Cutting <cu...@apache.org>.
Alex,

Is it possible that you're compiling the schema to Java with Avro
1.7.3, then compiling the Java with javac against the Avro 1.7.2 jar
file?

Doug

On Mon, Feb 11, 2013 at 5:37 PM, Doug Cutting <cu...@apache.org> wrote:
> This was done as a part of AVRO-1199.
>
> http://svn.apache.org/viewvc?view=revision&revision=1409542
>
> The deepCopy() method is now generic.  This works for me in Java 7.
> Do others see this problem in Java 6?  If so, please file a bug in
> Jira.
>
> Thanks,
>
> Doug
>
> On Sun, Feb 10, 2013 at 5:21 PM, Alex Kozlov <al...@gmail.com> wrote:
>> When trying to compile generated code for the following schema:
>>
>> {code}
>>  {
>>   "type" : "record",
>>   "namespace" : "com.mycompany.hadoop",
>>   "name" : "AvroDisk",
>>   "fields" : [ {
>>     "name" : "serial_num",
>>     "type" : [ "null", "string" ],
>>     "doc" : "Serial Number"
>>   }, {
>>     "name" : "seq",
>>     "type" : [ "null", "long" ],
>>     "doc" : "Sequence #"
>>   }, {
>>     "name" : "attributes",
>>     "type" : [ "null", {
>>       "type" : "map",
>>       "values" : "string"
>>     } ],
>>     "doc" : "Attributes of a disk"
>>   } ]
>> }
>> {code}
>>
>> I get errors:
>>
>> {code}
>> [ERROR] /Users/akozlov/.../AvroDisk.java:[137,41] incompatible types
>> [ERROR] found   : java.lang.Object
>> [ERROR] required: java.lang.CharSequence
>> [ERROR] /Users/akozlov/.../AvroDisk.java:[141,34] incompatible types
>> [ERROR] found   : java.lang.Object
>> [ERROR] required: java.lang.Long
>> [ERROR] /Users/akozlov/.../AvroDisk.java:[145,41] incompatible types
>> [ERROR] found   : java.lang.Object
>> [ERROR] required: java.util.Map<java.lang.CharSequence,java.lang.CharSequence>
>> {code}
>>
>> It appears that the 1.7.3 code is missing an explicit cast to
>> ((java.lang.{CharSequence, Long,Map}) in the Builder method:
>>
>> {code}
>>   133     /** Creates a Builder by copying an existing AvroDisk instance */
>>     134     private Builder(com.seagate.hadoop.avro.AvroDisk other) {
>>     135             super(com.seagate.hadoop.avro.AvroDisk.SCHEMA$);
>>     136       if (isValidValue(fields()[0], other.serial_num)) {
>>     137         this.serial_num =
>> data().deepCopy(fields()[0].schema(), other.serial_num);
>>     138         fieldSetFlags()[0] = true;
>>     139       }
>>     140       if (isValidValue(fields()[1], other.seq)) {
>>     141         this.seq = data().deepCopy(fields()[1].schema(), other.seq);
>>     142         fieldSetFlags()[1] = true;
>>     143       }
>>     144       if (isValidValue(fields()[2], other.attributes)) {
>>     145         this.attributes =
>> data().deepCopy(fields()[2].schema(), other.attributes);
>>     146         fieldSetFlags()[2] = true;
>>     147       }
>>     148     }
>> {code}
>>
>> The compiler works fine for 1.7.1 and 1.7.2 versions.  The java
>> version I am using is:
>>
>> $ java -version
>> java version "1.6.0_37"
>> Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
>> Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
>>
>> Has anyone else seen this error?
>>
>> Thx,
>>
>> --
>> Alex Kozlov
>> (408) 507-4987
>> (408) 830-9982 fax
>> (650) 887-2135 efax
>> alexvk@gmail.com

Re: 1.7.3 regression?

Posted by Doug Cutting <cu...@apache.org>.
This was done as a part of AVRO-1199.

http://svn.apache.org/viewvc?view=revision&revision=1409542

The deepCopy() method is now generic.  This works for me in Java 7.
Do others see this problem in Java 6?  If so, please file a bug in
Jira.

Thanks,

Doug

On Sun, Feb 10, 2013 at 5:21 PM, Alex Kozlov <al...@gmail.com> wrote:
> When trying to compile generated code for the following schema:
>
> {code}
>  {
>   "type" : "record",
>   "namespace" : "com.mycompany.hadoop",
>   "name" : "AvroDisk",
>   "fields" : [ {
>     "name" : "serial_num",
>     "type" : [ "null", "string" ],
>     "doc" : "Serial Number"
>   }, {
>     "name" : "seq",
>     "type" : [ "null", "long" ],
>     "doc" : "Sequence #"
>   }, {
>     "name" : "attributes",
>     "type" : [ "null", {
>       "type" : "map",
>       "values" : "string"
>     } ],
>     "doc" : "Attributes of a disk"
>   } ]
> }
> {code}
>
> I get errors:
>
> {code}
> [ERROR] /Users/akozlov/.../AvroDisk.java:[137,41] incompatible types
> [ERROR] found   : java.lang.Object
> [ERROR] required: java.lang.CharSequence
> [ERROR] /Users/akozlov/.../AvroDisk.java:[141,34] incompatible types
> [ERROR] found   : java.lang.Object
> [ERROR] required: java.lang.Long
> [ERROR] /Users/akozlov/.../AvroDisk.java:[145,41] incompatible types
> [ERROR] found   : java.lang.Object
> [ERROR] required: java.util.Map<java.lang.CharSequence,java.lang.CharSequence>
> {code}
>
> It appears that the 1.7.3 code is missing an explicit cast to
> ((java.lang.{CharSequence, Long,Map}) in the Builder method:
>
> {code}
>   133     /** Creates a Builder by copying an existing AvroDisk instance */
>     134     private Builder(com.seagate.hadoop.avro.AvroDisk other) {
>     135             super(com.seagate.hadoop.avro.AvroDisk.SCHEMA$);
>     136       if (isValidValue(fields()[0], other.serial_num)) {
>     137         this.serial_num =
> data().deepCopy(fields()[0].schema(), other.serial_num);
>     138         fieldSetFlags()[0] = true;
>     139       }
>     140       if (isValidValue(fields()[1], other.seq)) {
>     141         this.seq = data().deepCopy(fields()[1].schema(), other.seq);
>     142         fieldSetFlags()[1] = true;
>     143       }
>     144       if (isValidValue(fields()[2], other.attributes)) {
>     145         this.attributes =
> data().deepCopy(fields()[2].schema(), other.attributes);
>     146         fieldSetFlags()[2] = true;
>     147       }
>     148     }
> {code}
>
> The compiler works fine for 1.7.1 and 1.7.2 versions.  The java
> version I am using is:
>
> $ java -version
> java version "1.6.0_37"
> Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
> Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
>
> Has anyone else seen this error?
>
> Thx,
>
> --
> Alex Kozlov
> (408) 507-4987
> (408) 830-9982 fax
> (650) 887-2135 efax
> alexvk@gmail.com