Changeset: e799ff5b1923 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e799ff5b1923
Modified Files:
tools/merovingian/daemon/client.c
tools/merovingian/daemon/controlrunner.c
Branch: Jul2021
Log Message:
Sleep briefly on transient errors in accept().
diffs (40 lines):
diff --git a/tools/merovingian/daemon/client.c
b/tools/merovingian/daemon/client.c
--- a/tools/merovingian/daemon/client.c
+++ b/tools/merovingian/daemon/client.c
@@ -528,6 +528,7 @@ acceptConnections(int socks[3])
case ENOBUFS:
case ENOMEM:
/* transient failures */
+ sleep_ms(500); /* wait a little, maybe it goes
away */
break;
case ECONNABORTED:
/* connection aborted before we began */
diff --git a/tools/merovingian/daemon/controlrunner.c
b/tools/merovingian/daemon/controlrunner.c
--- a/tools/merovingian/daemon/controlrunner.c
+++ b/tools/merovingian/daemon/controlrunner.c
@@ -1259,9 +1259,24 @@ controlRunner(void *d)
free(p);
if (_mero_keep_listening == 0)
break;
- if (errno != EINTR) {
+ switch (errno) {
+ case EMFILE:
+ case ENFILE:
+ case ENOBUFS:
+ case ENOMEM:
+ /* transient failure, wait a little and
continue */
Mfprintf(_mero_ctlerr, "error during accept:
%s",
strerror(errno));
+ sleep_ms(500);
+ break;
+ case EINTR:
+ /* interrupted */
+ break;
+ default:
+ /* anything else */
+ Mfprintf(_mero_ctlerr, "error during accept:
%s",
+ strerror(errno));
+ break;
}
continue;
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]