Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
Avro, mail # user - 1.7.3 regression?


Copy link to this message
-
Re: 1.7.3 regression?
Doug Cutting 2013-02-12, 02:11
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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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
>> [EMAIL PROTECTED]