Skip to content

[cuegui/cuebot] Fix UI freeze on gRPC connection drops and add job unavailable notification#2143

Merged
ramonfigueiredo merged 9 commits intoAcademySoftwareFoundation:masterfrom
ramonfigueiredo:fix/cuegui-grpc-connection-drop-handling
Jan 17, 2026
Merged

[cuegui/cuebot] Fix UI freeze on gRPC connection drops and add job unavailable notification#2143
ramonfigueiredo merged 9 commits intoAcademySoftwareFoundation:masterfrom
ramonfigueiredo:fix/cuegui-grpc-connection-drop-handling

Conversation

@ramonfigueiredo
Copy link
Copy Markdown
Collaborator

@ramonfigueiredo ramonfigueiredo commented Jan 9, 2026

Link the Issue(s) this Pull Request is related to.

Summarize your change.

Cuebot:

  • Update ManageJob.java to return NOT_FOUND status code instead of INTERNAL
    when job data is not found in the database

CueGUI:

  • Add gRPC error handling for NOT_FOUND, CANCELLED, and UNAVAILABLE status codes in FrameMonitorTree, LayerMonitorTree, and JobMonitorGraph
  • Add null checks in AbstractGraphWidget.handleSelectObjects() to prevent AttributeError when selecting nodes that no longer exist
  • Add job_not_found signal to CueGuiApplication for cross-widget communication
  • Add batch notification system in JobMonitorTree:
  • Group multiple job unavailable notifications within 500ms into single dialog
  • Use scrollable dialog for large numbers of jobs
  • Auto-remove unavailable jobs from the monitor list
  • Prevent removed jobs from being re-added during update cycles
  • Verify finished jobs still exist during background updates

…le notification

- Add null checks in AbstractGraphWidget.handleSelectObjects() to prevent AttributeError when selecting nodes that no longer exist in the graph
- Add gRPC error handling in LayerMonitorTree._getUpdate() for NOT_FOUND, INTERNAL, CANCELLED, and UNAVAILABLE status codes
- Add gRPC error handling in JobMonitorGraph.createGraph(), update(), and setupNodeConnections() methods with proper null checks
- Add gRPC error handling in FrameMonitorTree._getUpdate() and _getUpdateChanged() for job not found scenarios
- Add job_not_found signal to CueGuiApplication for cross-widget communication
- Add popup notification in JobMonitorTree when a job has been moved to historical data and is no longer accessible
- Auto-remove unavailable jobs from the monitor list
@ramonfigueiredo ramonfigueiredo force-pushed the fix/cuegui-grpc-connection-drop-handling branch from eebeac8 to 7fcf764 Compare January 9, 2026 01:59
@ramonfigueiredo ramonfigueiredo marked this pull request as ready for review January 9, 2026 02:12
@ramonfigueiredo
Copy link
Copy Markdown
Collaborator Author

@DiegoTavares / @lithorus
Ready for review!

Comment thread cuegui/cuegui/FrameMonitorTree.py Outdated
Comment thread cuegui/cuegui/FrameMonitorTree.py
Comment thread cuegui/cuegui/JobMonitorGraph.py Outdated
… errors

Update INTERNAL error handling to check for "Failed to find job data" message before treating it as a job-not-found scenario. Other INTERNAL
errors are now logged without incorrectly triggering job unavailable notifications.
@ramonfigueiredo ramonfigueiredo force-pushed the fix/cuegui-grpc-connection-drop-handling branch from 697bc6b to 721262f Compare January 16, 2026 20:17
@ramonfigueiredo ramonfigueiredo changed the title [cuegui] Fix UI freeze on gRPC connection drops and add job unavailable notification [cuegui/cuebot] Fix UI freeze on gRPC connection drops and add job unavailable notification Jan 16, 2026
@ramonfigueiredo ramonfigueiredo marked this pull request as draft January 16, 2026 20:37
…data

Cuebot:
- Update ManageJob.java to return NOT_FOUND status code instead of INTERNAL when job data is not found in the database

CueGui:
- Simplify gRPC error handling by removing INTERNAL error checks for job-not-found scenarios since server now returns NOT_FOUND
- Files updated: FrameMonitorTree.py, LayerMonitorTree.py, JobMonitorGraph.py
@ramonfigueiredo ramonfigueiredo force-pushed the fix/cuegui-grpc-connection-drop-handling branch from 2979df2 to 0e6b1ae Compare January 16, 2026 20:48
@ramonfigueiredo ramonfigueiredo self-assigned this Jan 16, 2026
@ramonfigueiredo ramonfigueiredo marked this pull request as ready for review January 16, 2026 21:00
Comment thread cuegui/cuegui/JobMonitorTree.py Outdated
Group multiple job unavailable notifications that occur within 500ms into a single message box instead of showing separate popups for each job. This improves UX when multiple monitored jobs expire simultaneously.
@ramonfigueiredo
Copy link
Copy Markdown
Collaborator Author

Hi @DiegoTavares

Ready for review again

Skip adding jobs in addJob() if they are in the __notifiedJobsNotFound were just removed because they are no longer available (moved to historical data).
Add check in _processUpdate to skip jobs that are in __notifiedJobsNotFound
set when iterating over rpcObjects. This complements the addJob fix and
ensures jobs removed due to NOT_FOUND errors are not re-added during
the update cycle.
- Add finished jobs to monitored_proxies in _getUpdate() so they are verified against the server during background updates
- Emit job_not_found signal for finished jobs that no longer exist, enabling batch detection of multiple archived jobs at once
- Skip jobs in __notifiedJobsNotFound set in both addJob() and _processUpdate() to prevent re-adding jobs after removal
- This ensures the batch notification popup works correctly when multiple monitored jobs are archived simultaneously
- Verify finished jobs still exist during background updates by adding them to monitored_proxies in _getUpdate()
- Emit job_not_found signal for finished jobs that are no longer found, enabling automatic detection of archived jobs
- Skip jobs in __notifiedJobsNotFound set in addJob() and _processUpdate() to prevent re-adding jobs after they are removed
- Use custom scrollable dialog for multiple job notifications instead of QMessageBox, ensuring the dialog remains usable with hundreds of jobs
- Sort job names in the dialog for easier reading
@ramonfigueiredo
Copy link
Copy Markdown
Collaborator Author

ramonfigueiredo commented Jan 17, 2026

image

@ramonfigueiredo ramonfigueiredo merged commit c4b0cac into AcademySoftwareFoundation:master Jan 17, 2026
22 checks passed
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.

2 participants