OSDN Git Service

Fix p2p peer duplicate dail error (#599)
authoryahtoo <yahtoo.ma@gmail.com>
Thu, 12 Apr 2018 03:07:22 +0000 (11:07 +0800)
committerPaladz <yzhu101@uottawa.ca>
Thu, 12 Apr 2018 03:07:22 +0000 (11:07 +0800)
* Fix p2p peer duplicate connection error

* Optimization debug log print

netsync/fetcher.go
netsync/sync.go
p2p/addrbook.go
p2p/connection.go
p2p/switch.go

index ecb7522..dd0b17f 100644 (file)
@@ -138,7 +138,7 @@ func (f *Fetcher) enqueue(peer string, block *types.Block) {
                }
                f.queued[hash] = op
                f.queue.Push(op, -float32(block.Height))
-               log.Info("Queued propagated block.", " peer: ", peer, "number: ", block.Height, "queued: ", f.queue.Size())
+               log.Info("Queued receive mine block.", " peer:", peer, " number:", block.Height, " queued:", f.queue.Size())
        }
 }
 
index 7d4531a..5afc4bc 100644 (file)
@@ -75,6 +75,7 @@ func (sm *SyncManager) syncer() {
 
 // synchronise tries to sync up our local block chain with a remote peer.
 func (sm *SyncManager) synchronise() {
+       log.Info("bk peer num:", sm.blockKeeper.peers.Len(), " sw peer num:", sm.sw.Peers().Size(), " ", sm.sw.Peers().List())
        // Make sure only one goroutine is ever allowed past this point at once
        if !atomic.CompareAndSwapInt32(&sm.synchronising, 0, 1) {
                log.Info("Synchronising ...")
@@ -88,6 +89,7 @@ func (sm *SyncManager) synchronise() {
                return
        }
        if bestHeight > sm.chain.BestBlockHeight() {
+               log.Info("sync peer:", peer.Addr(), " height:", bestHeight)
                sm.blockKeeper.BlockRequestWorker(peer.Key, bestHeight)
        }
 }
index daa4ffe..5339d64 100644 (file)
@@ -168,7 +168,7 @@ func (a *AddrBook) AddAddress(addr *NetAddress, src *NetAddress) {
        log.WithFields(log.Fields{
                "addr": addr,
                "src":  src,
-       }).Info("Add address to book")
+       }).Debug("Add address to book")
        a.addAddress(addr, src)
 }
 
@@ -577,7 +577,7 @@ func (a *AddrBook) addAddress(addr, src *NetAddress) {
        bucket := a.calcNewBucket(addr, src)
        a.addToNewBucket(ka, bucket)
 
-       log.Info("Added new address", "address", addr, "total", a.size())
+       log.Info("Added new address ", "address:", addr, " total:", a.size())
 }
 
 // Make space in the new buckets by expiring the really bad entries.
index 10222eb..5eecebc 100644 (file)
@@ -435,6 +435,7 @@ FOR_LOOP:
                                        "conn":  c,
                                        "error": err,
                                }).Error("Connection failed @ recvRoutine (reading byte)")
+                               c.conn.Close()
                                c.stopForError(err)
                        }
                        break FOR_LOOP
index 4559a30..462aa65 100644 (file)
@@ -2,7 +2,6 @@ package p2p
 
 import (
        "encoding/json"
-       "errors"
        "fmt"
        "math/rand"
        "net"
@@ -15,6 +14,7 @@ import (
        dbm "github.com/tendermint/tmlibs/db"
 
        cfg "github.com/bytom/config"
+       "github.com/bytom/errors"
        "github.com/bytom/p2p/trust"
 )
 
@@ -390,7 +390,6 @@ func (sw *Switch) DialPeerWithAddress(addr *NetAddress, persistent bool) (*Peer,
        }
        log.WithFields(log.Fields{
                "address": addr,
-               "error":   err,
        }).Info("Dialed and added peer")
        return peer, nil
 }
@@ -463,6 +462,10 @@ func (sw *Switch) StopPeerForError(peer *Peer, reason interface{}) {
                                                }).Info("Error reconnecting to peer. Giving up")
                                                return
                                        }
+                                       if errors.Root(err) == ErrSwitchDuplicatePeer {
+                                               log.WithField("error", err).Info("Error reconnecting to peer. ")
+                                               return
+                                       }
                                        log.WithFields(log.Fields{
                                                "retries": i,
                                                "error":   err,