<?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[Large app backup (~70GB) fails at rotate-copy step with `NoSuchKey` — IONOS S3 read-after-write consistency, but Cloudron has no retry]]></title><description><![CDATA[<p dir="auto"><strong>Cloudron version:</strong> 10.0.4<br />
<strong>Backup storage:</strong> IONOS S3-compatible Object Storage</p>
<p dir="auto"><strong>Symptom:</strong><br />
The backup upload itself completes successfully, but the immediately following server-side rotate-copy (<code>UploadPartCopy</code>) fails with <code>NoSuchKey</code>, causing the whole backup task to fail with <code>Old backup not found: snapshot/app_&lt;id&gt;.tar.gz.enc</code>. Reproduced on two consecutive daily runs, always on our largest app (~70GB snapshot); other apps (4–70GB) in the same runs succeed.</p>
<p dir="auto"><strong>Timeline (Task 11372, millisecond precision):</strong></p>
<pre><code>04:32:30.199  upload stats logged: 72,608,517,172 bytes transferred
04:32:30.285  backupupload: upload completed. error: null   (CompleteMultipartUpload -&gt; 200 OK)
04:32:30.466  Copying (multipart) snapshot/app_c08ad55d-...tar.gz.enc   (rotate-copy starts, 181ms later)
04:32:30.534  Copying part 1 - ... bytes=0-1073741823
04:32:30.535  Copying part 2 - ... bytes=1073741824-2147483647
04:32:30.535  Copying part 3 - ... bytes=2147483648-3221225471
04:32:30.680  Aborting multipart copy   (145ms after part requests)
04:32:30.748  storage/s3: copy error: NoSuchKey: UnknownError
04:32:30.748  copy to .../app_registry.20zen.de_v1.13.0.tar.gz.enc errored. error: Old backup not found
</code></pre>
<p dir="auto"><strong>Analysis:</strong><br />
<code>CompleteMultipartUpload</code> returns success at .285, but the immediately following <code>UploadPartCopy</code> on the exact same key returns <code>NoSuchKey</code> ~150ms later. This looks like a read-after-write consistency delay on the IONOS backend for very large multipart objects — AWS S3 itself has guaranteed strict read-after-write consistency (including for multipart uploads) since Dec 2020, so this is non-standard behavior on the storage backend side.</p>
<p dir="auto">That said, Cloudron's rotate-copy step (<code>s3.js: copyInternal</code>) has no resilience for this: no retry, no backoff, no existence check before issuing the copy. A single transient 404 immediately fails the whole backup task, even though a short retry would very likely succeed.</p>
<p dir="auto"><strong>Request:</strong> Could a short retry/backoff (or a <code>HeadObject</code> check before copying) be added around the rotate-copy step for large/multipart-uploaded objects, to tolerate brief backend propagation delays on non-AWS S3-compatible providers?</p>
<p dir="auto">(I will also open a ticket at IONOS, but this little improvement would make Cloudron Backups more stable for similar situations with other providers too.)</p>
<p dir="auto"><strong>Relevant stack:</strong></p>
<pre><code>BoxError: Old backup not found: snapshot/app_c08ad55d-2629-4de5-9d8c-adc28c142aca.tar.gz.enc
    at throwError (file:///home/yellowtent/box/src/storage/s3.js:568:49)
    at copyInternal (file:///home/yellowtent/box/src/storage/s3.js:636:16)
    at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
    at async Object.copy (file:///home/yellowtent/box/src/storage/s3.js:670:12)
    at async Object.copy (file:///home/yellowtent/box/src/backupformat/tgz.js:294:5)
</code></pre>
<p dir="auto">related:<br />
<a href="https://forum.cloudron.io/topic/14253/error-400-in-backup-process-with-ionos-s3-object-storage/38?_=1788503267379">https://forum.cloudron.io/topic/14253/error-400-in-backup-process-with-ionos-s3-object-storage/38?_=1788503267379</a></p>
]]></description><link>https://forum.cloudron.io/topic/15914/large-app-backup-70gb-fails-at-rotate-copy-step-with-nosuchkey-ionos-s3-read-after-write-consistency-but-cloudron-has-no-retry</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 14:16:09 GMT</lastBuildDate><atom:link href="https://forum.cloudron.io/topic/15914.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Sep 2026 06:28:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Large app backup (~70GB) fails at rotate-copy step with `NoSuchKey` — IONOS S3 read-after-write consistency, but Cloudron has no retry on Sat, 05 Sep 2026 13:43:34 GMT]]></title><description><![CDATA[<p dir="auto">IONOS responded this:</p>
<p dir="auto">"We are actively investigating the reported behavior. To support our Cloud Engineering team in conducting deeper log analysis within the storage cluster, we kindly request that you provide the following details:</p>
<ul>
<li>Target bucket name &amp; IONOS S3 endpoint used during testing</li>
<li>Request IDs (x-amz-request-id and x-amz-id-2 from the HTTP response headers) for both the CompleteMultipartUpload and the failed UploadPartCopy call</li>
<li>Timestamps and timezone of the affected runs (or new, millisecond-precision logs if the error can be reproduced again)</li>
</ul>
<p dir="auto">While our Engineering team investigates the merging and propagation behavior for large multipart objects in the backend, we recommend testing one of the following client-side workarounds:</p>
<ol>
<li>
<p dir="auto">HeadObject polling with exponential backoff: Before executing UploadPartCopy on newly merged objects larger than 50 GB, insert a short polling loop using HeadObject (with retries on NoSuchKey / 404 Not Found), combined with exponential backoff and jitter. This ensures object metadata is globally visible across all gateway nodes before dependent copy operations are performed.</p>
</li>
<li>
<p dir="auto">Insert a fixed delay: If implementing a polling mechanism in your Cloudron workflow is not straightforward, inserting a static delay of 1–2 seconds between CompleteMultipartUpload and subsequent copy actions can effectively prevent this race condition issue.</p>
</li>
</ol>
<p dir="auto">Please let us know whether applying one of these workarounds resolves the issue in your backup runs, and feel free to send us the requested logs once they are available."</p>
<p dir="auto">I'm not sure if I can get the x-amz-request-id and x-amz-id-2 headers for them.<br />
What do you think about their suggestions?</p>
]]></description><link>https://forum.cloudron.io/post/129065</link><guid isPermaLink="true">https://forum.cloudron.io/post/129065</guid><dc:creator><![CDATA[dsp76]]></dc:creator><pubDate>Sat, 05 Sep 2026 13:43:34 GMT</pubDate></item></channel></rss>