DMYTRO TRUNYKOV created AVRO-2796:
-------------------------------------
Summary: 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
Attachments: record.avsc
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.3.4#803005)