waku-org / go-waku

Go implementation of Waku v2 protocol
https://waku.org/
Other
116 stars 42 forks source link

bug: peer exchange not retrieving 3rd peer #1047

Closed romanzac closed 6 months ago

romanzac commented 6 months ago

Describe the bug Peer exchange works in my unit test with three hosts: host1 being a retrieving host, host2 to be retrieved by host1 host3 is a client connecting to host1

When I check the peerstore on host3 after the peer exchange finished, I cannot find host2.ID.

To Reproduce Check out https://github.com/waku-org/go-waku/pull/1046/commits/71878e3ee7eb1c60996b9ee35a1d3e9e1db772f4 cd go-waku/waku/v2/protocol/peer_exchange go test -run TestRetrieveProvidePeerExchangeWithPM

Expected behavior Peerstore on host3 contains info about host2 after the peer exchange. Documentation mentions Alice should receive list of ENRs, however I don't see in the code how can I obtain this list from PeerConnectionStrategy utility. https://docs.waku.org/learn/concepts/peer-exchange/

Logs

roman@Brumla peer_exchange % go test -run TestRetrieveProvidePeerExchangeWithPM
2024-03-07T21:52:06.738+0800    WARN    p2p-config  config/config.go:304    rcmgr limit conflicts with connmgr limit: conn manager high watermark limit: 192, exceeds the system connection limit of: 1
2024-03-07T21:52:06.746+0800    WARN    p2p-config  config/config.go:304    rcmgr limit conflicts with connmgr limit: conn manager high watermark limit: 192, exceeds the system connection limit of: 1
2024-03-07T21:52:06.749+0800    WARN    p2p-config  config/config.go:304    rcmgr limit conflicts with connmgr limit: conn manager high watermark limit: 192, exceeds the system connection limit of: 1
2024-03-07T21:52:06.764+0800    INFO    gowaku.discv5   discv5/discover.go:190  started Discovery V5    {"listening": "[::]:52646", "advertising": "127.0.0.1:52645"}
2024-03-07T21:52:06.764+0800    INFO    gowaku.discv5   discv5/discover.go:193  Discovery V5: discoverable ENR  {"enr": "enr:-Ji4QD98__hPYRlttCdQcdpvnt3H0P2e4Eoy_ySk0EUAFSSjdz7hlT7Ykjvqg6KWWMeqOaDNd3KPCEX6mYgz4cE6LwyGAY4ZL35ZgmlkgnY0gmlwhH8AAAGJc2VjcDI1NmsxoQML8-Z1aiHgQ9KhANBWb-dEGicDTPpo45AHTCkGfMYoGoN0Y3CCzaWDdWRwgs2mhXdha3UyAQ"}
2024-03-07T21:52:06.766+0800    INFO    gowaku.discv5   discv5/discover.go:190  started Discovery V5    {"listening": "[::]:52648", "advertising": "127.0.0.1:52647"}
2024-03-07T21:52:06.766+0800    INFO    gowaku.discv5   discv5/discover.go:193  Discovery V5: discoverable ENR  {"enr": "enr:-Ji4QFgbcOWGOoC2iROUonvdoe1m-Qjo76d754NFwNaQzK79TCeHnKXwVfahfO9hcapUeSzNR6T71w5BgaTfSBTljuCGAY4ZL35egmlkgnY0gmlwhH8AAAGJc2VjcDI1NmsxoQPfHgO_TAQD1tGkJicv7Pqc9DZq6cseerPCzj0c3pZ9O4N0Y3CCzaeDdWRwgs2ohXdha3UyAQ"}
2024-03-07T21:52:06.766+0800    INFO    gowaku  peermanager/peer_manager.go:189 PeerManager init values {"maxConnections": 10, "maxRelayPeers": 8, "outRelayPeersTarget": 10, "inRelayPeersTarget": -2, "maxPeers": 20}
2024-03-07T21:52:06.766+0800    INFO    gowaku.wakupx   peer_exchange/protocol.go:83    Peer exchange protocol started
2024-03-07T21:52:06.766+0800    INFO    gowaku.wakupx   peer_exchange/protocol.go:83    Peer exchange protocol started
2024-03-07T21:52:06.766+0800    WARN    gowaku.wakupx   peer_exchange/protocol.go:179   trying to run discovery v5 (for PX) while it's disabled
2024-03-07T21:52:09.766+0800    INFO    gowaku  peer_exchange/waku_peer_exchange_test.go:317    Host1 is    {"peer": "16Uiu2HAmDTeYPDLB5ndubxKvQ2koJKnSbp22ndUAfzLg3XnjrtzV"}
2024-03-07T21:52:09.766+0800    INFO    gowaku  peer_exchange/waku_peer_exchange_test.go:318    Host2 is    {"peer": "16Uiu2HAmTfwp4vKHNDi678qm9GTofYxYzCpRg8DHzrMgMU9QSToG"}
2024-03-07T21:52:09.766+0800    INFO    gowaku  peer_exchange/waku_peer_exchange_test.go:319    Host3 is    {"peer": "16Uiu2HAm3QzaMtTHKg4XLLaK8Yt4TYQD6YezhcivCJDaPvyPBzCb"}
2024-03-07T21:52:09.766+0800    INFO    gowaku  peer_exchange/waku_peer_exchange_test.go:322    Host3 knows before  {"peer": "16Uiu2HAm3QzaMtTHKg4XLLaK8Yt4TYQD6YezhcivCJDaPvyPBzCb"}
2024-03-07T21:52:09.766+0800    INFO    gowaku  peer_exchange/waku_peer_exchange_test.go:330    Connecting to peer  {"/ip4/127.0.0.1/tcp/52645/p2p/16Uiu2HAmDTeYPDLB5ndubxKvQ2koJKnSbp22ndUAfzLg3XnjrtzV": "to provide 1 peer"}
2024-03-07T21:52:09.766+0800    INFO    gowaku.peer-manager peermanager/peer_manager.go:578 adding peer to service slots    {"peer": "16Uiu2HAmDTeYPDLB5ndubxKvQ2koJKnSbp22ndUAfzLg3XnjrtzV", "service": "/vac/waku/peer-exchange/2.0.0-alpha1"}
2024-03-07T21:52:09.769+0800    INFO    gowaku.peer-manager peermanager/peer_manager.go:471 adding peer to peerstore    {"peer": "16Uiu2HAmDTeYPDLB5ndubxKvQ2koJKnSbp22ndUAfzLg3XnjrtzV"}
2024-03-07T21:52:09.793+0800    INFO    gowaku.wakupx   peer_exchange/protocol.go:103   request received    {"peer": "16Uiu2HAm3QzaMtTHKg4XLLaK8Yt4TYQD6YezhcivCJDaPvyPBzCb"}
2024-03-07T21:52:09.793+0800    INFO    gowaku  peer_exchange/shard_lru.go:145  1
2024-03-07T21:52:09.793+0800    INFO    gowaku.wakupx   peer_exchange/client.go:153 connecting to newly discovered peers    {"count": 1}
2024-03-07T21:52:12.794+0800    INFO    gowaku  peer_exchange/waku_peer_exchange_test.go:337    Host3 knows after   {"peer": "16Uiu2HAmDTeYPDLB5ndubxKvQ2koJKnSbp22ndUAfzLg3XnjrtzV"}
2024-03-07T21:52:12.794+0800    INFO    gowaku  peer_exchange/waku_peer_exchange_test.go:337    Host3 knows after   {"peer": "16Uiu2HAm3QzaMtTHKg4XLLaK8Yt4TYQD6YezhcivCJDaPvyPBzCb"}
2024-03-07T21:52:12.796+0800    WARN    gowaku.discv5   discv5/discover.go:487  Discv5 loop stopped
2024-03-07T21:52:12.796+0800    INFO    gowaku.discv5   discv5/discover.go:249  stopped Discovery V5
2024-03-07T21:52:12.797+0800    WARN    gowaku.discv5   discv5/discover.go:487  Discv5 loop stopped
2024-03-07T21:52:12.797+0800    INFO    gowaku.discv5   discv5/discover.go:249  stopped Discovery V5
--- FAIL: TestRetrieveProvidePeerExchangeWithPMAndPeerAddr (6.07s)
    waku_peer_exchange_test.go:339:
            Error Trace:    /Users/roman/sources/waku-org/go-waku/waku/v2/protocol/peer_exchange/waku_peer_exchange_test.go:339
            Error:          Should be true
            Test:           TestRetrieveProvidePeerExchangeWithPMAndPeerAddr
FAIL
exit status 1
FAIL    github.com/waku-org/go-waku/waku/v2/protocol/peer_exchange  6.494s
chaitanyaprem commented 6 months ago

The test code seems to be having some gaps which is causing the test to fail. There is no issue in peerExchange client/server.

I had updated test code locally and verified it. Seems to be working fine.

Suggested changes in the PR to be made for test to succeed.