Skip to content

Commit 55bbb51

Browse files
committed
Use strict modifyIORef in AutoRefresh
1 parent 1c6df60 commit 55bbb51

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

IHP/AutoRefresh.hs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ autoRefresh runAction = do
8989

9090
event <- MVar.newEmptyMVar
9191
let session = AutoRefreshSession { id, renderView, event, tables, lastResponse, lastPing }
92-
modifyIORef autoRefreshServer (\s -> s { sessions = session:(get #sessions s) } )
92+
modifyIORef' autoRefreshServer (\s -> s { sessions = session:(get #sessions s) } )
9393
async (gcSessions autoRefreshServer)
9494

9595
registerNotificationTrigger ?touchedTables autoRefreshServer
@@ -147,7 +147,7 @@ instance WSApp AutoRefreshWSApp where
147147
getState >>= \case
148148
AutoRefreshActive { sessionId } -> do
149149
let autoRefreshServer = ?applicationContext |> get #autoRefreshServer
150-
modifyIORef autoRefreshServer (\server -> server { sessions = filter (\AutoRefreshSession { id } -> id /= sessionId) (get #sessions server) })
150+
modifyIORef' autoRefreshServer (\server -> server { sessions = filter (\AutoRefreshSession { id } -> id /= sessionId) (get #sessions server) })
151151
AwaitingSessionID -> pure ()
152152

153153

@@ -157,7 +157,7 @@ registerNotificationTrigger touchedTablesVar autoRefreshServer = do
157157
subscribedTables <- (get #subscribedTables) <$> (autoRefreshServer |> readIORef)
158158

159159
let subscriptionRequired = touchedTables |> filter (\table -> subscribedTables |> Set.notMember table)
160-
modifyIORef autoRefreshServer (\server -> server { subscribedTables = get #subscribedTables server <> Set.fromList subscriptionRequired })
160+
modifyIORef' autoRefreshServer (\server -> server { subscribedTables = get #subscribedTables server <> Set.fromList subscriptionRequired })
161161

162162
pgListener <- get #pgListener <$> readIORef autoRefreshServer
163163
subscriptions <- subscriptionRequired |> mapM (\table -> do
@@ -175,7 +175,7 @@ registerNotificationTrigger touchedTablesVar autoRefreshServer = do
175175
|> map (\session -> get #event session)
176176
|> mapM (\event -> MVar.tryPutMVar event ())
177177
pure ())
178-
modifyIORef autoRefreshServer (\s -> s { subscriptions = get #subscriptions s <> subscriptions })
178+
modifyIORef' autoRefreshServer (\s -> s { subscriptions = get #subscriptions s <> subscriptions })
179179
pure ()
180180

181181
-- | Returns the ids of all sessions available to the client based on what sessions are found in the session cookie
@@ -208,7 +208,7 @@ updateSession :: (?applicationContext :: ApplicationContext) => UUID -> (AutoRef
208208
updateSession sessionId updateFunction = do
209209
let server = ?applicationContext |> get #autoRefreshServer
210210
let updateSession' session = if get #id session == sessionId then updateFunction session else session
211-
modifyIORef server (\server -> server { sessions = map updateSession' (get #sessions server) })
211+
modifyIORef' server (\server -> server { sessions = map updateSession' (get #sessions server) })
212212
pure ()
213213

214214
-- | Removes all expired sessions
@@ -219,7 +219,7 @@ updateSession sessionId updateFunction = do
219219
gcSessions :: IORef AutoRefreshServer -> IO ()
220220
gcSessions autoRefreshServer = do
221221
now <- getCurrentTime
222-
modifyIORef autoRefreshServer (\autoRefreshServer -> autoRefreshServer { sessions = filter (not . isSessionExpired now) (get #sessions autoRefreshServer) })
222+
modifyIORef' autoRefreshServer (\autoRefreshServer -> autoRefreshServer { sessions = filter (not . isSessionExpired now) (get #sessions autoRefreshServer) })
223223

224224
-- | A session is expired if it was not pinged in the last 60 seconds
225225
isSessionExpired :: UTCTime -> AutoRefreshSession -> Bool

IHP/ModelSupport.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -912,7 +912,7 @@ trackTableRead tableName = case get #trackTableReadCallback ?modelContext of
912912
withTableReadTracker :: (?modelContext :: ModelContext) => ((?modelContext :: ModelContext, ?touchedTables :: IORef (Set ByteString)) => IO ()) -> IO ()
913913
withTableReadTracker trackedSection = do
914914
touchedTablesVar <- newIORef Set.empty
915-
let trackTableReadCallback = Just \tableName -> modifyIORef touchedTablesVar (Set.insert tableName)
915+
let trackTableReadCallback = Just \tableName -> modifyIORef' touchedTablesVar (Set.insert tableName)
916916
let oldModelContext = ?modelContext
917917
let ?modelContext = oldModelContext { trackTableReadCallback }
918918
let ?touchedTables = touchedTablesVar

0 commit comments

Comments
 (0)