Changeset: a5f73b64f5a7 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a5f73b64f5a7
Modified Files:
        clients/mapiclient/stethoscope.c
        monetdb5/mal/mal_profiler.c
        monetdb5/mal/mal_profiler.h
        monetdb5/modules/mal/profiler.c
        monetdb5/modules/mal/profiler.h
        monetdb5/modules/mal/profiler.mal
Branch: profiler
Log Message:

use the tcp stream from the stethoscope itself, instead of
udp streams.


diffs (222 lines):

diff --git a/clients/mapiclient/stethoscope.c b/clients/mapiclient/stethoscope.c
--- a/clients/mapiclient/stethoscope.c
+++ b/clients/mapiclient/stethoscope.c
@@ -18,15 +18,18 @@
 
 #include "monetdb_config.h"
 #include "monet_options.h"
+#include <stream.h>
+#include <stream_socket.h>
 #include <mapi.h>
-#include <stream.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <sys/stat.h>
 #include <errno.h>
 #include <signal.h>
-#include <unistd.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
 #include "mprompt.h"
 #include "dotmonetdb.h"
 #include "eventparser.h"
@@ -39,17 +42,16 @@
 # endif
 #endif
 
-#ifdef TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# ifdef HAVE_SYS_TIME_H
-#  include <sys/time.h>
-# else
-#  include <time.h>
-# endif
+#ifdef HAVE_NETDB_H
+# include <netdb.h>
+# include <netinet/in.h>
 #endif
 
+#ifndef INVALID_SOCKET
+#define INVALID_SOCKET (-1)
+#endif
+
+
 #define die(dbh, hdl)                                          \
        do {                                                    \
                (hdl ? mapi_explain_query(hdl, stderr) :        \
@@ -296,24 +298,12 @@ main(int argc, char **argv)
        if(debug)
                fprintf(stderr,"-- connection with server %s\n", uri ? uri : 
host);
 
-       for (portnr = 50010; portnr < 62010; portnr++) 
-               if ((conn = open_rastream(hostname, portnr)) != NULL)
-                       break;
-       
-       if ( conn == NULL) {
-               fprintf(stderr, "!! opening stream failed: no free ports 
available\n");
-               fflush(stderr);
-               goto stop_disconnect;
-       }
-
-       printf("-- opened TCP profile stream %s:%d for %s\n", hostname, portnr, 
host);
-
        snprintf(buf,BUFSIZ-1,"profiler.setheartbeat(%d);",beat);
        if( debug)
                fprintf(stderr,"-- %s\n",buf);
        doQ(buf);
 
-       snprintf(buf, BUFSIZ, " profiler.setstream(\"%s\", %d);", hostname, 
portnr);
+       snprintf(buf, BUFSIZ, " profiler.openstream();");
        if( debug)
                fprintf(stderr,"--%s\n",buf);
        doQ(buf);
@@ -330,7 +320,8 @@ main(int argc, char **argv)
                fprintf(stderr,"Could not create input buffer\n");
                exit(-1);
        }
-       while ((n = mnstr_read(conn, buffer + len, 1, buflen - len-1)) > 0) {
+       conn = mapi_get_from(dbh);
+       while ((n = mnstr_read(conn, buffer + len, 1, buflen - len-1)) >= 0) {
                buffer[len + n] = 0;
                if( trace) 
                        fprintf(trace,"%s",buffer);
diff --git a/monetdb5/mal/mal_profiler.c b/monetdb5/mal/mal_profiler.c
--- a/monetdb5/mal/mal_profiler.c
+++ b/monetdb5/mal/mal_profiler.c
@@ -113,21 +113,6 @@ setprofilerpoolsize(int size)
        return MAL_SUCCEED;
 }
 
-str
-setProfilerStream(Module cntxt, const char *host, int port)
-{
-       (void)cntxt;        /* still unused */
-       MT_lock_set(&mal_profileLock, "setstream");
-       //if ((eventstream = udp_wastream(host, port, "profileStream")) == 
NULL) {
-       if ((eventstream = wastream(host, port, "profileStream")) == NULL) {
-               MT_lock_unset(&mal_profileLock, "setstream");
-               throw(IO, "mal.profiler", RUNTIME_STREAM_FAILED);
-       }
-       eventstream = wbstream(eventstream, BUFSIZ);
-       MT_lock_unset(&mal_profileLock, "setstream");
-       return MAL_SUCCEED;
-}
-
 #define LOGLEN 8192
 #define lognew()  loglen = 0; logbase = logbuffer; *logbase = 0;
 
@@ -199,19 +184,20 @@ static void logjsonInternal(int k, char 
 }
 
 static void logjson(MalBlkPtr mb, MalStkPtr stk, InstrPtr p, char *logbuffer)
-{      int i,k;        
+{      
+       int i,k;        
 
        (void) mb;
-       (void) p;
-       if( stk){
+       if (stk){
                logjsonInternal( k = stk->tag % poolSize, logbuffer,p);
-               profilerPool[k].tag = stk->tag;
-       } else
+               if (profilerPool)
+                       profilerPool[k].tag = stk->tag;
+       } else if (profilerPool) {
 // The heart beat events should be sent to all outstanding channels.
 // But only once to the stream
-       for( i=0; i< poolSize; i++)
-       if(profilerPool[i].trace){
-               logjsonInternal( i, logbuffer, 0);
+               for(i=0; i< poolSize; i++)
+                       if (profilerPool[i].trace)
+                               logjsonInternal( i, logbuffer, 0);
        }
 }
 
@@ -570,10 +556,6 @@ openProfilerStream(stream *fd)
 str
 closeProfilerStream(void)
 {
-       if (eventstream && eventstream != mal_clients[0].fdout && eventstream 
!= GDKout && eventstream != GDKerr) {
-               (void)mnstr_close(eventstream);
-               (void)mnstr_destroy(eventstream);
-       }
        eventstream = NULL;
        malProfileMode = 0;
        return MAL_SUCCEED;
diff --git a/monetdb5/mal/mal_profiler.h b/monetdb5/mal/mal_profiler.h
--- a/monetdb5/mal/mal_profiler.h
+++ b/monetdb5/mal/mal_profiler.h
@@ -36,7 +36,6 @@ mal_export void initHeartbeat(void);
 mal_export void profilerHeartbeatEvent(char *alter);
 
 mal_export void MPresetProfiler(stream *fdout);
-mal_export str setProfilerStream(Module cntxt, const char *host, int port);
 
 mal_export int malProfileMode;
 mal_export void clearTrace(void);
diff --git a/monetdb5/modules/mal/profiler.c b/monetdb5/modules/mal/profiler.c
--- a/monetdb5/modules/mal/profiler.c
+++ b/monetdb5/modules/mal/profiler.c
@@ -63,15 +63,6 @@ CMDsetProfilerPoolSize (Client cntxt, Ma
        return setprofilerpoolsize(poolsize);
 }
 
-str
-CMDsetProfilerStream (Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
-{
-       str *host = getArgReference_str(stk,pci,1);
-       int *port = getArgReference_int(stk,pci,2);
-       (void) mb;              /* fool compiler */
-       return setProfilerStream(cntxt->nspace, *host, *port);
-}
-
 // initialize SQL tracing
 str
 CMDstartProfiler(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pc)
diff --git a/monetdb5/modules/mal/profiler.h b/monetdb5/modules/mal/profiler.h
--- a/monetdb5/modules/mal/profiler.h
+++ b/monetdb5/modules/mal/profiler.h
@@ -38,13 +38,12 @@
 #define profiler_export extern
 #endif
 
-profiler_export str CMDsetProfilerStream (Client cntxt, MalBlkPtr mb, 
MalStkPtr stk, InstrPtr pci);
 profiler_export str CMDstartProfiler(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
 profiler_export str CMDstopProfiler(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 profiler_export str CMDnoopProfiler(void *res);
 profiler_export str CMDsetHeartbeat(void *res, int *ev);
+profiler_export str CMDsetProfilerPoolSize(Client cntxt, MalBlkPtr mb, 
MalStkPtr stk, InstrPtr pci);
 profiler_export str CMDopenProfilerStream(Client cntxt, MalBlkPtr mb, 
MalStkPtr stk, InstrPtr pci);
-profiler_export str CMDsetProfilerPoolSize(Client cntxt, MalBlkPtr mb, 
MalStkPtr stk, InstrPtr pci);
 profiler_export str CMDcloseProfilerStream(void *res);
 profiler_export str CMDcleanup(void *ret);
 profiler_export str CMDclearTrace(void *res);
diff --git a/monetdb5/modules/mal/profiler.mal 
b/monetdb5/modules/mal/profiler.mal
--- a/monetdb5/modules/mal/profiler.mal
+++ b/monetdb5/modules/mal/profiler.mal
@@ -34,18 +34,10 @@ command setheartbeat(b:int):void
 address CMDsetHeartbeat
 comment "Set heart beat performance tracing";
 
-pattern setstream():void
+pattern openstream():void
 address CMDopenProfilerStream
 comment "Send the events to output stream";
 
-pattern setstream(host:str, port:int):void
-address CMDsetProfilerStream
-comment "Send the log events to a stream ";
-
-pattern openStream(host:str, port:int):void
-address CMDsetProfilerStream
-comment "Send the log events to a client calling ";
-
 command closeStream():void
 address CMDcloseProfilerStream
 comment "Stop sending the event records";
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to