Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
BipinNS
Contributor
Contributor

Regarding tRunjob - Use an independent process to run subjob option

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:

  • when we use independent process for a child job, can the child job still sent response back to calling parent process ( eg: using tBufferOutput )
  • if suppose parent process gets 5 messages, will that cause 5 child processed to be created, or will still be sequencial, i.e. next process will only be processed once current one gets completed
  • this also raises question, does parent process wait for the child process to complete when using independent process
  • will killing parent process also kill the ongoing child process
  • will there be a way to capture chid process id

Could you please help clarify this.

Labels (3)
2 Replies
Anonymous
Not applicable

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.

Anonymous
Not applicable

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