<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Best Practices for Error Handling, tLogCatcher, and tDie in Multi-Level Job Design in Talend Studio</title>
    <link>https://community.qlik.com/t5/Talend-Studio/Best-Practices-for-Error-Handling-tLogCatcher-and-tDie-in-Multi/m-p/2524530#M147786</link>
    <description>&lt;P data-start="195" data-end="202"&gt;Hi all,&lt;/P&gt;
&lt;P data-start="204" data-end="358"&gt;I’d appreciate some guidance on error handling in Talend, especially regarding the correct use of &lt;STRONG data-start="302" data-end="317"&gt;tLogCatcher&lt;/STRONG&gt; and &lt;STRONG data-start="322" data-end="330"&gt;tDie&lt;/STRONG&gt; across multiple job levels.&lt;/P&gt;
&lt;P data-start="360" data-end="384"&gt;Here’s my current setup:&lt;/P&gt;
&lt;UL data-start="386" data-end="891"&gt;
&lt;LI data-start="386" data-end="597"&gt;
&lt;P data-start="388" data-end="597"&gt;I have a &lt;STRONG data-start="397" data-end="405"&gt;MAIN&lt;/STRONG&gt; job that handles high-level orchestration. It writes to a &lt;STRONG data-start="464" data-end="472"&gt;HEAD&lt;/STRONG&gt; audit table at the start and end of the process. If an error occurs, it updates the corresponding audit row with error info.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="601" data-end="752"&gt;
&lt;P data-start="603" data-end="752"&gt;The &lt;STRONG data-start="607" data-end="615"&gt;MAIN&lt;/STRONG&gt; job calls a &lt;STRONG data-start="628" data-end="637"&gt;STAGE&lt;/STRONG&gt; subjob. STAGE loops through multiple source systems. For each source, it transfers all tables to a destination DB.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="754" data-end="891"&gt;
&lt;P data-start="756" data-end="891"&gt;For each &lt;STRONG data-start="765" data-end="783"&gt;table transfer&lt;/STRONG&gt;, there’s an audit row written in a &lt;STRONG data-start="819" data-end="829"&gt;DETAIL&lt;/STRONG&gt; audit table. This row indicates success or failure per table.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-start="893" data-end="906"&gt;My questions:&lt;/P&gt;
&lt;OL data-start="908" data-end="1395"&gt;
&lt;LI data-start="908" data-end="1022"&gt;
&lt;P data-start="911" data-end="950"&gt;&lt;STRONG data-start="911" data-end="950"&gt;Where should &lt;CODE data-start="926" data-end="939"&gt;tLogCatcher&lt;/CODE&gt; be used?&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-start="954" data-end="1022"&gt;
&lt;LI data-start="954" data-end="977"&gt;
&lt;P data-start="956" data-end="977"&gt;Only in the MAIN job?&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="981" data-end="1022"&gt;
&lt;P data-start="983" data-end="1022"&gt;In all jobs (MAIN, STAGE, and subjobs)?&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI data-start="1024" data-end="1171"&gt;
&lt;P data-start="1027" data-end="1059"&gt;&lt;STRONG data-start="1027" data-end="1059"&gt;Where should &lt;CODE data-start="1042" data-end="1048"&gt;tDie&lt;/CODE&gt; be used?&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-start="1063" data-end="1171"&gt;
&lt;LI data-start="1063" data-end="1111"&gt;
&lt;P data-start="1065" data-end="1111"&gt;Only in subjobs when something critical fails?&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="1115" data-end="1171"&gt;
&lt;P data-start="1117" data-end="1171"&gt;Should it be used to bubble up errors to the MAIN job?&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI data-start="1173" data-end="1395"&gt;
&lt;P data-start="1176" data-end="1268"&gt;&lt;STRONG data-start="1176" data-end="1236"&gt;What’s the best practice for implementing error handling&lt;/STRONG&gt; in this type of architecture?&lt;/P&gt;
&lt;UL data-start="1272" data-end="1395"&gt;
&lt;LI data-start="1272" data-end="1395"&gt;
&lt;P data-start="1274" data-end="1395"&gt;I want detailed tracking at the table level, but also proper bubbling up of errors to reflect them in the HEAD audit row.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-start="1397" data-end="1480"&gt;Any recommendations or patterns you follow in similar setups would be very helpful.&lt;/P&gt;
&lt;P data-start="1482" data-end="1500"&gt;Thanks in advance!&lt;/P&gt;</description>
    <pubDate>Thu, 17 Jul 2025 09:50:23 GMT</pubDate>
    <dc:creator>Erik516</dc:creator>
    <dc:date>2025-07-17T09:50:23Z</dc:date>
    <item>
      <title>Best Practices for Error Handling, tLogCatcher, and tDie in Multi-Level Job Design</title>
      <link>https://community.qlik.com/t5/Talend-Studio/Best-Practices-for-Error-Handling-tLogCatcher-and-tDie-in-Multi/m-p/2524530#M147786</link>
      <description>&lt;P data-start="195" data-end="202"&gt;Hi all,&lt;/P&gt;
&lt;P data-start="204" data-end="358"&gt;I’d appreciate some guidance on error handling in Talend, especially regarding the correct use of &lt;STRONG data-start="302" data-end="317"&gt;tLogCatcher&lt;/STRONG&gt; and &lt;STRONG data-start="322" data-end="330"&gt;tDie&lt;/STRONG&gt; across multiple job levels.&lt;/P&gt;
&lt;P data-start="360" data-end="384"&gt;Here’s my current setup:&lt;/P&gt;
&lt;UL data-start="386" data-end="891"&gt;
&lt;LI data-start="386" data-end="597"&gt;
&lt;P data-start="388" data-end="597"&gt;I have a &lt;STRONG data-start="397" data-end="405"&gt;MAIN&lt;/STRONG&gt; job that handles high-level orchestration. It writes to a &lt;STRONG data-start="464" data-end="472"&gt;HEAD&lt;/STRONG&gt; audit table at the start and end of the process. If an error occurs, it updates the corresponding audit row with error info.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="601" data-end="752"&gt;
&lt;P data-start="603" data-end="752"&gt;The &lt;STRONG data-start="607" data-end="615"&gt;MAIN&lt;/STRONG&gt; job calls a &lt;STRONG data-start="628" data-end="637"&gt;STAGE&lt;/STRONG&gt; subjob. STAGE loops through multiple source systems. For each source, it transfers all tables to a destination DB.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="754" data-end="891"&gt;
&lt;P data-start="756" data-end="891"&gt;For each &lt;STRONG data-start="765" data-end="783"&gt;table transfer&lt;/STRONG&gt;, there’s an audit row written in a &lt;STRONG data-start="819" data-end="829"&gt;DETAIL&lt;/STRONG&gt; audit table. This row indicates success or failure per table.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-start="893" data-end="906"&gt;My questions:&lt;/P&gt;
&lt;OL data-start="908" data-end="1395"&gt;
&lt;LI data-start="908" data-end="1022"&gt;
&lt;P data-start="911" data-end="950"&gt;&lt;STRONG data-start="911" data-end="950"&gt;Where should &lt;CODE data-start="926" data-end="939"&gt;tLogCatcher&lt;/CODE&gt; be used?&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-start="954" data-end="1022"&gt;
&lt;LI data-start="954" data-end="977"&gt;
&lt;P data-start="956" data-end="977"&gt;Only in the MAIN job?&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="981" data-end="1022"&gt;
&lt;P data-start="983" data-end="1022"&gt;In all jobs (MAIN, STAGE, and subjobs)?&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI data-start="1024" data-end="1171"&gt;
&lt;P data-start="1027" data-end="1059"&gt;&lt;STRONG data-start="1027" data-end="1059"&gt;Where should &lt;CODE data-start="1042" data-end="1048"&gt;tDie&lt;/CODE&gt; be used?&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-start="1063" data-end="1171"&gt;
&lt;LI data-start="1063" data-end="1111"&gt;
&lt;P data-start="1065" data-end="1111"&gt;Only in subjobs when something critical fails?&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="1115" data-end="1171"&gt;
&lt;P data-start="1117" data-end="1171"&gt;Should it be used to bubble up errors to the MAIN job?&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI data-start="1173" data-end="1395"&gt;
&lt;P data-start="1176" data-end="1268"&gt;&lt;STRONG data-start="1176" data-end="1236"&gt;What’s the best practice for implementing error handling&lt;/STRONG&gt; in this type of architecture?&lt;/P&gt;
&lt;UL data-start="1272" data-end="1395"&gt;
&lt;LI data-start="1272" data-end="1395"&gt;
&lt;P data-start="1274" data-end="1395"&gt;I want detailed tracking at the table level, but also proper bubbling up of errors to reflect them in the HEAD audit row.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-start="1397" data-end="1480"&gt;Any recommendations or patterns you follow in similar setups would be very helpful.&lt;/P&gt;
&lt;P data-start="1482" data-end="1500"&gt;Thanks in advance!&lt;/P&gt;</description>
      <pubDate>Thu, 17 Jul 2025 09:50:23 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/Best-Practices-for-Error-Handling-tLogCatcher-and-tDie-in-Multi/m-p/2524530#M147786</guid>
      <dc:creator>Erik516</dc:creator>
      <dc:date>2025-07-17T09:50:23Z</dc:date>
    </item>
    <item>
      <title>Re: Best Practices for Error Handling, tLogCatcher, and tDie in Multi-Level Job Design</title>
      <link>https://community.qlik.com/t5/Talend-Studio/Best-Practices-for-Error-Handling-tLogCatcher-and-tDie-in-Multi/m-p/2525064#M147810</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/334084"&gt;@Erik516&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's what I would do based on my experience :&amp;nbsp;&lt;/P&gt;&lt;P&gt;1) Use a tLogCatcher in every job -&amp;gt; It's always good to be able to log anything that could happen during your execution. You can choose for each job you're using the component to either load the logs into a file, or into a SQL Table for example. In your actual way of functionning you could log everything to a table and update the rows needed with logs collected from tDie and tWarn through the tLogCatcher.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2) Use the tDie for the &lt;STRONG&gt;STAGE&lt;/STRONG&gt; subjob or other subjobs. Only use it if you decide an error is critical and should "notify" the &lt;STRONG&gt;MAIN&lt;/STRONG&gt; job. That way you can manage errors encountered during &lt;STRONG&gt;STAGE&lt;/STRONG&gt; at the &lt;STRONG&gt;MAIN&lt;/STRONG&gt; level.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;3) If you want to track correctly you can also use tWarn components if an error is not critical, this way you avoid stopping the &lt;STRONG&gt;STAGE&lt;/STRONG&gt; job with a tDie and you can continue the execution of &lt;STRONG&gt;STAGE.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I hope my indications were clear enough. There is a nice video on it :&amp;nbsp;&lt;A href="https://www.youtube.com/watch?v=s6S8twM6oR4" target="_blank"&gt;https://www.youtube.com/watch?v=s6S8twM6oR4&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- Quentin&lt;/P&gt;</description>
      <pubDate>Wed, 23 Jul 2025 09:35:08 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/Best-Practices-for-Error-Handling-tLogCatcher-and-tDie-in-Multi/m-p/2525064#M147810</guid>
      <dc:creator>quentin-vigne</dc:creator>
      <dc:date>2025-07-23T09:35:08Z</dc:date>
    </item>
  </channel>
</rss>

