This PR implements a simple strategy for recovering from Goblint server crashes, where the entire GobPie extension is restarted if you try to run an analysis after the Goblint server has crashed. Additionally it also reworks some related classes to correct some related issues.
Changes:
Added logic to close GobPie if an analysis is run and the Goblint server has crashed
Reworked GoblintServiceLauncher to remove unneeded complexity and improve reliability while (hopefully) preserving core behavior
Added logic automatically rejecting all pending requests if connection to the Goblint server is lost (by default lsp4j leaves all active requests hanging indefinitely if connection to the server is lost)
Correct some instances of CompletableFutures not being waited on when (re)loading config
Moved all file watching to new FileWatcher utility, which internally uses nio WatchService
These changes are all packaged into one PR because there is a lot of overlap in the code that they change and they all serve the same high level purpose of making GobPie more robust.
This PR implements a simple strategy for recovering from Goblint server crashes, where the entire GobPie extension is restarted if you try to run an analysis after the Goblint server has crashed. Additionally it also reworks some related classes to correct some related issues.
Changes:
These changes are all packaged into one PR because there is a lot of overlap in the code that they change and they all serve the same high level purpose of making GobPie more robust.