mirror of
https://github.com/logos-storage/logos-storage-nim.git
synced 2026-05-12 06:19:33 +00:00
Add bootstrap nodes connect
This commit is contained in:
parent
654b90973c
commit
e349568833
@ -39,6 +39,7 @@ import ./namespaces
|
||||
import ./storagetypes
|
||||
import ./logutils
|
||||
import ./nat
|
||||
import ./utils/natutils
|
||||
|
||||
logScope:
|
||||
topics = "storage node"
|
||||
@ -95,7 +96,7 @@ proc start*(s: StorageServer) {.async.} =
|
||||
.deduplicate()
|
||||
let discoveryAddrs =
|
||||
@[getMultiAddrWithIPAndUDPPort(announceIp.get, s.config.discoveryPort)]
|
||||
s.storageNode.discovery.updateDhtRecord(discoveryAddrs)
|
||||
s.storageNode.discovery.updateDhtRecord(announceAddrs & discoveryAddrs)
|
||||
s.storageNode.discovery.updateAnnounceRecord(announceAddrs)
|
||||
|
||||
var hasPublicAddr = false
|
||||
@ -110,6 +111,14 @@ proc start*(s: StorageServer) {.async.} =
|
||||
|
||||
await s.storageNode.start()
|
||||
|
||||
for spr in s.config.bootstrapNodes:
|
||||
try:
|
||||
let addrs = spr.data.addresses.mapIt(it.address)
|
||||
await s.storageNode.switch.connect(spr.data.peerId, addrs)
|
||||
except CatchableError as e:
|
||||
warn "Cannot connect to bootstrap node", error = e.msg
|
||||
discard
|
||||
|
||||
if s.restServer != nil:
|
||||
s.restServer.start()
|
||||
|
||||
@ -337,7 +346,7 @@ proc new*(
|
||||
let (announceAddrs, discoveryAddrs) =
|
||||
nattedAddress(config.nat, switch.peerInfo.addrs, config.discoveryPort)
|
||||
discovery.updateAnnounceRecord(announceAddrs)
|
||||
discovery.updateDhtRecord(discoveryAddrs)
|
||||
discovery.updateDhtRecord(announceAddrs & discoveryAddrs)
|
||||
)
|
||||
|
||||
StorageServer(
|
||||
|
||||
@ -16,8 +16,9 @@ multinodesuite "AutoNAT integration":
|
||||
.withNatMinConfidence(0.5)
|
||||
.withNatScheduleInterval(10.seconds)
|
||||
.withNatMaxQueueSize(1)
|
||||
.withLogFile()
|
||||
.withLogLevel("DEBUG").some
|
||||
# .withLogFile()
|
||||
# .withLogLevel("DEBUG")
|
||||
.some
|
||||
)
|
||||
|
||||
# Reminder: multinodesuite setup the first node as bootstrap node
|
||||
@ -25,20 +26,8 @@ multinodesuite "AutoNAT integration":
|
||||
let node1 = clients()[0]
|
||||
let node2 = clients()[1]
|
||||
|
||||
# Temporary
|
||||
# DHT exposes only UDP information
|
||||
# So we force temporary by connection the 2 node together
|
||||
# to update the autonat reachability
|
||||
let info = await node2.client.info()
|
||||
|
||||
check not info.isErr
|
||||
|
||||
await node1.client.connectPeer(
|
||||
info.get()["id"].getStr(), info.get()["addrs"].getElems().mapIt(it.getStr())
|
||||
)
|
||||
|
||||
check eventuallySafe(
|
||||
(await node1.client.natReachability()).get() == "Reachable",
|
||||
(await node2.client.natReachability()).get() == "Reachable",
|
||||
timeout = 30_000,
|
||||
pollInterval = 500,
|
||||
)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user