Changeset: c951c44c3b0c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c951c44c3b0c
Added Files:
        monetdb5/modules/mal/Tests/stalker00.malC
Modified Files:
        gdk/gdk_stalker.c
        monetdb5/modules/mal/Tests/All
        monetdb5/modules/mal/stalker.c
        monetdb5/modules/mal/stalker.h
        monetdb5/modules/mal/stalker.mal
Branch: mlogger
Log Message:

Made the stalker interface more in line what we normally do.
At the MAL layed, patterns give you more debugging power
by providing access to the calls.

A simple test has been added for illustration


diffs (236 lines):

diff --git a/gdk/gdk_stalker.c b/gdk/gdk_stalker.c
--- a/gdk/gdk_stalker.c
+++ b/gdk/gdk_stalker.c
@@ -18,24 +18,24 @@
 #include "gdk.h"
 #include "gdk_stalker.h"
 
-pthread_t flushing_thread;
-pthread_mutex_t stalker_mutex = PTHREAD_MUTEX_INITIALIZER;
-pthread_mutex_t secondary_stalker_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_t flushing_thread;
+static pthread_mutex_t stalker_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t secondary_stalker_mutex = PTHREAD_MUTEX_INITIALIZER;
 
 // 0 -> stalker
 // 1 -> secondary_stalker
-gdk_stalker stalker = { .allocated_size = 0, .id = 0 };
-gdk_stalker secondary_stalker = { .allocated_size = 0, .id = 1 };
+static gdk_stalker stalker = { .allocated_size = 0, .id = 0 };
+static gdk_stalker secondary_stalker = { .allocated_size = 0, .id = 1 };
 ATOMIC_TYPE SELECTED_STALKER_ID = 0;
 
-bool GDK_STALKER_STOP = false;
+static bool GDK_STALKER_STOP = false;
 
-FILE *output_file;
-int file_size = 0;
-int file_id = 1;
+static FILE *output_file;
+static int file_size = 0;
+static int file_id = 1;
 
-ATOMIC_TYPE CUR_LOG_LEVEL = DEFAULT_LOG_LEVEL;
-ATOMIC_TYPE CUR_FLUSH_LEVEL = DEFAULT_FLUSH_LEVEL;
+static ATOMIC_TYPE CUR_LOG_LEVEL = DEFAULT_LOG_LEVEL;
+static ATOMIC_TYPE CUR_FLUSH_LEVEL = DEFAULT_FLUSH_LEVEL;
 
 
 
diff --git a/monetdb5/modules/mal/Tests/All b/monetdb5/modules/mal/Tests/All
--- a/monetdb5/modules/mal/Tests/All
+++ b/monetdb5/modules/mal/Tests/All
@@ -64,3 +64,5 @@ orderidx00
 orderidx01
 orderidx02
 orderidx04
+
+stalker00
diff --git a/monetdb5/modules/mal/Tests/stalker00.malC 
b/monetdb5/modules/mal/Tests/stalker00.malC
new file mode 100644
--- /dev/null
+++ b/monetdb5/modules/mal/Tests/stalker00.malC
@@ -0,0 +1,17 @@
+# a simple script to check the working of the stalker
+
+stalker.flush();
+
+stalker.setloglevel(-1); # should raise an error
+stalker.setloglevel(0);
+stalker.setloglevel(1);
+stalker.setloglevel(999); # should raise an error
+
+stalker.resetloglevel();
+
+stalker.setflushlevel(-1); # should raise an error
+stalker.setflushlevel(0);
+stalker.setflushlevel(1);
+stalker.setflushlevel(999); # should raise an error
+
+stalker.resetflushlevel();
diff --git a/monetdb5/modules/mal/stalker.c b/monetdb5/modules/mal/stalker.c
--- a/monetdb5/modules/mal/stalker.c
+++ b/monetdb5/modules/mal/stalker.c
@@ -4,6 +4,11 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  *
  * Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
+ *
+ * This module contains the MAL primitives to control the logging system.
+ * If the stalker fails then there is no easy way to report this.
+ * This is marked with the STALKER marker.
+ *
  */
 
 #include "monetdb_config.h"
@@ -11,36 +16,54 @@
 #include "gdk_stalker.h"
 
 
-int GDK_result = 0;
+str 
+STLKRflush_buffer(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{      
+       (void) cntxt;
+       (void) mb;
+       (void) stk;
+       (void) pci;
 
-str 
-STLKRflush_buffer(void)
-{
-    GDK_result = GDKstalker_flush_buffer();
-    if(GDK_result == GDK_FAIL)
+    if ( GDKstalker_flush_buffer() == GDK_FAIL)
         throw(STALKER, __FILE__, "%s:%s", __func__, OPERATION_FAILED);
-    
     return MAL_SUCCEED;
 }
 
 
 str
-STLKRset_log_level(void *ret, int *lvl)
-{
-    (void) ret;
-    GDK_result = GDKstalker_set_log_level(lvl);
-    if(GDK_result == GDK_FAIL)
+STLKRset_log_level(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{      int *lvl;
+       (void) cntxt;
+       (void) mb;
+
+       lvl = (int*) getArgReference_str(stk,pci,1);
+    if( GDKstalker_set_log_level(lvl) == GDK_FAIL)
         throw(STALKER, __FILE__, "%s:%s", __func__, OPERATION_FAILED);
-
     return MAL_SUCCEED; 
 }
 
 
 str
-STLKRreset_log_level(void)
+STLKRreset_log_level(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
-    GDK_result = GDKstalker_reset_log_level();
-    if(GDK_result == GDK_FAIL)
+       (void) cntxt;
+       (void) mb;
+       (void) stk;
+       (void) pci;
+    if( GDKstalker_reset_log_level())
+        throw(STALKER, __FILE__, "%s:%s", __func__, OPERATION_FAILED);
+    return MAL_SUCCEED;
+}
+
+
+str
+STLKRset_flush_level(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{      int *lvl;
+       (void) cntxt;
+       (void) mb;
+
+       lvl = (int*) getArgReference_str(stk,pci,1);
+    if( GDKstalker_set_flush_level(lvl))
         throw(STALKER, __FILE__, "%s:%s", __func__, OPERATION_FAILED);
 
     return MAL_SUCCEED;
@@ -48,23 +71,14 @@ STLKRreset_log_level(void)
 
 
 str
-STLKRset_flush_level(void *ret, int *lvl)
+STLKRreset_flush_level(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
-    (void) ret;
-    GDK_result = GDKstalker_set_flush_level(lvl);
-    if(GDK_result == GDK_FAIL)
+       (void) cntxt;
+       (void) mb;
+       (void) stk;
+       (void) pci;
+    if( GDKstalker_reset_flush_level() == GDK_FAIL)
         throw(STALKER, __FILE__, "%s:%s", __func__, OPERATION_FAILED);
 
     return MAL_SUCCEED;
 }
-
-
-str
-STLKRreset_flush_level()
-{
-    GDK_result = GDKstalker_reset_flush_level();
-    if(GDK_result == GDK_FAIL)
-        throw(STALKER, __FILE__, "%s:%s", __func__, OPERATION_FAILED);
-
-    return MAL_SUCCEED;
-}
diff --git a/monetdb5/modules/mal/stalker.h b/monetdb5/modules/mal/stalker.h
--- a/monetdb5/modules/mal/stalker.h
+++ b/monetdb5/modules/mal/stalker.h
@@ -12,10 +12,10 @@
 #include "mal.h"
 #include "mal_interpreter.h"
 
-mal_export str STLKRflush_buffer(void);
-mal_export str STLKRset_log_level(void *ret, int *lvl);
-mal_export str STLKRreset_log_level(void);
-mal_export str STLKRset_flush_level(void *ret, int *lvl);
-mal_export str STLKRreset_flush_level(void);
+mal_export str STLKRflush_buffer(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
+mal_export str STLKRset_log_level(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
+mal_export str STLKRreset_log_level(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
+mal_export str STLKRset_flush_level(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
+mal_export str STLKRreset_flush_level(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr p);
 
 #endif
diff --git a/monetdb5/modules/mal/stalker.mal b/monetdb5/modules/mal/stalker.mal
--- a/monetdb5/modules/mal/stalker.mal
+++ b/monetdb5/modules/mal/stalker.mal
@@ -6,22 +6,22 @@
 
 module logging;
 
-command flush()
+pattern flush()
 address STLKRflush_buffer
 comment "Flush GDKstalker buffer";
 
-command setloglevel(lvl:int)
+pattern setloglevel(lvl:int)
 address STLKRset_log_level
 comment "Set GDKstalker log level";
 
-command resetloglevel()
+pattern resetloglevel()
 address STLKRreset_log_level
 comment "Reset the log level of GDKstalker";
 
-command setflushlevel(lvl:int)
+pattern setflushlevel(lvl:int)
 address STLKRset_flush_level
 comment "Set GDKstalker flush level";
 
-command resetflushlevel()
+pattern resetflushlevel()
 address STLKRreset_flush_level
 comment "Reset the flush level of GDKstalker";
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to