You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add retry mechanism for payload envelope DB persistence #9072
In persistPayloadEnvelopeInput(), a DB write failure causes the in-memory PayloadEnvelopeInput to be pruned via .finally(), losing data from both DB and memory with no recovery path. This is the same pattern as persistBlockInput().
Current behavior
awaitwritePayloadEnvelopeInputToDb.call(this,payloadInput).catch((e)=>{this.logger.error("Error persisting payload envelope in hot db",{...},e);}).finally(()=>{this.seenPayloadEnvelopeInput.prune(payloadInput.blockRootHex);// ...});
On a transient DB error (disk full, I/O timeout), .catch() logs the error but .finally() still prunes the in-memory data. The envelope is now gone from both DB and memory — irrecoverable.
Proposed fix
Only prune on success (move prune from .finally() to .then())
Add a retry mechanism for transient failures (exponential backoff, bounded retries)
Apply the same fix to persistBlockInput() which has the identical pattern
changed the title [-]EPBS: add retry mechanism for payload envelope DB persistence[/-][+]Add retry mechanism for payload envelope DB persistence[/+]on Mar 20, 2026
Activity
[-]EPBS: add retry mechanism for payload envelope DB persistence[/-][+]Add retry mechanism for payload envelope DB persistence[/+]