# X_STORAGE_ALREADY_PROMOTED

## Means

the upload was already promoted onto its row

## Typical cause

promoteAttachment found the pending key gone and the attached key present: an earlier call moved these bytes, most often a confirm retried or sent twice. It used to answer the attached object as if this call had moved it, so a caller inserted a second row for it and the cleanup of that failed insert deleted the first row bytes

## Fix

`await disk.stat(meta.attachedKey)` answers the moved object: answer the row that references that key if one exists, write it with that key if none does, and never delete the key on a failure of your own

[Storage](/error-codes#storage)
