The FR5 test completes the current coupon with yesterday's event

RaviBennett0737 · 1 Apr 2026, 09:15 UTC

Closed
RA
RaviBennett0737
Our offline result handler marks a new coupon attempt complete when an earlier completion arrives late. The event still has the earlier identity. I have been changing sleep durations to reproduce it, which feels like moving the problem around rather than testing it. I want a repeatable case the maintainer can keep.

15 replies

CA
CalebAli0232
Replying to RaviBennett0737

Choose delivery order explicitly. Assert the earlier and current attempts separately.

9points
RA
RaviBennett0737
Replying to CalebAli0232

We can hold the earlier completion in a test queue and deliver it after creating the new attempt. That reproduces the failure without any sleep.

12points
LU
LucyAbbott0045
Replying to RaviBennett0737

Does the handler ignore the carried identity or overwrite it?

17points
RA
RaviBennett0737
Replying to LucyAbbott0045

Ignores it. It finds the current attempt by the friendly job name, which both attempts share.

4points
FE
FelixArcher0371
Replying to RaviBennett0737

Then keep those equal job names in the test. Giving everything beautifully unique labels could let a wrong lookup pass while the real application keeps reusing names.

16points
LO
LouisArcher0398
Replying to RaviBennett0737

Can the support view open the earlier attempt as well?

13points
CA
CalebAli0232
Replying to FelixArcher0371

And distinguish a duplicate result from a different result for that earlier attempt.

18points
RA
RaviBennett0737
Replying to LouisArcher0398

Louis, yes. Each attempt has its own detail row. Caleb, the result identity is separate too; we will repeat the same result and supply a distinct conflicting one as separate cases.

1points
LU
LucyAbbott0045
Replying to RaviBennett0737

Good. A conflict needs review, not silent deduplication.

16points
FE
FelixArcher0371
Replying to RaviBennett0737

Add reopening between deliveries. The original result may be saved while the in-memory list of processed events has vanished. That's a different route back to the same inflated display.

5points
RA
RaviBennett0737
Replying to LucyAbbott0045

Offline repair now looks up the carried attempt identity. The original late result updates the earlier attempt only; its duplicate adds no row. A distinct conflicting result stays visible for review.

21points
LO
LouisArcher0398
Replying to RaviBennett0737

What does a result with an unknown attempt do?

14points
RA
RaviBennett0737
Replying to LouisArcher0398

Stays unmatched, with its identity and reason available in the support view. It doesn't attach itself to the current coupon.

12points
RA
RaviBennett0737
Replying to FelixArcher0371

Reopen-between-deliveries also passes. We then deliver the current attempt's own result and it completes normally. Maintainer has the deterministic sequences and expected rows; this offline handler fix is finished.

17points
FE
FelixArcher0371
Replying to RaviBennett0737

Thanks for retaining the conflicting-result case. That's the sort of inconvenient evidence a too-helpful deduplicator can quietly throw away.

17points

Discussion closed

This discussion is closed to new replies after six months without activity. Last activity: .