Changeset: e3fcf43110df for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e3fcf43110df
Added Files:
        gdk/gdk_tracer.c
        gdk/gdk_tracer.h
        monetdb5/modules/mal/Tests/tracer00.malC
        monetdb5/modules/mal/tracer.c
        monetdb5/modules/mal/tracer.h
        monetdb5/modules/mal/tracer.mal
        sql/scripts/81_tracer.sql
Removed Files:
        gdk/gdk_stalker.c
        gdk/gdk_stalker.h
        monetdb5/modules/mal/Tests/stalker00.malC
        monetdb5/modules/mal/stalker.c
        monetdb5/modules/mal/stalker.h
        monetdb5/modules/mal/stalker.mal
        sql/scripts/81_stalker.sql
Modified Files:
        gdk/Makefile.ag
        gdk/gdk_utils.c
        monetdb5/mal/mal_exception.c
        monetdb5/mal/mal_exception.h
        monetdb5/modules/mal/Makefile.ag
        monetdb5/modules/mal/Tests/All
        monetdb5/modules/mal/mal_init.mal
        sql/scripts/Makefile.ag
        tools/mserver/mserver5.c
Branch: mlogger
Log Message:

Replaced calls in mserver5
- Renamed stalker to tracer
- Added macro for tracing logs Tracer()


diffs (truncated from 1724 to 300 lines):

diff --git a/gdk/Makefile.ag b/gdk/Makefile.ag
--- a/gdk/Makefile.ag
+++ b/gdk/Makefile.ag
@@ -8,8 +8,8 @@ MTSAFE
 
 INCLUDES = ../common/options ../common/stream ../common/utils 
$(valgrind_CFLAGS)
 
-lib_gdkstalker = {
-       SOURCES = gdk_stalker.c gdk_stalker.h
+lib_gdktracer = {
+       SOURCES = gdk_tracer.c gdk_tracer.h
 }
 
 lib_gdk = {
@@ -44,7 +44,7 @@ lib_gdk = {
                libbat.rc
        LIBS = ../common/options/libmoptions \
                ../common/utils/libmutils \
-               libgdkstalker \
+               libgdktracer \
                WIN32?../common/stream/libstream \
                WIN32?$(MATH_LIBS) \
                WIN32?$(SOCKET_LIBS) \
@@ -70,7 +70,7 @@ headers_h = {
                gdk_hash.h \
                gdk_system.h \
                gdk_utils.h \
-               gdk_stalker.h
+               gdk_tracer.h
 }
 
 headers_pc = {
diff --git a/gdk/gdk_stalker.c b/gdk/gdk_stalker.c
deleted file mode 100644
--- a/gdk/gdk_stalker.c
+++ /dev/null
@@ -1,341 +0,0 @@
-/*
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0.  If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
- *
- * The stalker is the general logging system for the MonetDB stack.
- * It is modelled after well-known logging schems, eg. Python
- *
- * Internally, the logger uses a dual buffer to capture log messages
- * before they are written to a file. This way we avoid serial execution.
- *
- * The logger files come in two as well, where we switch them 
- * once the logger is full.
- * The logger file format is "stalker_YY-MM-DDTHH:MM:SS_number.log"
- * An option to consider is we need a rotating scheme over 2 files only,
- * Moreover, old log files might be sent in the background to long term 
storage as well.
- */
-
-#include <assert.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-#include "monetdb_config.h"
-#include "gdk.h"
-#include "gdk_stalker.h"
-
-// 0 -> stalker
-// 1 -> secondary_stalker
-static gdk_stalker stalker = { .allocated_size = 0, .id = 0, .lock = 
MT_LOCK_INITIALIZER("GDKstalkerL") };
-static gdk_stalker secondary_stalker = { .allocated_size = 0, .id = 1, .lock = 
MT_LOCK_INITIALIZER("GDKstalkerL2") };
-static ATOMIC_TYPE SELECTED_STALKER_ID = 0;
-
-static bool GDK_STALKER_STOP = false;
-
-static FILE *output_file;
-static int file_size = 0;
-static int file_id = 1;
-
-static ATOMIC_TYPE CUR_LOG_LEVEL = DEFAULT_LOG_LEVEL;
-static ATOMIC_TYPE CUR_FLUSH_LEVEL = DEFAULT_FLUSH_LEVEL;
-
-
-
-// Output error from snprintf of vsnprintf
-static void 
-_GDKstalker_log_output_error(int bytes_written)
-{
-    assert(bytes_written >= 0);
-}
-
-
-// Check if log file is open
-static void 
-_GDKstalker_file_is_open(FILE *file)
-{
-    assert(file);
-}
-
-
-// Prepares a file in order to write the contents of the buffer 
-// when necessary. The file name each time is merovingian_{int}.log
-static void 
-_GDKstalker_create_file(void)
-{
-    char id[INT_MAX_LEN]; 
-    snprintf(id, INT_MAX_LEN, "%d", file_id);
-
-    char file_name[FILENAME_MAX];
-    sprintf(file_name, "%s%c%s%c%s%c%s%s", GDKgetenv("gdk_dbpath"), DIR_SEP, 
FILE_NAME, NAME_SEP, GDKstalker_timestamp(), NAME_SEP, id, ".log");
-
-    output_file = fopen(file_name, "w");
-
-    _GDKstalker_file_is_open(output_file);
-}
-
-
-
-// Candidate for 'gnu_printf'’' format attribute 
[-Werror=suggest-attribute=format]
-static int 
-_GDKstalker_fill_stalker(gdk_stalker *sel_stalker, const char *fmt, va_list 
va) __attribute__ ((format (printf, 2, 0)));
-
-static int 
-_GDKstalker_fill_stalker(gdk_stalker *sel_stalker, const char *fmt, va_list va)
-{
-    // vsnprintf(char *str, size_t count, ...) -> including null terminating 
character
-    int bytes_written = vsnprintf(sel_stalker->buffer + 
sel_stalker->allocated_size, BUFFER_SIZE - sel_stalker->allocated_size, fmt, 
va);
-    _GDKstalker_log_output_error(bytes_written);
-
-    // vsnprintf returned value -> does not include the null terminating 
character
-    return bytes_written++;
-}
-
-
-
-/**
- * 
- * API CALLS
- * 
- */ 
-char*
-GDKstalker_timestamp(void)
-{
-    static char datetime[20];
-    time_t now = time(NULL);
-    struct tm *tmp = localtime(&now);
-    strftime(datetime, sizeof(datetime), "%Y-%m-%d %H:%M:%S", tmp);
-
-    return datetime;
-}
-
-
-gdk_return
-GDKstalker_init(void)
-{
-    _GDKstalker_create_file();
-    return GDK_SUCCEED;
-}
-
-
-gdk_return
-GDKstalker_stop(void)
-{
-    GDK_STALKER_STOP = true;
-    return GDKstalker_flush_buffer();
-}
-
-
-gdk_return
-GDKstalker_set_log_level(int *level)
-{
-    if((int) ATOMIC_GET(&CUR_LOG_LEVEL) == *level)
-        return GDK_SUCCEED;
-
-    if(*level == M_NONE && (int) ATOMIC_GET(&CUR_LOG_LEVEL) != M_NONE)
-    {
-        int GDK_result = GDKstalker_flush_buffer();
-        if(GDK_result == GDK_FAIL)
-            return GDK_FAIL;
-    }
-
-    ATOMIC_SET(&CUR_LOG_LEVEL, *level);
-
-    return GDK_SUCCEED;
-}
-
-
-gdk_return
-GDKstalker_reset_log_level(void)
-{  
-    if((int) ATOMIC_GET(&CUR_LOG_LEVEL) == M_NONE)
-        return GDK_SUCCEED;
-   
-    int GDK_result = GDKstalker_flush_buffer();
-    if(GDK_result == GDK_FAIL)
-        return GDK_FAIL;
-
-    ATOMIC_SET(&CUR_LOG_LEVEL, M_NONE);
-
-    return GDK_SUCCEED;
-}
-
-
-gdk_return
-GDKstalker_set_flush_level(int *level)
-{
-    if((int) ATOMIC_GET(&CUR_FLUSH_LEVEL) == *level)
-        return GDK_SUCCEED;
-
-    ATOMIC_SET(&CUR_FLUSH_LEVEL, *level);
-
-    return GDK_SUCCEED;
-}
-
-
-gdk_return
-GDKstalker_reset_flush_level(void)
-{
-    if((int) ATOMIC_GET(&CUR_FLUSH_LEVEL) == M_ERROR)
-        return GDK_SUCCEED;
-
-    ATOMIC_SET(&CUR_FLUSH_LEVEL, M_ERROR);
-
-    return GDK_SUCCEED;
-}
-
-
-gdk_return
-GDKstalker_log(LOG_LEVEL level, int event_id, const char *fmt, ...)
-{   
-    if((int) level >= (int) ATOMIC_GET(&CUR_LOG_LEVEL) && (int) 
ATOMIC_GET(&CUR_LOG_LEVEL) > M_NONE)
-    {
-        // Select a stalker
-        gdk_stalker *fill_stalker;
-        MT_Lock lock;
-        int GDK_result;
-        bool SWITCH_STALKER = true;
-        int bytes_written = 0;        
-
-        if((int) ATOMIC_GET(&SELECTED_STALKER_ID) == stalker.id)
-        {
-            fill_stalker = &stalker;
-            lock = stalker.lock;
-        }
-        else
-        {
-            fill_stalker = &secondary_stalker;
-            lock = secondary_stalker.lock;
-        }
-
-        MT_lock_set(&lock);
-        {
-            va_list va;
-            va_start(va, fmt);
-            bytes_written = _GDKstalker_fill_stalker(fill_stalker, fmt, va);
-            va_end(va);
-
-            // The message fits the buffer OR the buffer is empty (we don't 
care if it fits - just cut it off)
-            if(bytes_written < (BUFFER_SIZE - fill_stalker->allocated_size) || 
-               fill_stalker->allocated_size == 0)
-            {
-                fill_stalker->allocated_size += bytes_written;
-                SWITCH_STALKER = false;
-            }
-        }
-        MT_lock_unset(&lock);
-
-        if(SWITCH_STALKER)
-        {       
-            // Switch stalker
-            if((int) ATOMIC_GET(&SELECTED_STALKER_ID) == stalker.id)
-            {
-                fill_stalker = &secondary_stalker;
-                lock = secondary_stalker.lock;
-            }
-            else
-            {
-                fill_stalker = &stalker;
-                lock = stalker.lock;
-            }
-                
-            MT_lock_set(&lock);
-            {
-                // Flush current stalker
-                MT_Id tid;
-                
-                if(MT_create_thread(&tid, (void(*) (void*)) 
GDKstalker_flush_buffer, NULL, MT_THR_JOINABLE, "GDKstalkerFlush") < 0)
-                    return GDK_FAIL;
-                
-                va_list va;
-                va_start(va, fmt);
-                bytes_written = _GDKstalker_fill_stalker(fill_stalker, fmt, 
va);
-                va_end(va);
-
-                // The second buffer will always be empty at start
-                // So if the message does not fit we cut it off
-                // message might be > BUFFER_SIZE
-                fill_stalker->allocated_size += bytes_written;
-
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to