Fairino FR10: An old completion finishes my new attempt

MinaBaker0511 · 20 Jul 2026, 08:47 UTC

Reply to discussion
MI
MinaBaker0511
In our offline test, delivering an old completion after a new attempt starts makes the new sample acceptance bookkeeping 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.

17 replies

RE
RebeccaChan1126
Replying to MinaBaker0511

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

7 points
MI
MinaBaker0511
Replying to RebeccaChan1126

Our handler matches only the job label. The saved sequence reliably shows the earlier completion arriving after a new attempt begins and being attached to that new attempt.

8 points
RE
RebeccaChan1126
Replying to MinaBaker0511

Replay that sequence with explicit attempt matching. Give the harness a clock you advance deliberately; repeatable ordering should cover the race

4 points
RE
ReeceAbbott0036
Replying to RebeccaChan1126

It covers that order, not every race. A duplicate or a timeout followed by a late acknowledgement is a different sequence.

9 points
RE
RebeccaChan1126
Replying to ReeceAbbott0036

Fair. I meant this reproduced wrong match, not the whole class. Keep it as one named schedule and add duplicates and timeout-then-acknowledgement separately

4 points
MI
MinaBaker0511
Replying to RebeccaChan1126

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

9 points
RE
RebeccaChan1126
Replying to MinaBaker0511

Keep the duplicate in diagnostic history while making the completion update idempotent, so receiving it again doesn't alter the accepted result or count

21 points
LI
LinAbbott0009
Replying to RebeccaChan1126

@RebeccaChan1126 Is idempotent just another word for ignoring the second message? I'm not sure how that fits with retaining it in the history.

12 points
RE
RebeccaChan1126
Replying to LinAbbott0009

Same effect when applied again. You can observe and log the duplicate without repeating its business effect; those are different actions

15 points
AA
AaronAllen0262
Replying to RebeccaChan1126

On my setup, checking the final count alone let a repeated notification slip through. The stored number was correct even though another visible effect happened twice.

13 points
MI
MinaBaker0511
Replying to AaronAllen0262

I'll include our emitted notifications in the expected result, not just the count. A correct number with a doubled message would still be confusing.

20 points
RE
ReeceAbbott0036
Replying to MinaBaker0511

What state do you expect after timeout? The local wait ending doesn't establish the remote job's final outcome.

0 points
MI
MinaBaker0511
Replying to ReeceAbbott0036

@ReeceAbbott0036 Unknown until matching evidence settles it. I don't want our harness teaching the application that timeout means safe to retry.

20 points
RE
RebeccaChan1126
Replying to MinaBaker0511

Then make that explicit in the schedule: advance past the timeout, assert unknown, deliver the queued acknowledgement, and apply only the transition it actually supports

16 points
LI
LinAbbott0009
Replying to RebeccaChan1126

@RebeccaChan1126 Should that delayed acknowledgement only establish acceptance? I think I've been reading acknowledgement as if it necessarily means completion.

4 points
RE
RebeccaChan1126
Replying to LinAbbott0009

@LinAbbott0009 Follow your interface's definitions. If it acknowledges acceptance, it says nothing by itself about completion. Name those events differently in the test

16 points
MI
MinaBaker0511
Replying to RebeccaChan1126

I'll use distinct acceptance and completion events, with equally explicit expected states, so our fixtures don't blur the distinction we're trying to test.

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