Skip to content

Robot load reported success when it actually failed #1950

@rtuck99

Description

@rtuck99

During a run on i03, the robot load reported success but failed to load the pin, although the collection did subseqently fail for another reason.

Go to https://ispyb.diamond.ac.uk/dc/visit/in44255-4 page 14
11:25:09 Robot load C3_plateS6_F4_1, except there was an error (omega not at zero) so the same pin remains

The robot reported
[Sat Feb 28 11:25:22 2026]Program error #9: Sample Position not ready

So 1.5.16 does have changes to the robot load code. When doing the robot load, we trigger the robot, then if beamline-disabled (ROBOT_OP_16_BITS.B8) reports enabled (0) first we wait for it to become 1, otherwise we wait for it to become 0. Each time we wait we check for the first of whichever

  • beamline_disabled to reach the desired value
    error_code to not be 0

I think this could be a source of a race condition - if error code reports after beamline disabled then we cancel the error code checking task and don't check the final value. This is possible if for whatever reason the wait_for_value doesn't get scheduled soon enough and if the robot updates both values at nearly the same time.

There is a second chance at a save if the problem leads to a timeout, in which case we do check the error code at the end, but if it didn't timeout and the race condition occurred because the error was detected before the timeout then we won't spot this.

Whilst the code is different, the changes have been only minor and I think the same basic bug exists in 1.5.9

I think it would be possible to hotfix this relatively easily if you would like

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions