Changeset: ceba477d7a3e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/ceba477d7a3e Modified Files: tools/merovingian/daemon/handlers.c tools/merovingian/daemon/merovingian.c tools/merovingian/daemon/multiplex-funnel.c Branch: Sep2022 Log Message:
Merge with Jan2022 branch. diffs (106 lines): diff --git a/tools/merovingian/ChangeLog.Jan2022 b/tools/merovingian/ChangeLog.Jan2022 --- a/tools/merovingian/ChangeLog.Jan2022 +++ b/tools/merovingian/ChangeLog.Jan2022 @@ -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/handlers.c b/tools/merovingian/daemon/handlers.c --- a/tools/merovingian/daemon/handlers.c +++ b/tools/merovingian/daemon/handlers.c @@ -298,7 +298,7 @@ childhandler(void) while (p != NULL) { if (p->pid == pid) { /* log everything that's still in the pipes */ - logFD(p, 0, "MSG", p->dbname, (long long int)p->pid, _mero_logfile, 1); + logFD(p, 0, "MSG", p->dbname, (long long int)p->pid, _mero_logfile, true); p->pid = -1; /* indicate the process is dead */ /* close the descriptors */ 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 @@ -139,6 +139,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]; @@ -149,8 +150,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); @@ -159,7 +162,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) { @@ -167,6 +170,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 */ @@ -177,6 +181,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; @@ -299,18 +304,18 @@ logListener(void *x) for (int i = 0; i < nfds; i++) { if (pfd[i].fd == w->input[0].fd && pfd[i].revents & POLLIN) logFD(w, 0, "MSG", w->dbname, - (long long int)w->pid, _mero_logfile, 0); + (long long int)w->pid, _mero_logfile, false); else if (pfd[i].fd == w->input[1].fd && pfd[i].revents & POLLIN) logFD(w, 1, "ERR", w->dbname, - (long long int)w->pid, _mero_logfile, 0); + (long long int)w->pid, _mero_logfile, false); } #else if (FD_ISSET(w->input[0].fd, &readfds) != 0) logFD(w, 0, "MSG", w->dbname, - (long long int)w->pid, _mero_logfile, 0); + (long long int)w->pid, _mero_logfile, false); if (w->input[1].fd != w->input[0].fd && FD_ISSET(w->input[1].fd, &readfds) != 0) logFD(w, 1, "ERR", w->dbname, - (long long int)w->pid, _mero_logfile, 0); + (long long int)w->pid, _mero_logfile, false); #endif w->flag &= ~1; } diff --git a/tools/merovingian/daemon/multiplex-funnel.c b/tools/merovingian/daemon/multiplex-funnel.c --- a/tools/merovingian/daemon/multiplex-funnel.c +++ b/tools/merovingian/daemon/multiplex-funnel.c @@ -866,7 +866,7 @@ multiplexThread(void *d) while (p != NULL) { if (p->type == MEROFUN && strcmp(p->dbname, m->name) == 0) { /* log everything that's still in the pipes */ - logFD(p, 0, "MSG", p->dbname, (long long int)p->pid, _mero_logfile, 1); + logFD(p, 0, "MSG", p->dbname, (long long int)p->pid, _mero_logfile, true); /* remove from the list */ q->next = p->next; /* close the descriptors */ _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org