Changeset: eaa1651edbfc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=eaa1651edbfc
Modified Files:
        gdk/gdk_tracer.c
        gdk/gdk_utils.c
Branch: Oct2020
Log Message:

Merged with Jun2020


diffs (101 lines):

diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -168,6 +168,8 @@ gdk_return GDKssort_rev(void *restrict h
 gdk_return GDKssort(void *restrict h, void *restrict t, const void *restrict 
base, size_t n, int hs, int ts, int tpe)
        __attribute__((__warn_unused_result__))
        __attribute__((__visibility__("hidden")));
+void GDKtracer_init(void)
+       __attribute__((__visibility__("hidden")));
 gdk_return GDKunlink(int farmid, const char *dir, const char *nme, const char 
*extension)
        __attribute__((__visibility__("hidden")));
 void HASHfree(BAT *b)
diff --git a/gdk/gdk_tracer.c b/gdk/gdk_tracer.c
--- a/gdk/gdk_tracer.c
+++ b/gdk/gdk_tracer.c
@@ -9,6 +9,7 @@
 #include "monetdb_config.h"
 #include "gdk.h"
 #include "gdk_tracer.h"
+#include "gdk_private.h"
 
 #define DEFAULT_ADAPTER BASIC
 #define DEFAULT_LOG_LEVEL M_ERROR
@@ -143,6 +144,13 @@ set_level_for_layer(int layer, int lvl)
        const char *tok = NULL;
        log_level_t level = (log_level_t) lvl;
 
+       // make sure we initialize before changing the component level
+       MT_lock_set(&lock);
+       if (file_name[0] == 0) {
+               _GDKtracer_init_basic_adptr();
+       }
+       MT_lock_unset(&lock);
+
        for (int i = 0; i < COMPONENTS_COUNT; i++) {
                if (layer == MDB_ALL) {
                        lvl_per_component[i] = level;
@@ -286,6 +294,13 @@ GDKtracer_set_component_level(const char
                return GDK_FAIL;
        }
 
+       // make sure we initialize before changing the component level
+       MT_lock_set(&lock);
+       if (file_name[0] == 0) {
+               _GDKtracer_init_basic_adptr();
+       }
+       MT_lock_unset(&lock);
+
        lvl_per_component[component] = level;
 
        return GDK_SUCCEED;
@@ -400,6 +415,17 @@ GDKtracer_reset_adapter(void)
        return GDK_SUCCEED;
 }
 
+static bool add_ts;            /* add timestamp to error message to stderr */
+
+void
+GDKtracer_init(void)
+{
+#ifdef _MSC_VER
+       add_ts = GetFileType(GetStdHandle(STD_ERROR_HANDLE)) != FILE_TYPE_PIPE;
+#else
+       add_ts = isatty(2) || lseek(2, 0, SEEK_CUR) != (off_t) -1 || errno != 
ESPIPE;
+#endif
+}
 
 void
 GDKtracer_log(const char *file, const char *func, int lineno,
@@ -475,7 +501,9 @@ GDKtracer_log(const char *file, const ch
        }
 
        if (level == M_CRITICAL || level == M_ERROR || level == M_WARNING) {
-               fprintf(stderr, "#%s: %s: %s%s%s%s\n",
+               fprintf(stderr, "#%s%s%s: %s: %s%s%s%s\n",
+                       add_ts ? ts : "",
+                       add_ts ? ": " : "",
                        MT_thread_getname(), func, GDKERROR,
                        msg, syserr ? ": " : "",
                        syserr ? syserr : "");
@@ -484,7 +512,8 @@ GDKtracer_log(const char *file, const ch
        }
        MT_lock_set(&lock);
        if (file_name[0] == 0) {
-               _GDKtracer_init_basic_adptr();
+               MT_lock_unset(&lock);
+               return;
        }
        MT_lock_unset(&lock);
        if (syserr)
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -807,6 +807,7 @@ GDKinit(opt *set, int setlen, bool embed
                /* BBP was locked by BBPexit() */
                BBPunlock();
        }
+       GDKtracer_init();
        errno = 0;
        if (!GDKinmemory() && !GDKenvironment(dbpath))
                return GDK_FAIL;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to