<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Nightly cron possibly skipped when an auto-update runs at 03:00]]></title><description><![CDATA[<p dir="auto">Hi,</p>
<p dir="auto">I ran into a problem with the Firefly III package that I think can affect anyone using recurring transactions, so I'm sharing what I found.</p>
<p dir="auto"><strong>What happened</strong></p>
<p dir="auto">Firefly showed one morning the "cron job hasn't run in 36 hours" warning, and that day's recurring transactions were missing. The app log shows why:</p>
<pre><code>2026-10-05T03:00:01Z taskworker: Starting task ... (app update, package was v3.13.3)
2026-10-05T03:00:46Z apptask: deleteContainer: deleting app containers (app, scheduler)
2026-10-05T03:00:48Z services: setupAddons: setting up addon scheduler with options {"update_feeds":{"schedule":"0 3 * * *", ...}}
</code></pre>
<p dir="auto">The package runs <code>firefly-iii:cron</code> at <code>0 3 * * *</code>. The auto-update started in the same minute and recreated the scheduler container, so the 03:00 run never happened. There is no <code>==&gt; cron</code> line for that night. The night before, the cron ran normally at 03:00:22.</p>
<p dir="auto"><strong>Why this matters: Firefly does not catch up</strong></p>
<ul>
<li><code>CreateRecurringTransactions::handleOccurrence()</code> only creates transactions whose date equals the cron's date (<code>if ($date-&gt;ne($this-&gt;date)) { return null; }</code>). A missed day is not caught up by the next nightly run.</li>
<li><code>RecurringCronjob::fire()</code> skips the run if the last run was less than 12 hours ago (<code>$diff &lt;= 43_200</code>). So if you notice the problem in the afternoon and run the cron by hand, the next nightly run at 03:00 skips recurring transactions as well.</li>
</ul>
<p dir="auto">I only noticed because of the 36-hour warning. That warning is only visible from about 15:00 until the next night's run, so a missed run is easy to overlook.</p>
<p dir="auto"><strong>Workaround</strong></p>
<ul>
<li>Set Cloudron's auto-update time to anything other than 03:00 (System time zone is UTC here; I use 01:00).</li>
<li>To catch up a missed day (owner account only, because <code>--force</code> requires the owner role):<pre><code>sudo -u www-data -E php /app/code/artisan firefly-iii:cron --force --create-recurring --date=YYYY-MM-DD
</code></pre>
</li>
</ul>
<p dir="auto"><strong>Suggestions for the package</strong></p>
<ol>
<li>Run the cron at a time that doesn't overlap with Cloudron's update windows, or</li>
<li>after an update or restart, run the cron once if the last run is more than 24 hours old.</li>
</ol>
<p dir="auto">A minor one: the Cloudron health check hits <code>/health</code> every 10 seconds without the <code>X-Remote-User</code> header, and Firefly logs <code>local.ERROR: No user in header "X-Remote-User"</code> each time. That's about 8,600 error lines per day, which buries real errors in the log.</p>
<p dir="auto">Setup: Firefly III 6.7.7, 4 user accounts (only one in active use), proxy auth via Cloudron.</p>
<p dir="auto">Thanks!</p>
]]></description><link>https://forum.cloudron.io/topic/16073/nightly-cron-possibly-skipped-when-an-auto-update-runs-at-03-00</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 22:37:55 GMT</lastBuildDate><atom:link href="https://forum.cloudron.io/topic/16073.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 05 Oct 2026 19:29:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nightly cron possibly skipped when an auto-update runs at 03:00 on Tue, 06 Oct 2026 10:58:02 GMT]]></title><description><![CDATA[<p dir="auto">Maybe worth to mention in the firefly-iii doc or even the app overview after installing that the default is 3:00 UTC for recurring transactions to be created</p>
]]></description><link>https://forum.cloudron.io/post/130543</link><guid isPermaLink="true">https://forum.cloudron.io/post/130543</guid><dc:creator><![CDATA[nottheend]]></dc:creator><pubDate>Tue, 06 Oct 2026 10:58:02 GMT</pubDate></item><item><title><![CDATA[Reply to Nightly cron possibly skipped when an auto-update runs at 03:00 on Tue, 06 Oct 2026 09:26:47 GMT]]></title><description><![CDATA[<p dir="auto">Hello <a class="plugin-mentions-user plugin-mentions-a" href="/user/nottheend" aria-label="Profile: nottheend">@<bdi>nottheend</bdi></a></p>
<p dir="auto">This depends on the user running Cloudron since it can be configured to what ever the user wants.<br />
But the default is <code>0 1,3,5,23 * * *</code>, daily at 23:00, 01:00, 03:00 and 05:00.<br />
So yes it could hit the default of 03:00 but only if an app update for the app is applied at this time.</p>
]]></description><link>https://forum.cloudron.io/post/130535</link><guid isPermaLink="true">https://forum.cloudron.io/post/130535</guid><dc:creator><![CDATA[james]]></dc:creator><pubDate>Tue, 06 Oct 2026 09:26:47 GMT</pubDate></item><item><title><![CDATA[Reply to Nightly cron possibly skipped when an auto-update runs at 03:00 on Tue, 06 Oct 2026 08:58:24 GMT]]></title><description><![CDATA[<p dir="auto">Just for me to understand:<br />
the defaults of the cron to run scheduled transactions in firefly does not overlap with the update times of apps in cloudron?</p>
]]></description><link>https://forum.cloudron.io/post/130532</link><guid isPermaLink="true">https://forum.cloudron.io/post/130532</guid><dc:creator><![CDATA[nottheend]]></dc:creator><pubDate>Tue, 06 Oct 2026 08:58:24 GMT</pubDate></item><item><title><![CDATA[Reply to Nightly cron possibly skipped when an auto-update runs at 03:00 on Tue, 06 Oct 2026 08:09:56 GMT]]></title><description><![CDATA[<p dir="auto">Hello <a class="plugin-mentions-user plugin-mentions-a" href="/user/nottheend" aria-label="Profile: nottheend">@<bdi>nottheend</bdi></a></p>
<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/nottheend" aria-label="Profile: nottheend">@<bdi>nottheend</bdi></a> <a href="/post/130497">said</a>:</p>
<p dir="auto">after an update or restart, run the cron once if the last run is more than 24 hours old</p>
</blockquote>
<p dir="auto">I think this is the better way to approach this issue.<br />
Changing the CRON to something else can still hit other people since it is variable</p>
<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/nottheend" aria-label="Profile: nottheend">@<bdi>nottheend</bdi></a> <a href="/post/130497">said</a>:</p>
<p dir="auto">8,600 error lines per day, which buries real errors in the log</p>
</blockquote>
<p dir="auto">Will have to understand first how it is expected so no log entry is generated.</p>
]]></description><link>https://forum.cloudron.io/post/130527</link><guid isPermaLink="true">https://forum.cloudron.io/post/130527</guid><dc:creator><![CDATA[james]]></dc:creator><pubDate>Tue, 06 Oct 2026 08:09:56 GMT</pubDate></item></channel></rss>