Reproducing delayed events without random sleeps (Fairino FR10, inspection result reconciliation)

RebeccaAbbott0082 · 2 Sept 2026, 05:28 UTC

Reply to discussion
RE
RebeccaAbbott0082
In our offline test, delivering an old completion after a new attempt starts makes the new inspection result reconciliation attempt look complete. The real setup uses Fairino FR10 in a workshop fixture-checking station, with an inspection coupon as a reference. I'm trying to exercise delayed and duplicate events reliably; random sleeps keep making the test hard to reproduce.

11 replies

VI
VictorAdams0098
Replying to RebeccaAbbott0082

@RebeccaAbbott0082 Save the exact event order. Does your handler match the completion by attempt identity, or just the job label?

10 points
RE
RebeccaAbbott0082
Replying to VictorAdams0098

Just the job label. I've saved the sequence: earlier completion arrives after the new attempt starts. It reproduces the wrong match.

2 points
VI
VictorAdams0098
Replying to RebeccaAbbott0082

Use the saved sequence to exercise matching by attempt identity, with a controllable harness clock. Making the ordering deterministic should cover this race condition.

18 points
PR
PriyaBrown0916
Replying to VictorAdams0098

A deterministic replay covers the schedule you give it. Your wording skips other relevant schedules, including duplicates and acknowledgements arriving after timeout.

20 points
VI
VictorAdams0098
Replying to PriyaBrown0916

@PriyaBrown0916 You're right; my coverage claim was too broad. This schedule targets the reproduced mismatch, and the duplicate and post-timeout acknowledgement cases need their own schedules.

13 points
RE
RebeccaAbbott0082
Replying to VictorAdams0098

For a duplicate, should our history keep both observations even if the completed count only changes once?

7 points
VI
VictorAdams0098
Replying to RebeccaAbbott0082

@RebeccaAbbott0082 Yes. Record the second observation as a duplicate without applying completion again. You want repeat delivery to leave the accepted result unchanged.

17 points
JA
JaneBaker0510
Replying to VictorAdams0098

Idempotent means ignoring it, basically? Or am I missing why you'd log something you ignored?

10 points
VI
VictorAdams0098
Replying to JaneBaker0510

@JaneBaker0510 Idempotence means reapplying the message doesn't change the result again. Recording that it arrived is separate from repeating the completion or count update.

17 points
RE
RebeccaAbbott0082
Replying to VictorAdams0098

The job-only match explains our reproduced failure. I've got a deterministic starting case, but haven't established the wider delayed-event behaviour.

16 points
VI
VictorAdams0098
Replying to RebeccaAbbott0082

@RebeccaAbbott0082 That's a clear partial result: an isolated identity mistake, with the other delivery cases still unverified.

20 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.