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