mirror of
https://github.com/golang/go
synced 2024-11-22 18:24:48 -07:00
runtime: does not report duplicate errors in netpoll
Prevents storm of error messages if something goes wrong. In the case of issue 5073 the epoll fd was closed by the test. Update #5073. R=golang-dev, r, rsc CC=golang-dev https://golang.org/cl/7966043
This commit is contained in:
parent
9d97b55d38
commit
94599ea745
@ -57,6 +57,7 @@ runtime·netpollclose(int32 fd)
|
||||
G*
|
||||
runtime·netpoll(bool block)
|
||||
{
|
||||
static int32 lasterr;
|
||||
EpollEvent events[128], *ev;
|
||||
int32 n, i, waitms, mode;
|
||||
G *gp;
|
||||
@ -69,8 +70,10 @@ runtime·netpoll(bool block)
|
||||
retry:
|
||||
n = runtime·epollwait(epfd, events, nelem(events), waitms);
|
||||
if(n < 0) {
|
||||
if(n != -EINTR)
|
||||
runtime·printf("epollwait failed with %d\n", -n);
|
||||
if(n != -EINTR && n != lasterr) {
|
||||
lasterr = n;
|
||||
runtime·printf("runtime: epollwait on fd %d failed with %d\n", epfd, -n);
|
||||
}
|
||||
goto retry;
|
||||
}
|
||||
gp = nil;
|
||||
|
@ -71,6 +71,7 @@ runtime·netpollclose(int32 fd)
|
||||
G*
|
||||
runtime·netpoll(bool block)
|
||||
{
|
||||
static int32 lasterr;
|
||||
Kevent events[64], *ev;
|
||||
Timespec ts, *tp;
|
||||
int32 n, i;
|
||||
@ -88,8 +89,10 @@ runtime·netpoll(bool block)
|
||||
retry:
|
||||
n = runtime·kevent(kq, nil, 0, events, nelem(events), tp);
|
||||
if(n < 0) {
|
||||
if(n != -EINTR)
|
||||
runtime·printf("kqueue failed with %d\n", -n);
|
||||
if(n != -EINTR && n != lasterr) {
|
||||
lasterr = n;
|
||||
runtime·printf("runtime: kevent on fd %d failed with %d\n", kq, -n);
|
||||
}
|
||||
goto retry;
|
||||
}
|
||||
for(i = 0; i < n; i++) {
|
||||
|
Loading…
Reference in New Issue
Block a user