re-structure convergenceSampleThread to work on a RealNode and iterate over all joined vservers
contributes to #34
This commit is contained in:
parent
33ae904d17
commit
8e8ea41dc4
|
@ -133,7 +133,7 @@ fediChordInit initConf serviceRunner = do
|
|||
putStrLn $ err <> " Error joining, start listening for incoming requests anyways"
|
||||
-- launch thread attempting to join on new cache entries
|
||||
_ <- forkIO $ joinOnNewEntriesThread firstVSSTM
|
||||
async (fediMainThreads serverSock firstVSSTM)
|
||||
async (fediMainThreads serverSock realNodeSTM)
|
||||
)
|
||||
(\joinedNS -> do
|
||||
-- launch main eventloop with successfully joined state
|
||||
|
@ -195,8 +195,10 @@ fediChordBootstrapJoin nsSTM bootstrapNode = do
|
|||
|
||||
-- Periodically lookup own ID through a random bootstrapping node to discover and merge separated DHT clusters.
|
||||
-- Unjoined try joining instead.
|
||||
convergenceSampleThread :: Service s (RealNodeSTM s) => LocalNodeStateSTM s -> IO ()
|
||||
convergenceSampleThread nsSTM = forever $ do
|
||||
convergenceSampleThread :: Service s (RealNodeSTM s) => RealNodeSTM s -> IO ()
|
||||
convergenceSampleThread nodeSTM = forever $ do
|
||||
node <- readTVarIO nodeSTM
|
||||
forM_ (vservers node) $ \nsSTM -> do
|
||||
nsSnap <- readTVarIO nsSTM
|
||||
parentNode <- readTVarIO $ parentRealNode nsSnap
|
||||
if isJoined nsSnap
|
||||
|
@ -221,7 +223,8 @@ convergenceSampleThread nsSTM = forever $ do
|
|||
) >> pure ()
|
||||
-- unjoined node: try joining through all bootstrapping nodes
|
||||
else tryBootstrapJoining nsSTM >> pure ()
|
||||
let delaySecs = confBootstrapSamplingInterval . nodeConfig $ parentNode
|
||||
|
||||
let delaySecs = confBootstrapSamplingInterval . nodeConfig $ node
|
||||
threadDelay delaySecs
|
||||
|
||||
|
||||
|
@ -657,7 +660,7 @@ fediMainThreads sock nodeSTM = do
|
|||
-- choose option 2 for the sake of limiting concurrency in simulation scenario
|
||||
concurrently_ (stabiliseThread nodeSTM) $
|
||||
concurrently_ (nodeCacheVerifyThread nodeSTM) $
|
||||
concurrently_ (convergenceSampleThread nsSTM) $
|
||||
concurrently_ (convergenceSampleThread nodeSTM) $
|
||||
concurrently_ (lookupCacheCleanup $ parentRealNode ns) $
|
||||
concurrently_
|
||||
(sendThread sock sendQ)
|
||||
|
|
Loading…
Reference in a new issue