gargoyle 0.1.1.1 → 0.1.2.0
raw patch · 4 files changed
+8/−3 lines, 4 filesdep ~basedep ~unixPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base, unix
API changes (from Hackage documentation)
Files
- ChangeLog.md +4/−0
- README.md +1/−1
- gargoyle.cabal +1/−1
- src/Gargoyle.hs +2/−1
ChangeLog.md view
@@ -1,5 +1,9 @@ # Changelog for gargoyle +## 0.1.2.0++* Fix a bug with shutting down on Apple Silicon+ ## 0.1.1.1 * Add support for ghc 9.0.2
README.md view
@@ -1,5 +1,5 @@ # gargoyle-[](https://haskell.org) [](https://hackage.haskell.org/package/gargoyle) [](https://matrix.hackage.haskell.org/#/package/gargoyle) [](https://github.com/obsidiansystems/gargoyle/actions) [](https://github.com/obsidiansystems/gargoyle/blob/master/LICENSE)+[](https://haskell.org) [](https://hackage.haskell.org/package/gargoyle) [](https://github.com/obsidiansystems/gargoyle/actions) [](https://github.com/obsidiansystems/gargoyle/blob/master/LICENSE) Gargoyle is a framework for managing daemons from Haskell. Currently, the only requirement is that the daemon be able to communicate over a Unix domain socket. See [gargoyle-postgresql](https://hackage.haskell.org/package/gargoyle-postgresql) for an example that uses gargoyle to manage postgresql.
gargoyle.cabal view
@@ -1,5 +1,5 @@ name: gargoyle-version: 0.1.1.1+version: 0.1.2.0 license: BSD3 license-file: LICENSE author: Obsidian Systems LLC
src/Gargoyle.hs view
@@ -187,7 +187,8 @@ n <- takeMVar numClientsVar case pred n of 0 -> do- shutdown controlSocket ShutdownBoth+ -- If the client side beats us to this, we'll get an error here. This might be specific to Apple Silicon.+ catch (shutdown controlSocket ShutdownBoth) $ \(_ :: IOException) -> pure () -- We have to explicitly kill the accept thread, because otherwise (sometimes?) 'accept' will begin returning EAGAIN, and ghc will continuously retry it. This busywait consumes 100% of CPU, prevents the monitor from actually exiting, and leaves the control socket and lock file in a state where another monitor can't be started. killThread acceptThread putMVar shutdownVar ()