Particle data merge bug

This commit is contained in:
folex 2021-12-23 12:19:08 +03:00
parent 04e62337da
commit 41ba5c3758
2 changed files with 154 additions and 98 deletions

View File

@ -26,13 +26,13 @@ func findAndAskNeighboursSchema(
logFail: string, string -> () logFail: string, string -> ()
): ):
on HOST_PEER_ID: on HOST_PEER_ID:
neighbors <- Kademlia.neighborhood(clientId, nil, nil) -- neighbors <- Kademlia.neighborhood(clientId, nil, nil)
-- co logNeighs(neighbors) -- co logNeighs(neighbors)
for n <- neighbors par: for n <- knownPeers par:
on n: on n:
neighbors2 <- Kademlia.neighborhood(n, nil, nil) -- neighbors2 <- Kademlia.neighborhood(n, nil, nil)
-- co logNeighs(neighbors2) -- co logNeighs(neighbors2)
for n2 <- neighbors2 par: for n2 <- knownPeers par:
connected <- Peer.connect(n2, nil) connected <- Peer.connect(n2, nil)
if connected: if connected:
status: *string status: *string
@ -62,8 +62,8 @@ func getAll(
-- in order to temporarily reduce the number of particles sent to client -- in order to temporarily reduce the number of particles sent to client
-- we gather data from the known peers only. -- we gather data from the known peers only.
-- Known peers are explicitly represent the whole network atm -- Known peers are explicitly represent the whole network atm
for peer <- knownPeers par: -- for peer <- knownPeers par:
on peer: -- on peer:
askAllAndSend(peer, collectPeerInfo, collectServiceInterface) -- askAllAndSend(peer, collectPeerInfo, collectServiceInterface)
-- co findAndAskNeighboursSchema(%init_peer_id%, collectPeerInfo, collectServiceInterface, logNeighs, logFail) co findAndAskNeighboursSchema(knownPeers, %init_peer_id%, collectPeerInfo, collectServiceInterface, logNeighs, logFail)

View File

@ -262,17 +262,19 @@ export function findAndAskNeighboursSchema(...args) {
(call %init_peer_id% ("getDataSrv" "clientId") [] clientId) (call %init_peer_id% ("getDataSrv" "clientId") [] clientId)
) )
(xor (xor
(par
(fold knownPeers n
(par
(seq (seq
(call -relay- ("kad" "neighborhood") [clientId [] []] neighbors) (call -relay- ("op" "noop") [])
(par
(fold neighbors n
(par
(xor (xor
(par
(seq (seq
(call n ("kad" "neighborhood") [n [] []] neighbors2) (call -relay- ("op" "noop") [])
(par (fold knownPeers n2
(fold neighbors2 n2
(par (par
(seq
(call -relay- ("op" "noop") [])
(new $status (new $status
(seq (seq
(call n ("peer" "connect") [n2 []] connected) (call n ("peer" "connect") [n2 []] connected)
@ -331,20 +333,24 @@ export function findAndAskNeighboursSchema(...args) {
) )
) )
) )
)
(seq
(call -relay- ("op" "noop") [])
(next n2) (next n2)
) )
) )
)
)
(null) (null)
) )
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 7]) (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 7])
) )
)
(next n) (next n)
) )
) )
(null) (null)
) )
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 8]) (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 8])
) )
) )
@ -516,54 +522,104 @@ export function getAll(...args) {
) )
(xor (xor
(par (par
(fold knownPeers peer (xor
(par
(fold knownPeers n
(par (par
(seq (seq
(call -relay- ("op" "noop") []) (call -relay- ("op" "noop") [])
(xor (xor
(par
(seq (seq
(call -relay- ("op" "noop") [])
(fold knownPeers n2
(par
(seq (seq
(call -relay- ("op" "noop") [])
(new $status
(seq (seq
(seq (call n ("peer" "connect") [n2 []] connected)
(seq (xor
(match connected true
(xor
(seq (seq
(seq (seq
(par (par
(seq
(xor (xor
(call %init_peer_id% ("callbackSrv" "logFail") [peer "on"]) (seq
(call n2 ("peer" "identify") [])
(ap "done" $status)
)
(seq
(seq
(call -relay- ("op" "noop") [])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
) )
(call -relay- ("op" "noop") [])
)
)
(call n ("op" "noop") [])
)
(null) (null)
) )
(call -relay- ("op" "noop") []) (call n ("peer" "timeout") [1000 "timedout"] $status)
)
(call peer ("peer" "identify") [] ident)
)
(call peer ("dist" "list_blueprints") [] blueprints)
)
(call peer ("dist" "list_modules") [] modules)
)
(call peer ("srv" "list") [] services)
)
(call -relay- ("op" "noop") [])
) )
(xor (xor
(call %init_peer_id% ("callbackSrv" "collectPeerInfo") [peer ident services blueprints modules]) (match $status.$.[0]! "done"
(xor
(seq
(call -relay- ("op" "noop") [])
(xor
(call %init_peer_id% ("callbackSrv" "logFail") ["success" n2])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
) )
) )
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
) )
) )
(next peer) (xor
(call %init_peer_id% ("callbackSrv" "logFail") ["timed out" n2])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4])
)
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 5])
)
)
(xor
(call %init_peer_id% ("callbackSrv" "logFail") ["failed to connect" n2])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 6])
)
)
)
)
)
(seq
(call -relay- ("op" "noop") [])
(next n2)
)
)
) )
) )
(null) (null)
) )
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4]) (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 7])
) )
) )
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 5]) (next n)
)
)
(null)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 8])
)
(null)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 9])
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 10])
) )
` `
return callFunction( return callFunction(