Aglet

How to diagnose duplicate processing by logical operation

Duplicate processing is about one logical operation producing more than one effect, even when the attempts have different technical identifiers. This triage guide identifies the operation key, maps all attempts and effects, and compares it with a single successful execution.

Establish what is happening

  1. Define the logical operation identity

    Record the public operation or event identifier, input shape, actor or workflow, attempt identifiers, start and completion times, retry or replay reason, and final records. Link effects by stable business identity and redact sensitive values. Distinguish intentional repeated actions from accidental duplicates.

  2. Map attempts to each effect

    Align request or event receipt, queue claim, handler start, transaction, external call, commit, response, retry, and final state. Count effects by stable identifier and compare values and timestamps. Mark effects with unclear ownership instead of assuming the first or last attempt was correct.

  3. Compare with a single execution

    Use the same route, input structure, account or dataset class, and expected effect in a controlled single-attempt case. Compare keys, uniqueness checks, transaction boundaries, and final records. Note whether duplicates require concurrency, timeout, replay, or a plain repeated submission.

What to carry forward

Return a scope statement naming the logical operation, duplicate trigger, effect boundary, affected state, and uncertainty. Route the next work to idempotency, concurrency, replay handling, or client behavior. Stop when one controlled comparison can distinguish intentional repetition from duplicate processing.

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