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

RaviBennett0737 · 1 Apr 2026, 09:15 UTC

Reply to discussion
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.

9 points
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.

12 points
LU
LucyAbbott0045
Replying to RaviBennett0737

Does the handler ignore the carried identity or overwrite it?

17 points
RA
RaviBennett0737
Replying to LucyAbbott0045

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

4 points
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.

16 points
LO
LouisArcher0398
Replying to RaviBennett0737

Can the support view open the earlier attempt as well?

13 points
CA
CalebAli0232
Replying to FelixArcher0371

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

18 points
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.

1 points
LU
LucyAbbott0045
Replying to RaviBennett0737

Good. A conflict needs review, not silent deduplication.

16 points
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.

5 points
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.

21 points
LO
LouisArcher0398
Replying to RaviBennett0737

What does a result with an unknown attempt do?

14 points
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.

12 points
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.

17 points
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.

17 points

Add to the discussion

Welcome to Application Robot

Everyone can read the forum. Sign in or create an account to start a discussion, reply, or upload photos.

Forgot your password?

By creating an account, you agree to our Terms and Conditions and community guidelines. Read our Privacy Policy for how your information is handled.