Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/5-internal/polysemy-oom
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Reduce Polysemy-induced high memory requirements
39 changes: 35 additions & 4 deletions nix/haskell-pins.nix
Original file line number Diff line number Diff line change
Expand Up @@ -203,12 +203,43 @@ let
tasty-hunit = "hunit";
};
};
};
hackagePins = {
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=";
};
};
kind-generics = {
version = "0.4.1.0";
sha256 = "sha256-gD9b9AXpLkpPSAeg8oPBU7tsHtSNQjxIZKBo+7+r3+c=";
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=";
Expand Down
1 change: 0 additions & 1 deletion services/brig/src/Brig/Effects/SFT.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
9 changes: 5 additions & 4 deletions services/federator/src/Federator/Monitor/Internal.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 =>
Expand All @@ -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))
Expand Down
2 changes: 1 addition & 1 deletion services/federator/test/unit/Test/Federator/Monitor.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion services/galley/src/Galley/API/Message.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down