Skip to content

Conversation

@CaseyBatten
Copy link
Contributor

@CaseyBatten CaseyBatten commented Dec 2, 2025

Overview

Covers RQA-4810

Originally the maintenance run didn't purposefully interface with the live stream at all. However because when a run finishes the livestream status is set to "Off" as part of post-run cleanup, maintenance runs were unintentionally disabling the live stream for an existing "encapsulating" run. For example, if a live stream was enabled and pulled up during run setup, and the client opens the pipette calibration flow, as soon as the maintenance run ends the live stream would also end, even though the primary run hadn't begun yet. This addresses that by ensuring we handle live stream creation and shutdown under maintenance runs the same way we do for real runs, and also when a maintenance run is deleted if an existing run is present it's camera settings will be used in a stream service update request.

Test Plan and Hands on Testing

  • Unit test coverage
  • Start a run setup on a Flex, open live stream and confirm it is visible.
  • Start pipette attach flow, and make sure the stream is still visible.
  • End the pipette attach flow, and make sure the primary stream for the run is still visible.
  • Finish the run and ensure the stream ends.

Changelog

Added live stream update coverage to maintenance run behavior.

Review requests

Risk assessment

Low - effects new stream behavior.

@CaseyBatten CaseyBatten requested a review from mjhuff December 2, 2025 20:50
Copy link
Contributor

@mjhuff mjhuff left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thank you!

):
# Check to see if the camera device is available
raw_device = str(contents["SOURCE"])[1:-1]
raw_device = str(contents["SOURCE"])
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just curious, why do we need to get rid of the slicing?

Copy link
Contributor Author

@CaseyBatten CaseyBatten Dec 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This raw_device name is used in the logging but isn't the one the service actually executes the ffmpeg command using, and when the oe-core env file was refactored the formatting for the ffmpeg source was refactored too. It doesn't have some of the baked in parser characters we had before.

)
if (
state_summary is not None
and state_summary.status is not EngineStatus.FINISHING
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any reason we need this specific condition?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This prevents us from restarting the stream when we're exiting out of something like drop tip wizard.

@CaseyBatten CaseyBatten merged commit 3b14305 into chore_release-8.8.0 Dec 2, 2025
54 checks passed
@CaseyBatten CaseyBatten deleted the maintenance_run_livestream branch December 2, 2025 21:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants