Aglet

How to investigate duplicate processing across retries and concurrency

A duplicate-processing investigation follows one logical operation across every way it can be attempted again. Trace identity, concurrency, retries, commit and acknowledgment boundaries, and resulting effects. Test a controlled overlap or replay while preserving the operation's intended single outcome for comparison.

Build a useful investigation brief

  1. Align attempts and effect boundaries

    Map request or event receipt, deduplication lookup, lock or uniqueness check, handler start, local transaction, external effect, commit, acknowledgment, timeout, retry, and final records. Compare stable operation and effect identifiers. Record any external effect that cannot be correlated instead of assuming it was skipped.

  2. Reproduce concurrent or repeated attempts

    Run two attempts with the same logical identity, one delayed or retried at the relevant boundary, in a controlled environment. Compare interleaving, locks, uniqueness decisions, commits, responses, and final state. Keep distinct logical operations in the same test to ensure deduplication is not too broad.

  3. Test one single-effect correction

    Evaluate one change such as a scoped idempotency key, database uniqueness constraint, atomic claim, or safe effect ordering. Replay concurrency, timeout, retry, and distinct-operation cases. Inspect final identifiers, values, audit history, response semantics, and recoverability before calling duplicates resolved.

What to carry forward

Deliver an evidence-backed brief with logical identity, attempt interleaving, first duplicate boundary, tested correction, distinct-operation comparison, and uncertainty. Investigation is complete when implementation can target one single-effect boundary and verification can prove both deduplication and allowed repetition.

Keep the decision with the work.

Use a Work Item in Aglet to record the problem, the evidence you have, and the next decision. Add an owner and priority, then keep updates in the discussion so the next person can follow the reasoning.

Create an account See the product workflow