In some situations, deadlock can occur during refresh of diagrams having the capability to display functional chains or physical paths: ie diagrams with Sirius post refresh extensions :
The detected performance issue or potential deadlock comes from the DiagramServices::getEditPart(DDiagramElement) which uses an helper using Display.syncExec method to get the ActiveEditor.
This also means that a refresh occuring on a non active editor will not refresh the edit parts.
Reproduction scenario exists with Team for Capella:
when a user has received remote changes on a locked diagram, if the automatic refresh is disabled, this diagram will be frozen and will need a manual refresh to display the received remote changes and be refresh accordingly to potential local changes.
with Capella 6.1 and 7.0 (an dI assume 5.2/6.0), with the [LAB] [Build] All Components, Functions, CEs, FEs diagram from the IFE sample, I get a ~29s manual refresh for this particular scenario compared to an immediate (200ms to 1s regarding the versions) time for other refresh use cases of the same diagram
analysis targets the DiagramService::getEditPart implementation
With the provided PR, the issue is no more reproduced with the scenario we have with Team for Capella.
The particular refresh done on a frozen diagram comes back to the same timings than other refreshes.
In some situations, deadlock can occur during refresh of diagrams having the capability to display functional chains or physical paths: ie diagrams with Sirius post refresh extensions :
The detected performance issue or potential deadlock comes from the DiagramServices::getEditPart(DDiagramElement) which uses an helper using Display.syncExec method to get the ActiveEditor. This also means that a refresh occuring on a non active editor will not refresh the edit parts.
Reproduction scenario exists with Team for Capella: