Changeset: bb7c6f07af0f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/bb7c6f07af0f
Modified Files:
        gdk/gdk_tracer.c
        tools/monetdbe/monetdbe.c
Branch: Jul2021
Log Message:

At an embedded connection set the GDK error buffer and use it to retrieve GDK 
errors, but don't print to the tracer file


diffs (56 lines):

diff --git a/gdk/gdk_tracer.c b/gdk/gdk_tracer.c
--- a/gdk/gdk_tracer.c
+++ b/gdk/gdk_tracer.c
@@ -454,9 +454,6 @@ GDKtracer_log(const char *file, const ch
              const char *syserr,
              const char *fmt, ...)
 {
-       if ((adapter_t) ATOMIC_GET(&cur_adapter) == MBEDDED)
-               return;
-
        int bytes_written;
        char buffer[512];       /* should be plenty big enough for a message */
        va_list va;
@@ -501,7 +498,8 @@ GDKtracer_log(const char *file, const ch
        }
        va_end(va);
        if (bytes_written < 0) {
-               GDK_TRACER_EXCEPTION("Failed to write logs\n");
+               if ((adapter_t) ATOMIC_GET(&cur_adapter) != MBEDDED)
+                       GDK_TRACER_EXCEPTION("Failed to write logs\n");
                return;
        }
        char *p;
@@ -521,6 +519,10 @@ GDKtracer_log(const char *file, const ch
                }
        }
 
+       /* don't write to file on embedded case, but set the GDK error buffer */
+       if ((adapter_t) ATOMIC_GET(&cur_adapter) == MBEDDED)
+               return;
+
        if (level <= M_WARNING) {
                fprintf(stderr, "#%s%s%s: %s: %s%s%s%s\n",
                        add_ts ? ts : "",
diff --git a/tools/monetdbe/monetdbe.c b/tools/monetdbe/monetdbe.c
--- a/tools/monetdbe/monetdbe.c
+++ b/tools/monetdbe/monetdbe.c
@@ -546,6 +546,18 @@ monetdbe_open_internal(monetdbe_database
                mdbe->msg = createException(MAL, 
"monetdbe.monetdbe_open_internal", "Failed to initialize client");
                goto cleanup;
        }
+       /* MCinitClientThread can't be exported on Jul2021, so use this 
workaround for now */
+       mdbe->c->errbuf = GDKerrbuf;
+       if (mdbe->c->errbuf == NULL) {
+               char *n = GDKzalloc(GDKMAXERRLEN);
+               if ( n == NULL){
+                       mdbe->msg = createException(MAL, 
"monetdbe.monetdbe_open_internal", MAL_MALLOC_FAIL);
+                       goto cleanup;
+               }
+               GDKsetbuf(n);
+               mdbe->c->errbuf = GDKerrbuf;
+       } else
+               mdbe->c->errbuf[0] = 0;
        mdbe->c->curmodule = mdbe->c->usermodule = userModule();
        mdbe->c->workerlimit = monetdbe_workers_internal(mdbe, opts);
        mdbe->c->memorylimit = monetdbe_memory_internal(mdbe, opts);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to