@@ -131,6 +131,7 @@ import Data.Bifunctor (bimap, first)
131
131
import Data.ByteString.Char8 (ByteString )
132
132
import qualified Data.ByteString.Char8 as B
133
133
import Data.Composition ((.:) , (.:.) , (.::) , (.::.) )
134
+ import Data.Containers.ListUtils (nubOrd )
134
135
import Data.Either (isRight , rights )
135
136
import Data.Foldable (foldl' , toList )
136
137
import Data.Functor (($>) )
@@ -959,7 +960,7 @@ subscribeConnections' c connIds = do
959
960
errs' = M. map (Left . storeError) errs
960
961
(subRs, rcvQs) = M. mapEither rcvQueueOrResult cs
961
962
mapM_ (mapM_ (\ (cData, sqs) -> mapM_ (lift . resumeMsgDelivery c cData) sqs) . sndQueue) cs
962
- mapM_ ( resumeConnCmds c) $ M. keys cs
963
+ lift $ resumeConnCmds c $ M. keys cs
963
964
rcvRs <- lift $ connResults . fst <$> subscribeQueues c (concat $ M. elems rcvQs)
964
965
ns <- asks ntfSupervisor
965
966
tkn <- readTVarIO (ntfTkn ns)
@@ -1118,13 +1119,10 @@ resumeSrvCmds :: AgentClient -> Maybe SMPServer -> AM' ()
1118
1119
resumeSrvCmds = void .: getAsyncCmdWorker False
1119
1120
{-# INLINE resumeSrvCmds #-}
1120
1121
1121
- resumeConnCmds :: AgentClient -> ConnId -> AM ()
1122
- resumeConnCmds c connId =
1123
- unlessM connQueued $
1124
- withStore' c (`getPendingCommandServers` connId)
1125
- >>= mapM_ (lift . resumeSrvCmds c)
1126
- where
1127
- connQueued = atomically $ isJust <$> TM. lookupInsert connId True (connCmdsQueued c)
1122
+ resumeConnCmds :: AgentClient -> [ConnId ] -> AM' ()
1123
+ resumeConnCmds c connIds = do
1124
+ srvs <- nubOrd . concat . rights <$> withStoreBatch' c (\ db -> fmap (getPendingCommandServers db) connIds)
1125
+ mapM_ (resumeSrvCmds c) srvs
1128
1126
1129
1127
getAsyncCmdWorker :: Bool -> AgentClient -> Maybe SMPServer -> AM' Worker
1130
1128
getAsyncCmdWorker hasWork c server =
0 commit comments