Only close affected connections on Engine change
- Dominant language
- Java
- Stars
- 3
- Forks
- 5
- PR merge metrics
- No merged PRs in 30d
Description
When the user saves changes to the engines through the `EngineOptionsDialog`, all engines are re-instantiated and their connections are closed. It would be more efficient to only close the connections that are no longer in the active port range of the affected engines.
https://github.com/Ecdar/Ecdar-GUI/blob/a25b0994e654f940a06ebc760a87a0822ff0bcd3/src/main/java/ecdar/backend/BackendHelper.java#L121-L126
https://github.com/Ecdar/Ecdar-GUI/blob/a25b0994e654f940a06ebc760a87a0822ff0bcd3/src/main/java/ecdar/controllers/EngineOptionsDialogController.java#L73-L76
> :warning: This change might seem fairly easy, but it should include a refactor of the way engines are referenced and handled in the `EngineOptionsDialogController`.
This also becomes an issue if long-running queries are started and then the port range is changed for the associated engine in order to run other queries. This case would result in the long-running query being canceled. (Thanks to @Brandhoej for this example of the issue)
## Suggested approach
I suggest that the `EngineInstance` (the visual representation of the engine within the `EngineOptionsDialog`) does not operate on the engines, but instead takes an `Engine` as a constructor parameter for populating the input fields and then has a method for constructing an engine based on the values of these fields.
Contributor guide
Assessment
This issue has not been assessed yet.