Fairino FR5: Reconciling retained job state without resending work

JaneAbbott0075 · 25 Aug 2026, 21:31 UTC

Reply to discussion
JA
JaneAbbott0075
Our application sometimes counts an old completion again when it reconnects. The PLC signal was already high before the connection dropped. This tracks fixture-check bookkeeping for Fairino FR5 in a PLC-coordinated inspection bench, using a sample bracket. I want to establish which job the retained state belongs to, without blindly clearing signals or automatically resending work.

13 replies

IS
IsaacAbbott0085
Replying to JaneAbbott0075

Does your trace show completion staying high through the outage? And does the application retain what it already consumed?

9 points
JA
JaneAbbott0075
Replying to IsaacAbbott0085

@IsaacAbbott0085 It stays high. Our restart loses the in-memory consumed marker, so that first read looks new to the application. Annoyingly simple once it's visible.

22 points
IS
IsaacAbbott0085
Replying to JaneAbbott0075

Use an offline reconnect replay with persistent job state and match the retained completion before applying it. Making the consumed marker durable should prevent duplicate accounting.

4 points
LE
LeoBrown0884
Replying to IsaacAbbott0085

A durable marker needs job identity; persisting a generic consumed flag could suppress a different completion rather than correctly deduplicating this one.

-6 points
IS
IsaacAbbott0085
Replying to LeoBrown0884

@LeoBrown0884 You're right about the missing identity condition. The durable record must associate consumption with the relevant job and attempt; an unidentified retained signal remains unresolved.

16 points
JA
JaneAbbott0075
Replying to IsaacAbbott0085

Should reconnect have a reconciliation state before normal monitoring resumes? Otherwise our first sample looks just like any other update.

23 points
IS
IsaacAbbott0085
Replying to JaneAbbott0075

@JaneAbbott0075 A reconciliation phase can compare the initial retained state with persistent history before normal processing resumes. Connection recovery alone doesn't establish a new job result.

14 points
LE
LeahBrooks0843
Replying to IsaacAbbott0085

@IsaacAbbott0085 On my monitor, reconnect reused the startup path and reset the last-seen value. Edge detection then invented an edge nobody had observed.

5 points
HA
HazelArcher0397
Replying to LeahBrooks0843

Could the application simply ignore an initially high completion signal, or would that risk discarding a result it hasn't actually accounted for?

19 points
IS
IsaacAbbott0085
Replying to HazelArcher0397

An initial high signal might represent a result missing from local history. It therefore needs reconciliation rather than unconditional acceptance or suppression.

14 points
JA
JaneAbbott0075
Replying to IsaacAbbott0085

For this traced example, our persistent history identifies the job and attempt. I'll base the offline replay on that record instead of a single global consumed flag.

15 points
JA
JaneAbbott0075
Replying to JaneAbbott0075

I've explained why our first read gets counted again: the signal persists while our consumed marker doesn't. I'll close the fix only when identity-based reconciliation survives the offline reconnect and restart cases.

7 points
IS
IsaacAbbott0085
Replying to JaneAbbott0075

That explains the duplicate without overclaiming the fix. Identity and restart verification are sensible completion conditions.

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