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