Skip to content

Retry-safe task submissions

Hubuum task-creation endpoints support Idempotency-Key. The console uses that contract for imports, exports, backup generation, stored-template execution, and remote-target invocation.

Browser retry leases

Before submitting an operation, the frontend derives a SHA-256 fingerprint from:

  • the operation kind;
  • the target identifier where applicable; and
  • a canonical JSON representation of the request payload.

The browser stores only that fingerprint, an opaque idempotency key, and its creation time in sessionStorage. The request payload is not stored. A retry of the same operation in the same tab reuses the key, including the case where the server accepted a task but the response was lost before the browser received it.

A successful 202 Accepted response completes and removes the retry lease, so a later intentional submission of the same payload creates a new task. An abandoned lease expires after 30 minutes. At most 64 leases are retained per tab. When browser storage is unavailable, the current page process keeps the same bounded retry state in memory.

Explicit keys

The import workspace retains its optional explicit idempotency-key field. A provided key seeds the same retry lease and remains subject to the server's 255-byte limit. If the UI generates a candidate key for an operation, an already-active lease for the same payload takes precedence so a repeated click does not accidentally replace the retry identity.

Scope

This mechanism protects creation of asynchronous tasks. It does not implement optimistic concurrency for resource updates. Revision and ETag handling belongs to the backend API contract and should be added separately when that contract is available.