Changeset: af106ece7dcc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=af106ece7dcc
Added Files:
        MonetDB5/modules/mal/mal_mapi.h
Modified Files:
        MonetDB5/modules/mal/mal_mapi.c
        gdk/gdk_tracer.c
        gdk/gdk_tracer.h
        gdk/gdk_utils.c
        gdk/gdk_utils.h
        tools/mserver/mserver5.c
Branch: gdk-tracer
Log Message:

Show log level per component on startup of mserver5 and fixed a bug with 
fill_tracer


diffs (283 lines):

diff --git a/MonetDB5/modules/mal/mal_mapi.c b/MonetDB5/modules/mal/mal_mapi.c
--- a/MonetDB5/modules/mal/mal_mapi.c
+++ b/MonetDB5/modules/mal/mal_mapi.c
@@ -551,9 +551,6 @@ SERVERlisten(int port, const char *usock
        str buf;
        char host[128];
        const char *listenaddr;
-#ifdef DEBUG_SERVER
-       char msg[512], host[512];
-#endif
 
        accept_any = GDKgetenv_istrue("mapi_open");
        bind_ipv6 = GDKgetenv_istrue("mapi_ipv6");
diff --git a/MonetDB5/modules/mal/mal_mapi.h b/MonetDB5/modules/mal/mal_mapi.h
new file mode 100644
--- /dev/null
+++ b/MonetDB5/modules/mal/mal_mapi.h
@@ -0,0 +1,85 @@
+/*
+ * 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.
+ */
+
+#ifndef SERVER_H
+#define SERVER_H
+#ifdef HAVE_MAPI
+
+#include "mal_client.h"
+#include "mal_session.h"
+#include "mal_exception.h"
+#include "mal_interpreter.h"
+#include "mal_authorize.h"
+#include "msabaoth.h"
+#include "mcrypt.h"
+#include "stream.h"
+#include "streams.h"                   /* for Stream */
+
+
+#define NEW_ARRAY( type, size )        (type*)GDKmalloc((size)*sizeof(type))
+#define STREQ(a, b)            (strcmp(a, b)==0)
+
+#define SERVERPORT             50000
+#define SERVERMAXUSERS                 5
+
+mal_export str SERVERlisten_default(int *ret);
+mal_export str SERVERlisten_port(int *ret, int *pid);
+mal_export str SERVERlisten_usock(int *ret, str *usock);
+mal_export str SERVERstop(void *ret);
+mal_export str SERVERsuspend(void *ret);
+mal_export str SERVERresume(void *ret);
+
+mal_export str SERVERconnect(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pc);
+mal_export str SERVERdisconnectWithAlias(int *ret, str *db_alias);
+mal_export str SERVERdisconnectALL(int *ret);
+mal_export str SERVERreconnectAlias(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pc);
+mal_export str SERVERreconnectWithoutAlias(Client cntxt, MalBlkPtr mb, 
MalStkPtr stk, InstrPtr pc);
+mal_export str SERVERtrace(void *ret, int *mid, int *flag);
+mal_export str SERVERdisconnect(void *ret, int *mid);
+mal_export str SERVERsetAlias(void *ret, int *mid, str *dbalias);
+mal_export str SERVERlookup(int *ret, str *dbalias);
+mal_export str SERVERdestroy(void *ret, int *mid);
+mal_export str SERVERreconnect(void *ret, int *mid);
+mal_export str SERVERping(int *ret, int *mid);
+mal_export str SERVERquery(int *ret, int *mid, str *qry);
+mal_export str SERVERquery_handle(int *ret, int *mid, str *qry);
+mal_export str SERVERquery_array(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pc);
+mal_export str SERVERprepare(int *ret, int *key, str *qry);
+mal_export str SERVERfinish(int *ret, int *idx);
+mal_export str SERVERrows_affected(lng *ret, int *idx);
+mal_export str SERVERget_row_count(lng *ret, int *idx);
+mal_export str SERVERget_field_count(int *ret, int *idx);
+mal_export str SERVERfetch_row(int *ret, int *idx);
+mal_export str SERVERfetch_all_rows(lng *ret, int *idx);
+mal_export str SERVERfetch_field_str(str *ret, int *idx, int *fnr);
+mal_export str SERVERfetch_field_int(int *ret, int *idx, int *fnr);
+mal_export str SERVERfetch_field_lng(lng *ret, int *idx, int *fnr);
+#ifdef HAVE_HGE
+mal_export str SERVERfetch_field_hge(hge *ret, int *idx, int *fnr);
+#endif
+mal_export str SERVERfetch_field_sht(sht *ret, int *idx, int *fnr);
+mal_export str SERVERfetch_field_void(void *ret, int *idx, int *fnr);
+mal_export str SERVERfetch_field_oid(oid *ret, int *idx, int *fnr);
+mal_export str SERVERfetch_field_bte(bte *ret, int *idx, int *fnr);
+mal_export str SERVERfetch_line(str *ret, int *key);
+mal_export str SERVERnext_result(int *ret, int *key);
+mal_export str SERVERfetch_reset(int *ret, int *key);
+mal_export str SERVERfetch_field_bat(bat *bid, int *idx);
+mal_export str SERVERerror(int *ret, int *idx);
+mal_export str SERVERgetError(str *ret, int *idx);
+mal_export str SERVERexplain(str *ret, int *idx);
+mal_export str SERVERmapi_rpc_single_row(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
+mal_export str SERVERmapi_rpc_single_bat(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
+mal_export str SERVERput(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
+mal_export str SERVERputLocal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+mal_export str SERVERbindBAT(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+mal_export str SERVERclient(void *res, const Stream *In, const Stream *Out);
+mal_export str SERVERmapi_rpc_bat(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+
+#endif /* HAVE_MAPI */
+#endif /* SERVER_H */
diff --git a/gdk/gdk_tracer.c b/gdk/gdk_tracer.c
--- a/gdk/gdk_tracer.c
+++ b/gdk/gdk_tracer.c
@@ -105,26 +105,6 @@ static void
 }
 
 
-static void
-_GDKtracer_show_log_level_per_component(void)
-{
-    // Find max width from components
-    int max_width = 0;
-    for(int i = 0; i < COMPONENTS_COUNT; i++)
-    {
-        int comp_width = strlen(COMPONENT_STR[i]);
-        if(comp_width > max_width)
-            max_width = comp_width;
-    }
-
-    for(int i = 0; i < COMPONENTS_COUNT; i++)
-    {
-        int space = (int) (max_width - strlen(COMPONENT_STR[i]) + 30);
-        fprintf(stderr, "# %s %*s\n", COMPONENT_STR[i], space, 
LEVEL_STR[LOG_LEVELS_LIST[i]]);
-    }
-}
-
-
 // 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 
@@ -144,30 +124,38 @@ static void
 
 // Candidate for 'gnu_printf' format attribute 
[-Werror=suggest-attribute=format]
 static int 
-_GDKtracer_fill_tracer(gdk_tracer *sel_tracer, const char *fmt, va_list va) 
__attribute__ ((format (printf, 2, 0)));
+_GDKtracer_fill_tracer(gdk_tracer *sel_tracer, char *fmt, va_list va) 
__attribute__ ((format (printf, 2, 0)));
 
 static int 
-_GDKtracer_fill_tracer(gdk_tracer *sel_tracer, const char *fmt, va_list va)
+_GDKtracer_fill_tracer(gdk_tracer *sel_tracer, char *fmt, va_list va)
 {
-    const char *msg;
+    char *tmp = NULL;
+    const char* msg = NULL;
     size_t fmt_len = strlen(fmt);
+    int bytes_written = 0;
 
-    // Check if the message contains at the end \n - if not add it
     if(fmt[fmt_len - 1] != NEW_LINE)
     {
-        char *tmp = malloc(sizeof(char) * (fmt_len + 1));
+        tmp = GDKmalloc(sizeof(char) * (fmt_len + 2));
         strcpy(tmp, fmt);
         tmp[fmt_len] = NEW_LINE;
+        tmp[fmt_len + 1] = '\0';
         msg = tmp;
-        free(tmp);
     }
     else
     {
         msg = fmt;
     }
 
-    // vsnprintf(char *str, size_t count, ...) -> including null terminating 
character
-    int bytes_written = vsnprintf(sel_tracer->buffer + 
sel_tracer->allocated_size, BUFFER_SIZE - sel_tracer->allocated_size, msg, va);
+    if(msg)
+    {
+        // vsnprintf(char *str, size_t count, ...) -> including null 
terminating character
+        bytes_written = vsnprintf(sel_tracer->buffer + 
sel_tracer->allocated_size, BUFFER_SIZE - sel_tracer->allocated_size, msg, va);
+
+        if(tmp)
+            GDKfree(tmp);    
+    }
+
     _GDKtracer_log_output_error(bytes_written);
 
     // vsnprintf returned value -> does not include the null terminating 
character
@@ -197,7 +185,6 @@ gdk_return
 GDKtracer_init(void)
 {
     _GDKtracer_init_log_level_per_component();
-    _GDKtracer_show_log_level_per_component();
     _GDKtracer_create_file();
     return GDK_SUCCEED;
 }
@@ -304,7 +291,7 @@ GDKtracer_reset_adapter(void)
 
 
 gdk_return
-GDKtracer_log(LOG_LEVEL level, const char *fmt, ...)
+GDKtracer_log(LOG_LEVEL level, char *fmt, ...)
 {   
     // Select a tracer
     gdk_tracer *fill_tracer;
@@ -421,3 +408,26 @@ GDKtracer_flush_buffer(void)
     
     return GDK_SUCCEED;
 }
+
+
+gdk_return
+GDKtracer_show_log_levels(void)
+{
+    // Find max width from components
+    int max_width = 0;
+    for(int i = 0; i < COMPONENTS_COUNT; i++)
+    {
+        int comp_width = strlen(COMPONENT_STR[i]);
+        if(comp_width > max_width)
+            max_width = comp_width;
+    }
+
+    fprintf(stderr, "# LOG level per component\n");
+    for(int i = 0; i < COMPONENTS_COUNT; i++)
+    {
+        int space = (int) (max_width - strlen(COMPONENT_STR[i]) + 30);
+        fprintf(stderr, "# %s %*s\n", COMPONENT_STR[i], space, 
LEVEL_STR[LOG_LEVELS_LIST[i]]);
+    }
+
+    return GDK_SUCCEED;
+}
diff --git a/gdk/gdk_tracer.h b/gdk/gdk_tracer.h
--- a/gdk/gdk_tracer.h
+++ b/gdk/gdk_tracer.h
@@ -263,11 +263,14 @@ gdk_return GDKtracer_reset_adapter(void)
 
 
 // Candidate for 'gnu_printf' format attribute 
[-Werror=suggest-attribute=format] 
-gdk_return GDKtracer_log(LOG_LEVEL level, const char *fmt, ...) __attribute__ 
((format (printf, 2, 3)));
+gdk_return GDKtracer_log(LOG_LEVEL level, char *fmt, ...) __attribute__ 
((format (printf, 2, 3)));
 
 
 // Flush the buffer to the file. If after flushing the buffer, the file is 
greater 
 // or equal to 1 GB, then we close the current one and we swap to a new one 
increasing the ID
 gdk_return GDKtracer_flush_buffer(void);
 
+
+gdk_return GDKtracer_show_log_levels(void);
+
 #endif
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -1692,6 +1692,12 @@ GDKversion(void)
        return (_gdk_version_string);
 }
 
+void
+GDKloglevels(void)
+{
+       GDKtracer_show_log_levels();
+}
+
 size_t
 GDKmem_cursize(void)
 {
diff --git a/gdk/gdk_utils.h b/gdk/gdk_utils.h
--- a/gdk/gdk_utils.h
+++ b/gdk/gdk_utils.h
@@ -92,6 +92,7 @@ gdk_export bool GDKexiting(void);
 gdk_export void GDKprepareExit(void);
 gdk_export void GDKreset(int status);
 gdk_export const char *GDKversion(void);
+gdk_export void GDKloglevels(void);
 
 // these are used in embedded mode to jump out of GDKfatal
 gdk_export jmp_buf GDKfataljump;
diff --git a/tools/mserver/mserver5.c b/tools/mserver/mserver5.c
--- a/tools/mserver/mserver5.c
+++ b/tools/mserver/mserver5.c
@@ -675,6 +675,9 @@ main(int argc, char **av)
                return 0;
        }
 
+       /* Show the log level per component */
+       GDKloglevels();
+
        emergencyBreakpoint();
 
        if (!GDKinmemory() && (err = msab_registerStarted()) != NULL) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to