Page MenuHomePhabricator

Merge #17251: net: SocketHandler logs peer id for close and disconnect
ClosedPublic

Authored by jasonbcox on Wed, Oct 14, 20:52.

Details

Summary

04dbdd613fe5c0a742de915e07553614cd4cbf46 [net] SocketHandler: log peer id for close and disconnect (Sjors Provoost)

Pull request description:

When combined with `-logips` this makes it easier to diagnose disconnects.

To test on macOS, find a connection you want to disrupt:

```
lsof -nP -iTCP:8333 -sTCP:ESTABLISHED
```

To shut it down gracefully you can use tcpkill or this Python script: https://github.com/google/tcp_killer

The log should say:

```
2019-10-25T13:26:55Z socket closed for peer=1
2019-10-25T13:26:55Z disconnecting peer=1
2019-10-25T13:26:55Z Cleared nodestate for peer=1
```

To shut it down ungracefully I made a patch to the above script, adding a `-force` argument. _Careful, this may result in data corruption_. Then the log should say:

```
2019-10-25T13:39:57Z socket select error Bad file descriptor (9)
2019-10-25T13:39:57Z socket recv error for peer=0: Bad file descriptor (9)
2019-10-25T13:39:57Z disconnecting peer=0
2019-10-25T13:39:57Z Socket close failed: 35. Error: Bad file descriptor (9)
2019-10-25T13:39:57Z Cleared nodestate for peer=0
```

Backport of Core PR17251

Test Plan

ninja check check-functional

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.