stabilise periodically

contributes to #44
This commit is contained in:
Trolli Schmittlauch 2020-06-20 21:20:32 +02:00
parent 3482876d9b
commit 0494ddd696
4 changed files with 12 additions and 5 deletions

View file

@ -55,4 +55,5 @@ readConfig = do
, confIP = toHostAddress6 . read $ ipString , confIP = toHostAddress6 . read $ ipString
, confDhtPort = read portString , confDhtPort = read portString
, confBootstrapNodes = [(bootstrapHost, read bootstrapPortString)] , confBootstrapNodes = [(bootstrapHost, read bootstrapPortString)]
--, confStabiliseInterval = 60
} }

View file

@ -181,11 +181,16 @@ cacheWriter nsSTM =
modifyTVar' (nodeCacheSTM ns) cacheModifier modifyTVar' (nodeCacheSTM ns) cacheModifier
stabiliseThread :: LocalNodeStateSTM -> IO () stabiliseThread :: LocalNodeStateSTM -> IO ()
stabiliseThread nsSTM = do stabiliseThread nsSTM = forever $ do
ns <- readTVarIO nsSTM
-- TODO: update successfully stabilised nodes in cache -- TODO: update successfully stabilised nodes in cache
-- placeholder -- first stabilise immediate neihbours, then the next ones
stabiliseNeighbour nsSTM successors 1 forM_ [1..(kNeighbours ns)] (\num -> do
pure () stabiliseNeighbour nsSTM predecessors num
stabiliseNeighbour nsSTM successors num
)
-- TODO: make delay configurable
threadDelay (60 * 1000)
where where
stabiliseNeighbour :: LocalNodeStateSTM stabiliseNeighbour :: LocalNodeStateSTM
-> (LocalNodeState -> [RemoteNodeState]) -> (LocalNodeState -> [RemoteNodeState])

View file

@ -613,6 +613,7 @@ data FediChordConf = FediChordConf
, confIP :: HostAddress6 , confIP :: HostAddress6
, confDhtPort :: Int , confDhtPort :: Int
, confBootstrapNodes :: [(String, PortNumber)] , confBootstrapNodes :: [(String, PortNumber)]
--, confStabiliseInterval :: Int
} }
deriving (Show, Eq) deriving (Show, Eq)

View file

@ -154,7 +154,7 @@ spec = do
describe "successors and predecessors do not disturb the ring characteristics of EpiChord operations (see #48)" $ do describe "successors and predecessors do not disturb the ring characteristics of EpiChord operations (see #48)" $ do
let let
emptyCache = initCache emptyCache = initCache
-- implicitly relies on kNieghbours to be <= 3 -- implicitly relies on kNeighbours to be <= 3
thisNid = toNodeID 1000 thisNid = toNodeID 1000
thisNode = setNid thisNid <$> exampleLocalNode thisNode = setNid thisNid <$> exampleLocalNode
nid2 = toNodeID 1003 nid2 = toNodeID 1003