Changeset: 479b51bc08df for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/479b51bc08df
Modified Files:
monetdb5/mal/mal_profiler.c
Branch: Sep2022
Log Message:
small fixes to profiler critical region boundaries
diffs (62 lines):
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
@@ -60,11 +60,9 @@ static void logjsonInternal(char *logbuf
size_t len;
len = strlen(logbuffer);
- if (maleventstream) {
- (void) mnstr_write(maleventstream, logbuffer, 1, len);
- if (flush)
- (void) mnstr_flush(maleventstream, MNSTR_FLUSH_DATA);
- }
+ (void) mnstr_write(maleventstream, logbuffer, 1, len);
+ if (flush)
+ (void) mnstr_flush(maleventstream, MNSTR_FLUSH_DATA);
}
/*
@@ -295,10 +293,6 @@ prepareMalEvent(Client cntxt, MalBlkPtr
clk = pci->clock;
mclk = (uint64_t)clk - ((uint64_t)startup_time.tv_sec*1000000 -
(uint64_t)startup_time.tv_usec);
/* make profile event tuple */
- /* TODO: This could probably be optimized somehow to avoid the
- * function call to mercurial_revision().
- */
- // No comma at the beginning
if (!logadd(&logbuf,
"{" // fill in
later with the event counter
"\"sessionid\":\"%d\""
@@ -651,8 +645,8 @@ profilerEvent(MalEvent *me, NonMalEvent
if (me != NULL && me->cntxt != NULL && getModuleId(me->pci) == myname)
return;
+ MT_lock_set(&mal_profileLock);
if (maleventstream) {
- MT_lock_set(&mal_profileLock);
if (me != NULL && me->mb != NULL && nme == NULL) {
if (me->stk == NULL ||
me->pci == NULL ||
@@ -669,8 +663,8 @@ profilerEvent(MalEvent *me, NonMalEvent
logjsonInternal(event, true);
free(event);
}
- MT_lock_unset(&mal_profileLock);
}
+ MT_lock_unset(&mal_profileLock);
}
/* The first scheme dumps the events on a stream (and in the pool)
@@ -752,10 +746,11 @@ startProfiler(Client cntxt)
#endif
(void) cntxt;
+ MT_lock_set(&mal_profileLock);
if(maleventstream){
+ MT_lock_unset(&mal_profileLock);
throw(MAL,"profiler.start","Profiler already running, stream
not available");
}
- MT_lock_set(&mal_profileLock);
if (myname == 0){
myname = putName("profiler");
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]