-
Notifications
You must be signed in to change notification settings - Fork 178
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bug: Update from 4.3.1 -> 4.4.0 adds ThreadManagerException to software #7959
Comments
Sorry that you've run into this. We are currently in a long holiday weekend, but can put time into this next week. A couple questions:
|
Hey @amitlissack meant to run this today, but was taking a long holiday weekend in the other direction. Will test (2) early tomorrow morning. I do not get the same issue when running in a simulator. |
I probably can confirm the issue from another perspective. I'm currently using jupyter notebooks to implement custom remote control, similar as how it is described in the documentation section regarding jupyter notebooks. We use a gen 2 temperature module and since the latest update we are unable to obtain a protocol context through the get_protocol_api method. It fails with the same error mentioned in the initial post but in addition I have a stack trace regarding the temperature module communication:
The assertion error is triggered due to the temperature module's lock not being available / initialized. However, control and access of the module using the opentrons app is working. With the module being powered off, I'm able to obtain a ProtocolContext and control the robot. @amitlissack, do you have any additional modules connected to your test setup? Info: Jupyter Cell:
|
@d-raith thanks for all that info. I am looking into the issue and find this quite perplexing. By any chance is the environment variable |
I've already downgraded the system to 4.3.1 in order to continue development. The variable is not set in this configuration and it's probably the same for 4.4.0 as long as the default behavior didn't change with the update as we do not make use of it in our code. |
@d-raith Can you verify that you have only have one tempdeck connected? |
@amitlissack Yes, there is only one temp deck connected. |
I have a temp deck connected as well. I can disconnect it and try again |
If you stop the opentrons robot server on the raspberry pi with |
Following up on behalf of @Koeng101 (same lab):
|
We have been able to reproduce the problem in our lab. We will update you all when we know more. |
@Laura-Danielle Great to know this is fixed! Will there be an update release soon to fix this bug? Thanks |
Hey @Koeng101, we will be doing our next release around the end of July. |
Glad to hear that the issue has been resolved, looking forward to the release. |
4.3.1 -> 4.4.0
Overview
I currently am maintaining the software package opentronsfastapi (https://github.com/Koeng101/opentronsfastapi) which allows you to easily build fastapis that run on opentrons themselves. Basically, integrating opentrons with other hardware is way too clunky currently, so we've build software to present the opentrons as a REST server that you can pass parameters to (NOT passing python scripts).
The last update, 4.4.0, has caused our software to stop working, as the following exception is raised when run on real opentrons hardware:
The machine appears to get upset at this line - https://github.com/Koeng101/opentronsfastapi/blob/5cbed98c755123051887f38f1966a185664c8b2d/opentronsfastapi/__init__.py#L198 where I establish a new context to be used.
This new code was added by @ahiuchingau in 475ee25 on (475ee25#diff-daa3772563c5ebc4de4a12da9e046e1612d382a5b7adcf6d1b0eb8a841304b64 , great commit message btw).
For context in opentronsfastapi - we basically have a global lock mechanism for protocols that are currently running using an SQLite server (that also acts as an activity log). I know that opentrons has a local lock built into the software, but it isn't very easy to hook that onto data to, say, tell a user which protocol is currently running, while maintaining a historical log of the activity.
Once the protocol gets a lock, it simulates the protocol (this works just fine). It then gets a protocol context, passes this into a thread that runs the protocol itself, and returns to the user a confirmation that the protocol has begun, along with a process ID and a version hash for the protocol's function. The step of
get_protocol_api
is what is failing here.Any ideas of how I can fix this? I'm not too familiar with the low-downs of how this is implemented or ways I could get around it. Thanks!
Steps to reproduce
You can run our example app on a real machine to raise this error.
Current behavior
Currently, I get the above error.
Expected behavior
I expect to be able to use this ctx in our software.
The text was updated successfully, but these errors were encountered: