import Control.Concurrent
import Control.Concurrent.STM
+import Control.Exception
import Control.Monad
import Data.Maybe
import Data.Set (Set)
startIndexManager lsdir repos mkDraft
= do chan <- newTChanIO
index <- openIndex indexDir revFile
- _ <- forkIO (loop chan index)
+ _ <- forkIO (loop chan index `finally` closeDatabase index)
return chan
where
indexDir = lsdir </> "index"