holochain / n3h

nodejs implementation of holochain networking / p2p backend process
48 stars 7 forks source link

enable rough handling of node drops #69

Closed Connoropolous closed 5 years ago

Connoropolous commented 5 years ago

fixes #66 fixes #62

these are not long term fixes, the handling of node drops needs to be done in a more robust way obviously

Connoropolous commented 5 years ago

If we can make this fix #62 as well I'll be extremely happy.

With our new changes, here's what I get when a node drops

TIMEOUT gossiping with peer HcSCJTBQNWyn4ioi5x7bGxfJQyUneghfjm6KFGO8qPKtmy7jOtms3YJi7Ikpatr
2019-03-29 07:16:00:holo-chat: debug/scheduled_jobs: tick
@@ fixme connection error catch @@ Error: timeout
    at Track.track (/Users/connor/Documents/code/holochain/ready-chat-mac/n3hfolder/n3h/lib/n3h-common/track.js:74:27)
    at P2pBackendHackmodePeer._ensureConnection (/Users/connor/Documents/code/holochain/ready-chat-mac/n3hfolder/n3h/lib/hackmode/p2p-backend-hackmode-peer.js:255:39)
    at P2pBackendHackmodePeer._ensureCIdForPeerAddress (/Users/connor/Documents/code/holochain/ready-chat-mac/n3hfolder/n3h/lib/hackmode/p2p-backend-hackmode-peer.js:283:21)
    at <anonymous>
Handle Dht Event Error { type: 'gossipTo',
  peerList:
   [ 'HcSCJTBQNWyn4ioi5x7bGxfJQyUneghfjm6KFGO8qPKtmy7jOtms3YJi7Ikpatr' ],
  bundle: 'k6lsb2NIYXNoZXOsci5uMHltY2U1a3hhxEIGYcT3zE/Myzh9s8PUFGDGIwTDxXBY07TfLOb8o8SgE3sqVVTzdXDS4tWPxCqBqwzBUpmifwK2CkvjDFJYJEHhfUM=' } Error: timeout
    at Track.track (/Users/connor/Documents/code/holochain/ready-chat-mac/n3hfolder/n3h/lib/n3h-common/track.js:74:27)
    at P2pBackendHackmodePeer._ensureConnection (/Users/connor/Documents/code/holochain/ready-chat-mac/n3hfolder/n3h/lib/hackmode/p2p-backend-hackmode-peer.js:255:39)
    at P2pBackendHackmodePeer._ensureCIdForPeerAddress (/Users/connor/Documents/code/holochain/ready-chat-mac/n3hfolder/n3h/lib/hackmode/p2p-backend-hackmode-peer.js:283:21)
    at <anonymous>
Error occured in p2p network module, on tick: TransportError("Os { code: 61, kind: ConnectionRefused, message: \"Connection refused\" }")
Connoropolous commented 5 years ago

If I remove the process.exit(1) from the Handle Dht Event Error location, then I get

TIMEOUT gossiping with peer HcSci3fE65abz9UmtxHxqfaInFe7yo7nj9T5W6ZyJv75J8skipnw6DH5JNs59wi
@@ fixme connection error catch @@ Error: timeout
    at Track.track (/Users/connor/Documents/code/holochain/ready-chat-mac/n3hfolder/n3h/lib/n3h-common/track.js:74:27)
    at P2pBackendHackmodePeer._ensureConnection (/Users/connor/Documents/code/holochain/ready-chat-mac/n3hfolder/n3h/lib/hackmode/p2p-backend-hackmode-peer.js:255:39)
    at P2pBackendHackmodePeer._ensureCIdForPeerAddress (/Users/connor/Documents/code/holochain/ready-chat-mac/n3hfolder/n3h/lib/hackmode/p2p-backend-hackmode-peer.js:283:21)
    at <anonymous>
Handle Dht Event Error { type: 'gossipTo',
  peerList:
   [ 'HcSci3fE65abz9UmtxHxqfaInFe7yo7nj9T5W6ZyJv75J8skipnw6DH5JNs59wi' ],
  bundle: 'k6lsb2NIYXNoZXOsZS5kZXVxdHl5cDB1xEIGZpyV5dVYkOKt5tNHRIeihffoHn6V0ZbgDeuSGiC+gWw90pEvieWdvs5Qir8zy+ko1uV26TK7hpIFX1kkyLGHRL0=' } Error: timeout
    at Track.track (/Users/connor/Documents/code/holochain/ready-chat-mac/n3hfolder/n3h/lib/n3h-common/track.js:74:27)
    at P2pBackendHackmodePeer._ensureConnection (/Users/connor/Documents/code/holochain/ready-chat-mac/n3hfolder/n3h/lib/hackmode/p2p-backend-hackmode-peer.js:255:39)
    at P2pBackendHackmodePeer._ensureCIdForPeerAddress (/Users/connor/Documents/code/holochain/ready-chat-mac/n3hfolder/n3h/lib/hackmode/p2p-backend-hackmode-peer.js:283:21)
    at <anonymous>
Strict Fail on Unhandled Promise Rejection
Error: timeout
    at Track.track (/Users/connor/Documents/code/holochain/ready-chat-mac/n3hfolder/n3h/lib/n3h-common/track.js:74:27)
    at P2pBackendHackmodePeer._ensureConnection (/Users/connor/Documents/code/holochain/ready-chat-mac/n3hfolder/n3h/lib/hackmode/p2p-backend-hackmode-peer.js:255:39)
    at P2pBackendHackmodePeer._ensureCIdForPeerAddress (/Users/connor/Documents/code/holochain/ready-chat-mac/n3hfolder/n3h/lib/hackmode/p2p-backend-hackmode-peer.js:283:21)
    at <anonymous>
Error occured in p2p network module, on tick: TransportError("Os { code: 61, kind: ConnectionRefused, message: \"Connection refused\" }")
Connoropolous commented 5 years ago

@neonphog can you re-review? I had some new idea after you added stuff about solving for #62 as well, which I added. I couldn't figure out how to write a test for that yet

Connoropolous commented 5 years ago

I did manual testing

neonphog commented 5 years ago

This looks awesome @Connoropolous - I'd like to mess with it locally a bit, but I can do that on my own early next week. I'm going to go ahead and merge this to unblock folks. Thanks for working on this!

Connoropolous commented 5 years ago

Ok sweet. It was challenging but worth it. As always I learned a lot :p