From 7673fe62c7801ab4d0431d7b572af1ad2bc2e61f Mon Sep 17 00:00:00 2001 From: Sandy Maguire Date: Tue, 20 Dec 2022 12:06:22 -0800 Subject: [PATCH 1/6] chore: upgrade polysemy to fix oom --- nix/haskell-pins.nix | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/nix/haskell-pins.nix b/nix/haskell-pins.nix index 87875e4e3ac..2e0f79da032 100644 --- a/nix/haskell-pins.nix +++ b/nix/haskell-pins.nix @@ -203,11 +203,39 @@ let tasty-hunit = "hunit"; }; }; + polysemy = { + src = fetchgit { + url = "https://github.com/polysemy-research/polysemy.git"; + rev = "3855786e58bf397ca8204f3a79d19c24485dabd4"; + sha256 = "sha256-4ans30VWuSMC9HNFb6FWQyc30oxJd2dmFrMGu5/dLg0="; + }; + }; + polysemy-plugin = { + src = fetchgit { + url = "https://github.com/polysemy-research/polysemy.git"; + rev = "3855786e58bf397ca8204f3a79d19c24485dabd4"; + sha256 = "sha256-4ans30VWuSMC9HNFb6FWQyc30oxJd2dmFrMGu5/dLg0="; + }; + packages = { + polysemy-plugin = "polysemy-plugin"; + }; + }; + polysemy-check = { + src = fetchgit { + url = "https://github.com/polysemy-research/polysemy-check.git"; + rev = "4c0d3ff929ae22ae68d962f7f3f7056f357bf7ac"; + sha256 = "sha256-8XeCeJWbkdqrUf6tERFMoGM8xRI5l/nKNqI810kzMs0="; + }; + }; }; hackagePins = { kind-generics = { - version = "0.4.1.0"; - sha256 = "sha256-gD9b9AXpLkpPSAeg8oPBU7tsHtSNQjxIZKBo+7+r3+c="; + version = "0.4.1.2"; + sha256 = "sha256-DSMckKIeVE/buSMg8Mq+mUm1bYPYB7veA11Ns7vTBbc="; + }; + kind-generics-th = { + version = "0.2.2.3"; + sha256 = "sha256-DSMckKIeVE/buSMg8Mq+mUm1bYPYB7veA11Ns7vTBbc="; }; wai-route = { version = "0.4.0"; From dff64d41098124be25a33dafec05f85c29fd69e5 Mon Sep 17 00:00:00 2001 From: Sandy Maguire Date: Tue, 20 Dec 2022 15:46:06 -0800 Subject: [PATCH 2/6] fix: hackage pins to git pins? --- nix/haskell-pins.nix | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/nix/haskell-pins.nix b/nix/haskell-pins.nix index 2e0f79da032..5c92443cc65 100644 --- a/nix/haskell-pins.nix +++ b/nix/haskell-pins.nix @@ -227,16 +227,19 @@ let sha256 = "sha256-8XeCeJWbkdqrUf6tERFMoGM8xRI5l/nKNqI810kzMs0="; }; }; - }; - hackagePins = { kind-generics = { - version = "0.4.1.2"; - sha256 = "sha256-DSMckKIeVE/buSMg8Mq+mUm1bYPYB7veA11Ns7vTBbc="; - }; - kind-generics-th = { - version = "0.2.2.3"; - sha256 = "sha256-DSMckKIeVE/buSMg8Mq+mUm1bYPYB7veA11Ns7vTBbc="; + src = fetchgit { + url = "https://gitlab.com/trupill/kind-generics.git"; + rev = "f4ad2bcfacc9c3dcecf64c069d086926465cab2c"; + sha256 = "sha256-uvQMV8aTNyTN+ozrseohexbCneVPMO35Jf1eEhLPk78="; + }; + packages = { + kind-generics = "kind-generics"; + kind-generics-th = "kind-generics-th"; + }; }; + }; + hackagePins = { wai-route = { version = "0.4.0"; sha256 = "sha256-DSMckKIeVE/buSMg8Mq+mUm1bYPYB7veA11Ns7vTBbc="; From ca3290625bf388f127af1e14d0779505af886477 Mon Sep 17 00:00:00 2001 From: Sandy Maguire Date: Tue, 20 Dec 2022 16:00:36 -0800 Subject: [PATCH 3/6] fix: update breaking polysemy changes --- services/federator/src/Federator/Monitor/Internal.hs | 9 +++++---- services/federator/test/unit/Test/Federator/Monitor.hs | 2 +- services/galley/src/Galley/API/Message.hs | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/services/federator/src/Federator/Monitor/Internal.hs b/services/federator/src/Federator/Monitor/Internal.hs index 4fd0faef579..4d38328bdc0 100644 --- a/services/federator/src/Federator/Monitor/Internal.hs +++ b/services/federator/src/Federator/Monitor/Internal.hs @@ -35,6 +35,7 @@ import qualified Network.TLS as TLS import Polysemy (Embed, Member, Members, Sem, embed) import qualified Polysemy import qualified Polysemy.Error as Polysemy +import Polysemy.Final (Final) import qualified Polysemy.Resource as Polysemy import Polysemy.TinyLog (TinyLog) import qualified Polysemy.TinyLog as Log @@ -103,8 +104,8 @@ watchPathEvents (WatchedDir _ _) = [MoveIn, Create] -- directory watches as they get deleted and recreated. type Watches = Map RawFilePath (WatchDescriptor, WatchedPath) -runSemDefault :: Logger -> Sem '[TinyLog, Embed IO] a -> IO a -runSemDefault logger = Polysemy.runM . Log.loggerToTinyLog logger +runSemDefault :: Logger -> Sem '[TinyLog, Embed IO, Final IO] a -> IO a +runSemDefault logger = Polysemy.runFinal . Polysemy.embedToFinal . Log.loggerToTinyLog logger logErrors :: Members '[TinyLog, Polysemy.Error FederationSetupError] r => @@ -123,10 +124,10 @@ logAndIgnoreErrors :: logAndIgnoreErrors = void . Polysemy.runError . logErrors delMonitor :: - (Members '[TinyLog, Embed IO] r) => + (Members '[TinyLog, Embed IO, Final IO] r) => Monitor -> Sem r () -delMonitor monitor = Polysemy.resourceToIO +delMonitor monitor = Polysemy.resourceToIOFinal $ Polysemy.bracket (takeMVar (monLock monitor)) (putMVar (monLock monitor)) diff --git a/services/federator/test/unit/Test/Federator/Monitor.hs b/services/federator/test/unit/Test/Federator/Monitor.hs index dcb28815387..e448f62f2ef 100644 --- a/services/federator/test/unit/Test/Federator/Monitor.hs +++ b/services/federator/test/unit/Test/Federator/Monitor.hs @@ -125,7 +125,7 @@ withSilentMonitor reloads settings = do (runSem . delMonitor) pure tlsVar where - runSem = Polysemy.runM . Log.discardTinyLogs + runSem = Polysemy.runFinal . Polysemy.embedToFinal @IO . Log.discardTinyLogs runSemE action = do r <- runSem (Polysemy.runError @FederationSetupError action) writeChan reloads (either Just (const Nothing) r) diff --git a/services/galley/src/Galley/API/Message.hs b/services/galley/src/Galley/API/Message.hs index ffe54121b35..94d6809ce57 100644 --- a/services/galley/src/Galley/API/Message.hs +++ b/services/galley/src/Galley/API/Message.hs @@ -65,7 +65,7 @@ import Galley.Options import qualified Galley.Types.Clients as Clients import Galley.Types.Conversations.Members import Imports hiding (forkIO) -import Polysemy +import Polysemy hiding (send) import Polysemy.Error import Polysemy.Input import qualified Polysemy.TinyLog as P From 820baa6459fec5fc3bba5cc0bcf6df741361df87 Mon Sep 17 00:00:00 2001 From: Sandy Maguire Date: Tue, 20 Dec 2022 17:51:09 -0800 Subject: [PATCH 4/6] fix: redundant import --- services/brig/src/Brig/Effects/SFT.hs | 1 - 1 file changed, 1 deletion(-) diff --git a/services/brig/src/Brig/Effects/SFT.hs b/services/brig/src/Brig/Effects/SFT.hs index 7672876e4fa..de325e810e2 100644 --- a/services/brig/src/Brig/Effects/SFT.hs +++ b/services/brig/src/Brig/Effects/SFT.hs @@ -37,7 +37,6 @@ import Imports hiding (fromException, intercalate) import Network.HTTP.Client import Polysemy import Polysemy.Error hiding (try) -import Polysemy.Internal import Polysemy.TinyLog import qualified System.Logger as Log import URI.ByteString (uriPath) From 906a75fdc491019b35ee5d12e3c7fc7778f6066d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20Dimja=C5=A1evi=C4=87?= Date: Wed, 21 Dec 2022 13:06:23 +0100 Subject: [PATCH 5/6] Add a changelog --- changelog.d/5-internal/polysemy-oom | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/5-internal/polysemy-oom diff --git a/changelog.d/5-internal/polysemy-oom b/changelog.d/5-internal/polysemy-oom new file mode 100644 index 00000000000..82b4530ebc9 --- /dev/null +++ b/changelog.d/5-internal/polysemy-oom @@ -0,0 +1 @@ +Reduce Polysemy-induced high memory requirements From 670ef1ad377891e37a265cdef5d3fd5f2dcb8a32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20Dimja=C5=A1evi=C4=87?= Date: Thu, 22 Dec 2022 11:55:15 +0100 Subject: [PATCH 6/6] Fix a mishap from merge conflict resolution --- nix/haskell-pins.nix | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/nix/haskell-pins.nix b/nix/haskell-pins.nix index f54aa174df3..0082da92620 100644 --- a/nix/haskell-pins.nix +++ b/nix/haskell-pins.nix @@ -227,18 +227,6 @@ let sha256 = "sha256-8XeCeJWbkdqrUf6tERFMoGM8xRI5l/nKNqI810kzMs0="; }; }; - }; - hackagePins = { - # This can be removed once postie 0.6.0.3 (or later) is in nixpkgs - postie = { - src = fetchgit { - url = "https://github.com/alexbiehl/postie.git"; - rev = "c92702386f760fcaa65cd052dc8114889c001e3f"; - sha256 = "sha256-yiw6hg3guRWS6CVdrUY8wyIDxoqfGjIVMrEtP+Fys0Y="; - }; - }; - }; - hackagePins = { kind-generics = { src = fetchgit { url = "https://gitlab.com/trupill/kind-generics.git"; @@ -250,6 +238,14 @@ let kind-generics-th = "kind-generics-th"; }; }; + # This can be removed once postie 0.6.0.3 (or later) is in nixpkgs + postie = { + src = fetchgit { + url = "https://github.com/alexbiehl/postie.git"; + rev = "c92702386f760fcaa65cd052dc8114889c001e3f"; + sha256 = "sha256-yiw6hg3guRWS6CVdrUY8wyIDxoqfGjIVMrEtP+Fys0Y="; + }; + }; }; hackagePins = { wai-route = {