[ https://issues.apache.org/jira/browse/AVRO-2796?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Christophe Le Saec updated AVRO-2796: ------------------------------------- Attachment: therecord.java > Generated schema class can't be compiled: code too large > -------------------------------------------------------- > > Key: AVRO-2796 > URL: https://issues.apache.org/jira/browse/AVRO-2796 > Project: Apache Avro > Issue Type: Bug > Components: java > Affects Versions: 1.9.2 > Environment: {code:java} > $ uname -a > Linux barlnx 5.4.28-gentoo-PRI #1 SMP PREEMPT Mon Mar 30 19:39:16 EEST 2020 > x86_64 Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz GenuineIntel GNU/Linux{code} > {code:java} > $ java -version > java version "1.8.0_202" > Java(TM) SE Runtime Environment (build 1.8.0_202-b08) > Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode){code} > Reporter: DMYTRO TRUNYKOV > Priority: Major > Attachments: record.avsc, recordfixed.avsc, therecord.java > > > Hi, > I have a schema (see the attach) that can be compiled into Java source code > and then compiled by javac. > This works for the AVRO release 1.8.2, but fails with the 1.9.2. > Below are examples. > Happy path (AVRO version 1.8.2): > {code:java} > $ java -jar avro-tools-1.8.2.jar compile -string schema record.avsc > generated_sources/ > Input files to compile: > record.avsc > log4j:WARN No appenders could be found for logger (AvroVelocityLogChute). > log4j:WARN Please initialize the log4j system properly. > log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more > info. > $ javac -cp avro-tools-1.8.2.jar generated_sources/example/avro/therecord.java > $ tree generated_sources/ > generated_sources/ > └── example > └── avro > ├── therecord$1.class > ├── therecord$Builder.class > ├── therecord.class > └── therecord.java > {code} > > Unhappy path (AVRO version 1.9.2): > {code:java} > $ java -jar avro-tools-1.9.2.jar compile -string schema record.avsc > generated_sources/ > Input files to compile: > record.avsc > 20/04/12 13:51:27 WARN velocity.deprecation: configuration key > 'resource.loader' has been deprecated in favor of 'resource.loaders' > 20/04/12 13:51:27 WARN velocity.deprecation: configuration key > 'class.resource.loader.class' has been deprecated in favor of 'resour > ce.loader.class.class' > 20/04/12 13:51:27 WARN velocity.deprecation: configuration key > 'file.resource.loader.class' has been deprecated in favor of 'resourc > e.loader.file.class' > 20/04/12 13:51:27 WARN velocity.deprecation: configuration key > 'file.resource.loader.path' has been deprecated in favor of 'resource > .loader.file.path' > 20/04/12 13:51:27 WARN velocity.deprecation: configuration key > 'runtime.references.strict' has been deprecated in favor of 'runtime. > strict_mode.enable' > 20/04/12 13:51:27 WARN velocity.deprecation: configuration key > 'space.gobbling' has been deprecated in favor of 'parser.space_gobbling' > 20/04/12 13:51:27 WARN specific.SpecificCompiler: Record > 'example.avro.therecord' contains more than 254 parameters which exceeds the > JVM spec for the number of permitted constructor arguments. Clients must rely > on the builder pattern to create objects instead. For more info see JIRA > ticket AVRO-1642. > $ javac -cp avro-tools-1.9.2.jar generated_sources/example/avro/therecord.java > generated_sources/example/avro/therecord.java:24600: error: code too large > private Builder(example.avro.therecord.Builder other) { > ^ > generated_sources/example/avro/therecord.java:90993: error: code too large > @Override public void customDecode(org.apache.avro.io.ResolvingDecoder in) > ^ > 2 errors > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)