From 96bbc8675621c3112468e487ac073fe29e69ac76 Mon Sep 17 00:00:00 2001 From: steve-chavez Date: Fri, 10 Apr 2026 17:17:20 -0500 Subject: [PATCH] Revert "refactor: clarify debouncer function" This reverts commit 577ed4dd4c7b3ed8646bc952846a32d1c580ad31. --- src/PostgREST/AppState.hs | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/PostgREST/AppState.hs b/src/PostgREST/AppState.hs index d5b5d07af..e276fe2df 100644 --- a/src/PostgREST/AppState.hs +++ b/src/PostgREST/AppState.hs @@ -117,19 +117,13 @@ init conf@AppConfig{configLogLevel, configDbPoolSize} = do pool <- initPool conf observer initWithPool pool conf loggerState metricsState observer --{ stateSocketREST = sock, stateSocketAdmin = adminSock} --- Make a new debouncer action. An internal "worker" thread runs forever ensuring "action" runs when the "trigger" is called. The "action" is only executed once over a burst of calls. -makeDebouncer :: IO () -> IO (IO ()) -makeDebouncer action = do +simpleDebounce :: IO () -> IO (IO ()) +simpleDebounce act = do flag <- newEmptyMVar - - let worker = forever $ do - takeMVar flag - action - - let trigger = void $ tryPutMVar flag () - - void $ forkIO worker - pure trigger + void $ forkIO $ forever $ do + takeMVar flag + act + pure (void $ tryPutMVar flag ()) initWithPool :: SQL.Pool -> AppConfig -> Logger.LoggerState -> Metrics.MetricsState -> ObservationHandler -> IO AppState initWithPool pool conf loggerState metricsState observer = mdo @@ -139,7 +133,7 @@ initWithPool pool conf loggerState metricsState observer = mdo <*> newIORef Nothing <*> newIORef SCPending <*> newIORef False - <*> makeDebouncer (retryingSchemaCacheLoad appState *> threadDelay 100000) -- 100ms cooldown + <*> simpleDebounce (retryingSchemaCacheLoad appState *> threadDelay 100000) -- 100ms cooldown <*> newIORef conf <*> mkAutoUpdate defaultUpdateSettings { updateAction = getCurrentTime } <*> myThreadId