Return-Path: X-Original-To: apmail-avro-user-archive@www.apache.org Delivered-To: apmail-avro-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 448ADDBB0 for ; Fri, 9 Nov 2012 17:54:32 +0000 (UTC) Received: (qmail 96722 invoked by uid 500); 9 Nov 2012 17:54:32 -0000 Delivered-To: apmail-avro-user-archive@avro.apache.org Received: (qmail 96489 invoked by uid 500); 9 Nov 2012 17:54:31 -0000 Mailing-List: contact user-help@avro.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@avro.apache.org Delivered-To: mailing list user@avro.apache.org Received: (qmail 96477 invoked by uid 99); 9 Nov 2012 17:54:31 -0000 Received: from minotaur.apache.org (HELO minotaur.apache.org) (140.211.11.9) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 09 Nov 2012 17:54:31 +0000 Received: from localhost (HELO mail-wg0-f49.google.com) (127.0.0.1) (smtp-auth username cutting, mechanism plain) by minotaur.apache.org (qpsmtpd/0.29) with ESMTP; Fri, 09 Nov 2012 17:54:31 +0000 Received: by mail-wg0-f49.google.com with SMTP id gg4so1943843wgb.30 for ; Fri, 09 Nov 2012 09:54:29 -0800 (PST) MIME-Version: 1.0 Received: by 10.216.54.149 with SMTP id i21mr5022603wec.162.1352483669739; Fri, 09 Nov 2012 09:54:29 -0800 (PST) Received: by 10.194.166.74 with HTTP; Fri, 9 Nov 2012 09:54:29 -0800 (PST) In-Reply-To: References: Date: Fri, 9 Nov 2012 09:54:29 -0800 Message-ID: Subject: Re: ArrayIndexOutOfBoundsException when adding new field at child object level in the source From: Doug Cutting To: user@avro.apache.org Content-Type: text/plain; charset=UTF-8 How are you reading the data? Can you provide a complete example? To read data you need both the schema that you wrote it with and the schema you wish to read it as. DataFileReader and Avro RPC take care of this for you, but if you're calling the lower-level DatumReader API directly then you need to be sure to call setSchema with the schema used to write the data if it differs from that you're using to read the data. Doug On Fri, Nov 9, 2012 at 7:01 AM, krishna prasad wrote: > Hi, > We have been facing an issue when we add new field at the child object > level. In out case we are using the following schema for source. > > { > "namespace":"my.pkg.path.avro", > "type":"record", > "name":"PeopleList", > "fields":[{"name":"Version","type":"int"}, > { > "name":"People","type":{ > "namespace":"my.pkg.path.avro", > "type":"array", > "items":{"type":"record","namespace":"my.pkg.path.avro","name":"Person","fields":[ > {"name":"FirstName","type":"string"}, > {"name":"LastName","type":"string"} > ] > } > } > } > ] > } > > If we add any new field to People record then deserialization failing with > the following error. > > Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException > at java.lang.System.arraycopy(Native Method) > at > org.apache.avro.io.BinaryDecoder.doReadBytes(BinaryDecoder.java:329) > at > org.apache.avro.io.BinaryDecoder.readString(BinaryDecoder.java:255) > at > org.apache.avro.io.ValidatingDecoder.readString(ValidatingDecoder.java:107) > at > org.apache.avro.generic.GenericDatumReader.readString(GenericDatumReader.java:344) > at > org.apache.avro.generic.GenericDatumReader.readString(GenericDatumReader.java:337) > at > org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:150) > at > org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:173) > at > org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:144) > at > org.apache.avro.generic.GenericDatumReader.readArray(GenericDatumReader.java:202) > at > org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:146) > at > org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:173) > at > org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:144) > at > org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:135) > at avro.AvroTest.deserialize(AvroTest.java:140) > > I really appreciate any help on this. > > Regards, > Krishna >