Merge pull request #3469 from nspcc-dev/warn

logs: distinguish WARN and INFO for `peer disconnected`
This commit is contained in:
Anna Shaleva 2024-06-05 15:39:52 +03:00 committed by GitHub
commit cf4d4a2611
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -44,12 +44,13 @@ const (
) )
var ( var (
errAlreadyConnected = errors.New("already connected") errAlreadyConnected = errors.New("already connected")
errIdenticalID = errors.New("identical node id") errIdenticalID = errors.New("identical node id")
errInvalidNetwork = errors.New("invalid network") errInvalidNetwork = errors.New("invalid network")
errMaxPeers = errors.New("max peers reached") errMaxPeers = errors.New("max peers reached")
errServerShutdown = errors.New("server shutdown") errServerShutdown = errors.New("server shutdown")
errInvalidInvType = errors.New("invalid inventory type") errInvalidInvType = errors.New("invalid inventory type")
errBlocksRequestFailed = errors.New("blocks request failed")
) )
type ( type (
@ -512,10 +513,17 @@ func (s *Server) run() {
if s.peers[drop.peer] { if s.peers[drop.peer] {
delete(s.peers, drop.peer) delete(s.peers, drop.peer)
s.lock.Unlock() s.lock.Unlock()
s.log.Warn("peer disconnected", if errors.Is(drop.reason, errInvalidInvType) || errors.Is(drop.reason, errStateMismatch) || errors.Is(drop.reason, errBlocksRequestFailed) {
zap.Stringer("addr", drop.peer.RemoteAddr()), s.log.Warn("peer disconnected",
zap.Error(drop.reason), zap.Stringer("addr", drop.peer.RemoteAddr()),
zap.Int("peerCount", s.PeerCount())) zap.Error(drop.reason),
zap.Int("peerCount", s.PeerCount()))
} else {
s.log.Info("peer disconnected",
zap.Stringer("addr", drop.peer.RemoteAddr()),
zap.Error(drop.reason),
zap.Int("peerCount", s.PeerCount()))
}
if errors.Is(drop.reason, errIdenticalID) { if errors.Is(drop.reason, errIdenticalID) {
s.discovery.RegisterSelf(drop.peer) s.discovery.RegisterSelf(drop.peer)
} else { } else {
@ -793,7 +801,7 @@ func (s *Server) requestBlocksOrHeaders(p Peer) error {
} }
err := s.requestBlocks(bq, p) err := s.requestBlocks(bq, p)
if err != nil { if err != nil {
return err return fmt.Errorf("%w: %w", errBlocksRequestFailed, err)
} }
if requestMPTNodes { if requestMPTNodes {
return s.requestMPTNodes(p, s.stateSync.GetUnknownMPTNodesBatch(payload.MaxMPTHashesCount)) return s.requestMPTNodes(p, s.stateSync.GetUnknownMPTNodesBatch(payload.MaxMPTHashesCount))
@ -1345,7 +1353,7 @@ func (s *Server) handleMessage(peer Peer, msg *Message) error {
if peer.Handshaked() { if peer.Handshaked() {
if inv, ok := msg.Payload.(*payload.Inventory); ok { if inv, ok := msg.Payload.(*payload.Inventory); ok {
if !inv.Type.Valid(s.chain.P2PSigExtensionsEnabled()) || len(inv.Hashes) == 0 { if !inv.Type.Valid(s.chain.P2PSigExtensionsEnabled()) || len(inv.Hashes) == 0 {
return errInvalidInvType return fmt.Errorf("%w: %s", errInvalidInvType, inv.Type.String())
} }
} }
switch msg.Command { switch msg.Command {