mirror of https://github.com/voidlizard/hbs2
index:now and merge:now flags
This commit is contained in:
parent
a1d6916ed9
commit
09528cbf9a
|
@ -402,14 +402,15 @@ ncqStorageRun ncq@NCQStorage{..} = flip runContT pure do
|
||||||
|
|
||||||
debug "RUNNING STORAGE!"
|
debug "RUNNING STORAGE!"
|
||||||
|
|
||||||
reader <- makeReader
|
reader <- makeReader
|
||||||
writer <- makeWriter indexQ
|
writer <- makeWriter indexQ
|
||||||
indexer <- makeIndexer writer indexQ
|
indexer <- makeIndexer writer indexQ
|
||||||
merge <- makeMerge
|
merge <- makeMerge
|
||||||
|
flagWatcher <- makeFlagWatcher
|
||||||
|
|
||||||
mapM_ waitCatch [writer,indexer,merge]
|
mapM_ waitCatch [writer,indexer,merge]
|
||||||
-- mapM_ waitCatch [writer,indexer,refsWriter] -- ,indexer,refsWriter]
|
-- mapM_ waitCatch [writer,indexer,refsWriter] -- ,indexer,refsWriter]
|
||||||
mapM_ cancel [reader]
|
mapM_ cancel [reader,flagWatcher]
|
||||||
|
|
||||||
where
|
where
|
||||||
|
|
||||||
|
@ -425,6 +426,27 @@ ncqStorageRun ncq@NCQStorage{..} = flip runContT pure do
|
||||||
s <- readTVar ncqStopped
|
s <- readTVar ncqStopped
|
||||||
unless s STM.retry
|
unless s STM.retry
|
||||||
|
|
||||||
|
|
||||||
|
makeFlagWatcher = do
|
||||||
|
let flags = ncqGetFileName ncq ".flags"
|
||||||
|
let needIndexFlag = flags </> "index:now"
|
||||||
|
let needMergeFlag = flags </> "merge:now"
|
||||||
|
|
||||||
|
ContT $ withAsync $ fix \again -> do
|
||||||
|
pause @'Seconds 1
|
||||||
|
needIndex <- doesPathExist needIndexFlag
|
||||||
|
needMerge <- doesPathExist needMergeFlag
|
||||||
|
|
||||||
|
when needIndex do
|
||||||
|
rm needIndexFlag
|
||||||
|
ncqIndexRightNow ncq
|
||||||
|
|
||||||
|
when needMerge do
|
||||||
|
rm needMergeFlag
|
||||||
|
ncqStorageMerge ncq
|
||||||
|
|
||||||
|
again
|
||||||
|
|
||||||
makeReader = do
|
makeReader = do
|
||||||
cap <- getNumCapabilities
|
cap <- getNumCapabilities
|
||||||
reader <- ContT $ withAsync $ untilStopped do
|
reader <- ContT $ withAsync $ untilStopped do
|
||||||
|
@ -508,7 +530,7 @@ ncqStorageRun ncq@NCQStorage{..} = flip runContT pure do
|
||||||
what' <- race (pause @'Seconds 1) $ atomically do
|
what' <- race (pause @'Seconds 1) $ atomically do
|
||||||
stop <- readTVar ncqStopped
|
stop <- readTVar ncqStopped
|
||||||
q <- tryPeekTQueue indexQ
|
q <- tryPeekTQueue indexQ
|
||||||
if not ( stop || isJust q) then
|
if not (stop || isJust q) then
|
||||||
STM.retry
|
STM.retry
|
||||||
else do
|
else do
|
||||||
STM.flushTQueue indexQ
|
STM.flushTQueue indexQ
|
||||||
|
@ -1035,6 +1057,10 @@ ncqStorageOpen fp' = do
|
||||||
|
|
||||||
ncq@NCQStorage{..} <- ncqStorageInit_ False fp
|
ncq@NCQStorage{..} <- ncqStorageInit_ False fp
|
||||||
|
|
||||||
|
let flagz = ncqGetFileName ncq ".flags"
|
||||||
|
|
||||||
|
mkdir flagz
|
||||||
|
|
||||||
ncqReadTrackedFiles ncq
|
ncqReadTrackedFiles ncq
|
||||||
ncqFixIndexes ncq
|
ncqFixIndexes ncq
|
||||||
ncqLoadIndexes ncq
|
ncqLoadIndexes ncq
|
||||||
|
|
Loading…
Reference in New Issue