Changeset: d98ed8847c7c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d98ed8847c7c
Modified Files:
        tools/merovingian/ChangeLog.Jul2021
        tools/merovingian/daemon/merovingian.c
Branch: Jul2021
Log Message:

When logging "the rest" of the output, don't repeat message indefinitely.


diffs (59 lines):

diff --git a/tools/merovingian/ChangeLog.Jul2021 
b/tools/merovingian/ChangeLog.Jul2021
--- a/tools/merovingian/ChangeLog.Jul2021
+++ b/tools/merovingian/ChangeLog.Jul2021
@@ -1,3 +1,7 @@
 # ChangeLog file for sql/src/backends/monet5/merovingian
 # This file is updated with mchangelog
 
+* Wed Aug 24 2022 Sjoerd Mullender <sjo...@acm.org>
+- In certain cases a log message was logged over and over again.
+  This has been fixed.
+
diff --git a/tools/merovingian/daemon/merovingian.c 
b/tools/merovingian/daemon/merovingian.c
--- a/tools/merovingian/daemon/merovingian.c
+++ b/tools/merovingian/daemon/merovingian.c
@@ -137,6 +137,7 @@ logFD(dpair dp, int fd, const char *type
        time_t now;
        char buf[8096];
        ssize_t len = 0;
+       ssize_t last = 0;
        char *p, *q;
        struct tm *tmp;
        char mytime[20];
@@ -147,8 +148,10 @@ logFD(dpair dp, int fd, const char *type
                        ssize_t n;
                  repeat:
                        n = read(dp->input[fd].fd, buf + len, sizeof(buf) - len 
- 1);
-                       if (n <= 0)
+                       if (n <= 0) {
+                               rest = false;
                                break;
+                       }
                        len += n;
                        buf[len] = 0;
                } while (buf[len - 1] != '\n' && len < (ssize_t) sizeof(buf) - 
1);
@@ -157,7 +160,7 @@ logFD(dpair dp, int fd, const char *type
                now = time(NULL);
                tmp = localtime(&now);
                strftime(mytime, sizeof(mytime), "%Y-%m-%d %H:%M:%S", tmp);
-               for (q = buf; *q; q = p + 1) {
+               for (q = buf + last; *q; q = p + 1) {
                        p = strchr(q, '\n');
                        if (p == NULL) {
                                if (q > buf) {
@@ -165,6 +168,7 @@ logFD(dpair dp, int fd, const char *type
                                         * just continue reading */
                                        len = strlen(q);
                                        memmove(buf, q, len);
+                                       last = 0;
                                        goto repeat;
                                }
                                /* we must have received a ridiculously long 
line */
@@ -175,6 +179,7 @@ logFD(dpair dp, int fd, const char *type
                                                mytime, type, dbname, pid, q);
                                break;
                        }
+                       last = p + 1 - buf;
                        if (p == q) {
                                /* empty line, don't bother */
                                continue;
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to