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 -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to