Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dht provides still broken. #488

Closed
jbenet opened this issue Jan 3, 2015 · 9 comments
Closed

dht provides still broken. #488

jbenet opened this issue Jan 3, 2015 · 9 comments

Comments

@jbenet
Copy link
Member

jbenet commented Jan 3, 2015

There's still something wrong with providers.

segmented for your viewing pleasure:


server_1    | <peer.ID Qmbtc2> putProvider: <peer.ID QmNXuB> for QmcdNXWTJeBd4fKq1vsUWhP8Uy2azPXiRcVozsNgwzP1sf ([/ip4/172.17.0.136/tcp/4021 /ip6/fe80::42:acff:fe11:88/tcp/4021 /ip4/172.17.0.136/udp/4022/utp /ip6/fe80::42:acff:fe11:88/udp/4022/utp])
bootstrap_1 | <peer.ID QmNXuB> adding <peer.ID Qmbtc2> as a provider for 'QmcdNXWTJeBd4fKq1vsUWhP8Uy2azPXiRcVozsNgwzP1sf'

server_1    | <peer.ID Qmbtc2> putProvider: <peer.ID QmNXuB> for QmPpAnjeYyy9y4UNZAihtsw8fTA3wh8bS3kukYAiAAdpeq ([/ip4/172.17.0.136/tcp/4021 /ip6/fe80::42:acff:fe11:88/tcp/4021 /ip4/172.17.0.136/udp/4022/utp /ip6/fe80::42:acff:fe11:88/udp/4022/utp])
bootstrap_1 | <peer.ID QmNXuB> adding <peer.ID Qmbtc2> as a provider for 'QmPpAnjeYyy9y4UNZAihtsw8fTA3wh8bS3kukYAiAAdpeq'

client_1    | <peer.ID Qmbtc3> FindProviders QmcdNXWTJeBd4fKq1vsUWhP8Uy2azPXiRcVozsNgwzP1sf
client_1    | <peer.ID Qmbtc3> findProviders(QmcdNXWTJeBd4fKq1vsUWhP8Uy2azPXiRcVozsNgwzP1sf).Query(<peer.ID QmNXuB>):  begin
bootstrap_1 | <peer.ID QmNXuB> handleGetProviders(<peer.ID Qmbtc3>, QmcdNXWTJeBd4fKq1vsUWhP8Uy2azPXiRcVozsNgwzP1sf):  begin
bootstrap_1 | <peer.ID QmNXuB> handleGetProviders(<peer.ID Qmbtc3>, QmcdNXWTJeBd4fKq1vsUWhP8Uy2azPXiRcVozsNgwzP1sf):  have 1 providers: [{<peer.ID Qmbtc2> [/ip6/fe80::42:acff:fe11:88/tcp/4021 /ip4/172.17.0.136/udp/4022/utp /ip6/fe80::42:acff:fe11:88/udp/4022/utp /ip4/172.17.0.136/tcp/4021]}]
bootstrap_1 | <peer.ID QmNXuB> handleGetProviders(<peer.ID Qmbtc3>, QmcdNXWTJeBd4fKq1vsUWhP8Uy2azPXiRcVozsNgwzP1sf):  end
client_1    | <peer.ID Qmbtc3> findProviders(QmcdNXWTJeBd4fKq1vsUWhP8Uy2azPXiRcVozsNgwzP1sf).Query(<peer.ID QmNXuB>):  got 1 provider entries
client_1    | <peer.ID Qmbtc3> findProviders(QmcdNXWTJeBd4fKq1vsUWhP8Uy2azPXiRcVozsNgwzP1sf).Query(<peer.ID QmNXuB>):  got 1 provider entries decoded
client_1    | <peer.ID Qmbtc3> findProviders(QmcdNXWTJeBd4fKq1vsUWhP8Uy2azPXiRcVozsNgwzP1sf).Query(<peer.ID QmNXuB>):  got provider: {<peer.ID Qmbtc2> [/ip6/fe80::42:acff:fe11:88/tcp/4021 /ip4/172.17.0.136/udp/4022/utp /ip6/fe80::42:acff:fe11:88/udp/4022/utp /ip4/172.17.0.136/tcp/4021]}
client_1    | <peer.ID Qmbtc3> findProviders(QmcdNXWTJeBd4fKq1vsUWhP8Uy2azPXiRcVozsNgwzP1sf).Query(<peer.ID QmNXuB>):  using provider: {<peer.ID Qmbtc2> [/ip6/fe80::42:acff:fe11:88/tcp/4021 /ip4/172.17.0.136/udp/4022/utp /ip6/fe80::42:acff:fe11:88/udp/4022/utp /ip4/172.17.0.136/tcp/4021]}
client_1    | <peer.ID Qmbtc3> findProviders(QmcdNXWTJeBd4fKq1vsUWhP8Uy2azPXiRcVozsNgwzP1sf).Query(<peer.ID QmNXuB>):  got closer peers: []
client_1    | <peer.ID Qmbtc3> findProviders(QmcdNXWTJeBd4fKq1vsUWhP8Uy2azPXiRcVozsNgwzP1sf).Query(<peer.ID QmNXuB>):  end
client_1    | FindProviders Query error: routing: not found

Somehow, even though client_1 got a provider, it still chose not to use it (FindProviders Query error: routing: not found)

@jbenet
Copy link
Member Author

jbenet commented Jan 3, 2015

cc @whyrusleeping

@jbenet
Copy link
Member Author

jbenet commented Jan 3, 2015

More:

  • The FindProviders Query error: routing: not found is a misleading debug log. the query ends with an error because it didnt get enough providers. can't get to return dhtQueryResult{success: true}.
  • the ... using provider: ... log is written right before it sends it on the outgoing channel.
  • so, ... is bitswap just not using it?? -- we require additional logs.

@jbenet
Copy link
Member Author

jbenet commented Jan 3, 2015

Found 3 classes of errors (these repeat):

  1. https://github.com/jbenet/ipfs-dockertest-logs/tree/master/log6 -- client_1 bitswap fails to send wantlist for second file
  2. https://github.com/jbenet/ipfs-dockertest-logs/tree/master/log7 -- server_1 fails to provide all blocks.
  3. https://github.com/jbenet/ipfs-dockertest-logs/tree/master/log8 -- Qmbtc2 should receive addrs from Qmbtc3. Somehow it's not. the transport may be broken.

To make sure it's not utp, i'll try rerunning without utp.

@jbenet
Copy link
Member Author

jbenet commented Jan 3, 2015

.... yep. some (seems log7 and log8) of it was utp.


@whyrusleeping wins again.

@jbenet
Copy link
Member Author

jbenet commented Jan 3, 2015

But, i just reproduced log6 in https://github.com/jbenet/ipfs-dockertest-logs/tree/master/log9 and https://github.com/jbenet/ipfs-dockertest-logs/tree/master/log10

So that (bitswap halting) is still a problem.

@whyrusleeping
Copy link
Member

I'll take a look at the bitswap stuff, see if anything looks particularly offensive

@btc
Copy link
Contributor

btc commented Jan 3, 2015

I'm unable to test this hypothesis myself (no landline Internet), but the rebroadcast delay is set to ten seconds. This may explain why the server doesn't receive the want list in time.

@whyrusleeping
Copy link
Member

@briantigerchow Im not sure that would be the issue, the context that is timing out is an entire minute...

@jbenet
Copy link
Member Author

jbenet commented Jan 5, 2015

fixed the last one-- was a map indeterminism problem...

@jbenet jbenet closed this as completed Jan 5, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants