Repository navigation
CURA-13217 improve engine communication - #1067
Open
Erwan MATHIEU (wawanbreton) wants to merge 25 commits into
Open
Erwan MATHIEU (wawanbreton) wants to merge 25 commits into
Erwan MATHIEU (wawanbreton) wants to merge 25 commits into
Conversation
…ove-engine-communication' into CURA-13217_improve-engine-communication
CURA-13217
…ove-engine-communication' into CURA-13217_improve-engine-communication
CURA-13217
…ove-engine-communication' into CURA-13217_improve-engine-communication
CURA-13217
CURA-13217
CURA-13217
Contributor
Test Results2 403 tests 2 388 ✅ 16s ⏱️ Results for commit 8f1c447. ♻️ This comment has been updated with latest results. |
CURA-13217
CURA-13217
CURA-13217
CURA-13217
This was referenced Nov 6, 2026
CURA-13217
CURA-13217
CURA-13217
CURA-13217
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved backend regressions can crash engine-command lookup, silently discard accepted messages, and let overlapping streams corrupt each other’s connection state.
5 open issues
What changed in this PR
This PR migrates Uranium’s backend communication from Arcus to gRPC, supporting the coordinated Cura and CuraEngine changes for streaming large slicing workloads with less latency and memory use.
Changes:
- Introduces a gRPC server with queued outgoing messages and concurrent incoming-message handling.
- Updates backend startup, shutdown, and message dispatch for gRPC.
- Replaces Arcus dependencies and adapts backend tests.
| File | Description |
|---|---|
UM/Backend/SignalSocket.py |
Removes the Arcus socket wrapper. |
UM/Backend/GrpcBackendServer.py |
Adds gRPC streaming, message queues, and lifecycle handling. |
UM/Backend/Backend.py |
Integrates gRPC communication and updates engine startup. |
tests/TestBackend.py |
Adapts backend tests and adds streaming and queue checks. |
plugins/Tools/CameraTool/tests/TestCameraTool.py |
Removes the Arcus import workaround. |
conanfile.py |
Removes the Arcus shared-library option. |
conandata.yml |
Replaces Arcus with gRPC and Protobuf dependencies and generation tools. |
Review effort: Balanced
CURA-13217 Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
CURA-13217
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


This PR provides a few changes that improve the communication between Cura front-end and CuraEngine, to make sure that we can send large objects and/or build plates without crashes or visible latency:
libArcus/pyArcusbyasio-grpc/grpcioasio-grpcis already a dependency of CuraEngine for the communication with the pluginsSlicemessage sent to the engine into multiple messages sent in a rowIn practice, this seems to significantly reduce the time spent in the front-end to generate and send the slicing data. When using the dragon cup model, I went from ~25s with the UI frozen to not noticeable. I could also send a build plate containing 50 of them without issues.
Requires Ultimaker/Cura#21892
Requires Ultimaker/CuraEngine#2418
CURA-13217