Conversation
|
This would need a matching change in GDA (back-ported to 9.38?) to add the result type to TaskStatus here. |
|
Ignoring the GDA change, I think the blueapi side of this is workable |
|
Change in gerrit: https://gerrit.diamond.ac.uk/c/gda/gda-core/+/44673 |
DominicOram
left a comment
There was a problem hiding this comment.
Looks good, thanks. Should: it would be nice to add some tests on the case where the plan is actually returning something, ideally parametrized against a few different return types.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #1357 +/- ##
==========================================
- Coverage 95.03% 95.01% -0.02%
==========================================
Files 43 43
Lines 2779 2829 +50
==========================================
+ Hits 2641 2688 +47
- Misses 138 141 +3 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
73dcfee to
6a697c4
Compare
|
Putting this back to draft so #1312 can be included in the result |
Use pydantic to convert result to something that can be JSON serialized later.
Allow callers to access both return values and exceptions raised by plans.
dan-fernandes
left a comment
There was a problem hiding this comment.
Minor changes / questions, everything else looks reasonable 👍
|
Good spot on the unused loggers - they were left from an earlier iteration. Thanks |
The
TaskStatusincluded in eachWorkerEventnow contains aresultfield that will be populated when the plan is complete. This can be
either a
TaskResultthat contains a serialized representation of thereturn value from a plan that succeeded, or a
TaskErrorcontaining theException type and message raised by a plan that failed.
The existing
task_completeandtask_failedflags have been left forbackwards compatibility but are now redundant and may be removed in a
future version.
Error reporting in WorkerEvents is left unchanged for now but may also
change in future as plan errors are included in the worker error list
making it unclear where an error occurred.
The new outcome states in the returned
TaskStatusallows betterfeedback in the CLI and errors/return values are included in the output.
The BlueapiClient run_task method now returns only the TaskStatus as it
now contains all relevant information about the plan. A plan failing
will now not raise an exception with exceptions being raised only in the
case of the communication errors or internal server errors. Users of the
client should check if plans were successful.