Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
We're using a parent job that keeps listenening to an IBM queue and this parent job has tRunjob component that triggers a child job for any incoming message.
Currently, we're not using tRunjob option to : Use an independent process to run subjob.
However, given, the memory doen't get released completely after the child job processing completes, as the parent job process keeps on going as it listens to the queue, we're thinking of using this option to segregate child job process with parent - to see if that helps.
Had couple of queries on this option:
Could you please help clarify this.
I would advise against this approach. First of all, you cannot use the tBufferOutput to pass data back when the tRunJob creates an independent process. If you test this with a small and simple data set, you will see that switching on the independent process will massively increase the processing time. This is because a new process is created for every row sent. Therefore you are having to wait for the job to start and stop between every row. The tRunJob will not be killed by stopping the parent. So, if you have the job run by the tRunJob creating a file after a 10 second pause, you kill the parent job just after the tRunJob is triggered, the tRunJob job will still produce the file 10 seconds later. With regard to capturing the child process id, you will be able to do this, but will need to use Java to do this.
Hello,
If you use a tFlowToIterate -> tJava -> OnComponentOK -> tRunJob then usually the memory gets cleaned up.
If you want to forcefully call the cleaning lady then: tJava ( System.gc(); )
I'm unsure about your job design but I wonder if using the new Messaging components would improve the situation: https://help.talend.com/r/en-US/8.0/jms/tmessaginginput-standard-properties