Changeset: 2fd38e48c453 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2fd38e48c453
Modified Files:
monetdb5/mal/mal_interpreter.c
monetdb5/mal/mal_runtime.c
Branch: default
Log Message:
Partly revert commit 7567eee12001 I can't figure out the query queue with
recursive calls when multiple dataflow workers are present, but it's broken for
sure
diffs (40 lines):
diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -751,8 +751,6 @@ str runMALsequence(Client cntxt, MalBlkP
nstk->stkdepth = nstk->stksize + stk->stkdepth;
nstk->calldepth = stk->calldepth + 1;
nstk->up = stk;
- /* inherit tag, because it will be used when
doing profiling */
- nstk->tag = stk->tag;
if (nstk->calldepth > 256) {
ret= createException(MAL,
"mal.interpreter", MAL_CALLDEPTH_FAIL);
GDKfree(nstk);
diff --git a/monetdb5/mal/mal_runtime.c b/monetdb5/mal/mal_runtime.c
--- a/monetdb5/mal/mal_runtime.c
+++ b/monetdb5/mal/mal_runtime.c
@@ -222,7 +222,9 @@ runtimeProfileInit(Client cntxt, MalBlkP
if (stk->up) {
i = qtail;
while (i != qhead) {
- if (QRYqueue[i].tag == stk->tag) {
+ if (QRYqueue[i].mb && QRYqueue[i].stk == stk->up) {
+ QRYqueue[i].stk = stk;
+ mb->tag = stk->tag = qtag++;
MT_lock_unset(&mal_delayLock);
return;
}
@@ -288,9 +290,11 @@ runtimeProfileFinish(Client cntxt, MalBl
MT_lock_set(&mal_delayLock);
i=qtail;
while (i != qhead){
- if (QRYqueue[i].tag == stk->tag) {
+ if (QRYqueue[i].stk == stk){
if (stk->up){
- // recursive call, just return
+ // recursive call
+ QRYqueue[i].stk = stk->up;
+ mb->tag = stk->tag;
MT_lock_unset(&mal_delayLock);
return;
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]