The code of method is exceeding the 65535 bytes limit

One Star

The code of method is exceeding the 65535 bytes limit

Hi,
So I am needing to perform ETL on a file that is composed of 700+ fields. I created the schema for the file which is fine and I can read in the file, but the second I want to perform any transformations on the file, I get the following error:
Exception in thread "Thread-0" java.lang.Error: Unresolved compilation problem:
The code of method tFileInputPositional_2Process() is exceeding the 65535 bytes limit

Basically, the generated code exceeds 65535 bytes in length and that is a violation of java. Is there a reason the setup and reading of a file isn't decomposed into a separate function. That would easily resolve my issue.
How can I resolve this?
Thanks
Employee

Re: The code of method is exceeding the 65535 bytes limit

Hello,
Can you post a bug on our bugtracker ?
Thanks for your support,
One Star

Re: The code of method is exceeding the 65535 bytes limit

Hi,
I want to know if there is a limit number of tRunJob, because I've created a job with 107 tRunJob and when it runs it's ok, if I add others tRunJob this error appears:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
connected
The code of method tRunJob_7Process() is exceeding the 65535 bytes limit
This is the log:
!ENTRY org.talend.libraries 4 0 2008-06-09 17:11:05.101
!MESSAGE ERROR: Accept timed out
!STACK 0
java.net.SocketTimeoutException: Accept timed out
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(Unknown Source)
at java.net.ServerSocket.implAccept(Unknown Source)
at java.net.ServerSocket.accept(Unknown Source)
at org.talend.designer.runprocess.RunProcessContext$PerformanceMonitor.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Thanks a lot!
Employee

Re: The code of method is exceeding the 65535 bytes limit

This is a limitation a Java, you're right, you have too much tRunJob.
HTH,
Employee

Re: The code of method is exceeding the 65535 bytes limit

yes, this is a limitation in 32 bit JDK. you can try to use a 64bit JDK which I think the limit is set much higher.
(or perl!!!)

Re: The code of method is exceeding the 65535 bytes limit

The maximum method size is ALWAYS 64kb for both 32bit and 64bit java.
If all of you're 107 tRunJobs are connected with "OnSubJobOk" links-- you may be able to remove some of these links to force the code generator to use a different method for each non-dependent subjob.
If this dosnt work, you may be able to reduce the number of subjobs in a single job by adding wrapper jobs around it.
MASTER JOB launches CHILD JOB 1 (contains 54 subjobs) and CHILD_JOB_2 (contains 53 subjobs)
One Star

Re: The code of method is exceeding the 65535 bytes limit

We are running into the problem with a table that has many (too many) fields and the SCD component. We cannot partition it. So we had to solve it with SQL - and were not able to use the much more convenient SCD component.
Since the maximum method size is always 64K, no matter if the JVM is 32bit or 64bit, Talend should think about how the code is generated. At least that's the part they have control over. Blaming it on the JVM is no help here.