1. 29 Jan, 2019 1 commit
    • Raúl Kripalani's avatar
      introduce adaptive queue for DHT dials. · 5e74c4a6
      Raúl Kripalani authored
      This patch introduces an adaptive dial queue that spawns a dynamically sized
      set of goroutines to preemptively stage dials for later handoff to the DHT
      protocol for RPC. It identifies backpressure on both ends (dial consumers and
      dial producers), and takes compensating action by adjusting the worker pool.
      
      We start with `DialQueueMinParallelism` number of workers (6), and scale up
      and down based on demand and supply of dialled peers.
      
      The following events trigger scaling:
      - we scale up when we can't immediately return a successful dial to a new
        consumer.
      - we scale down when we've been idle for a while waiting for new dial
        attempts.
      - we scale down when we complete a dial and realise nobody was waiting for it.
      
      Dialler throttling (e.g. FD limit exceeded) is a concern, as we can easily
      spin up more workers to compensate, and end up adding fuel to the fire. Since
      we have no deterministic way to detect this for now, we hard-limit concurrency
      to `DialQueueMaxParallelism` (20).
      5e74c4a6
  2. 09 Jan, 2019 1 commit
    • Gustvo Chain's avatar
      Remove outdated package documentation · 70d5802f
      Gustvo Chain authored
      Both, dht.go and dht_bootstrap.go duplicate the package documentation.
      The whole block had been moved to doc.go
      
      Also query.go provides documentation for query package but now it
      belongs to dht package, so it's been removed.
      70d5802f
  3. 27 Dec, 2018 1 commit
    • Steven Allen's avatar
      fix a potential DHT query hang · eb3e7fe9
      Steven Allen authored
      Without this, one of the workers may hang when trying to re-grab the rate-limit
      after dialing. I believe this may be what's causing some of our DHT requests to
      stall (evidence: massive goroutine buildup on the gateways).
      eb3e7fe9
  4. 07 Jun, 2018 2 commits
  5. 01 Apr, 2018 1 commit
  6. 06 Mar, 2017 1 commit
    • Jeromy's avatar
      Fixes for dht findpeer queries · 00b46e0c
      Jeromy authored
      First, we use Alpha instead of K as the number of peers we grab from the
      routing table (as per the kademlia paper).
      
      Second, we don't use a size limited set for the 'GetClosestPeers' query.
      We're going to process more than K peers before we find the K closest
      peers.
      
      Third, Change GetClosestPeers to actually return the K Closest peers,
      not a hodge podge of peers that it found on the way to finding the
      closest peers.
      00b46e0c
  7. 05 Oct, 2016 1 commit
  8. 30 Sep, 2016 2 commits
  9. 02 Sep, 2016 1 commit
  10. 21 Aug, 2016 1 commit
  11. 24 Jun, 2016 1 commit
  12. 11 Jun, 2016 1 commit
  13. 09 Jun, 2016 1 commit
  14. 01 Jun, 2016 1 commit
  15. 17 May, 2016 1 commit
  16. 10 May, 2016 1 commit
  17. 04 May, 2016 1 commit
  18. 17 Apr, 2016 2 commits
  19. 11 Apr, 2016 1 commit
  20. 07 Apr, 2016 1 commit
  21. 30 Mar, 2016 1 commit
  22. 09 Mar, 2016 1 commit
  23. 13 Feb, 2016 2 commits
  24. 31 Jan, 2016 2 commits
  25. 30 Jan, 2016 3 commits
  26. 10 Nov, 2015 1 commit
  27. 08 Nov, 2015 1 commit
  28. 05 Nov, 2015 1 commit
  29. 27 Oct, 2015 1 commit
  30. 03 Oct, 2015 1 commit
  31. 29 Sep, 2015 1 commit
    • Jeromy's avatar
      Fix dht queries · badc7388
      Jeromy authored
      Queries previously would sometimes only query three (alpha value) peers
      before halting the operation. This PR changes the number of peers
      grabbed from the routing table to start a query to K.
      
      Dht nodes would also not respond with enough peers, as per the kademlia
      paper, this has been changed to from 4 to 'K'.
      
      The query mechanism itself also was flawed in that it would pull all the
      peers it had yet to query out of the queue and 'start' the query for
      them. The concurrency rate limiting was done inside the 'queryPeer'
      method after the goroutine was spawned. This did not allow for peers
      receiver from query replies to be properly queried in order of distance.
      
      License: MIT
      Signed-off-by: default avatarJeromy <jeromyj@gmail.com>
      badc7388
  32. 15 Sep, 2015 1 commit
  33. 09 Sep, 2015 1 commit