Changeset: 5b010dcd16a7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5b010dcd16a7
Modified Files:
gdk/gdk_bat.c
monetdb5/mal/mal_dataflow.c
monetdb5/mal/mal_interpreter.c
monetdb5/modules/mal/orderidx.c
sql/backends/monet5/sql.c
sql/storage/store.c
tools/monetdbe/monetdbe.c
Branch: default
Log Message:
Fix some data races.
diffs (101 lines):
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -1023,7 +1023,6 @@ BUNappendmulti(BAT *b, const void *value
}
ALIGNapp(b, force, GDK_FAIL);
- b->batDirtydesc = true;
if (b->ttype == TYPE_void && BATtdense(b)) {
const oid *ovals = values;
diff --git a/monetdb5/mal/mal_dataflow.c b/monetdb5/mal/mal_dataflow.c
--- a/monetdb5/mal/mal_dataflow.c
+++ b/monetdb5/mal/mal_dataflow.c
@@ -846,7 +846,7 @@ runMALdataflow(Client cntxt, MalBlkPtr m
/* doing a recursive call: copy specificity from
* current worker to new worker */
for (int j = 0; j < THREADS; j++) {
- if (workers[j].flag == RUNNING && workers[j].id
== pid) {
+ if (workers[j].id == pid && workers[j].flag ==
RUNNING) {
ATOMIC_PTR_SET(&workers[i].cntxt,
ATOMIC_PTR_GET(&workers[j].cntxt));
break;
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
@@ -332,6 +332,7 @@ str runMAL(Client cntxt, MalBlkPtr mb, M
}
if (stk->cmd && env && stk->cmd != 'f')
stk->cmd = env->cmd;
+ mb->starttime = GDKusec();
ret = runMALsequence(cntxt, mb, 1, 0, stk, env, 0);
/* pass the new debug mode to the caller */
@@ -422,6 +423,7 @@ callMAL(Client cntxt, MalBlkPtr mb, MalS
BBPretain(lhs->val.bval);
}
stk->cmd = debug;
+ mb->starttime = GDKusec();
ret = runMALsequence(cntxt, mb, 1, 0, stk, 0, 0);
break;
case FACTORYsymbol:
@@ -503,7 +505,6 @@ str runMALsequence(Client cntxt, MalBlkP
startedProfileQueue = 1;
runtimeProfileInit(cntxt, mb, stk);
runtimeProfileBegin(cntxt, mb, stk, getInstrPtr(mb,0),
&runtimeProfileFunction);
- mb->starttime = GDKusec();
if (cntxt->sessiontimeout && mb->starttime - cntxt->session >
cntxt->sessiontimeout) {
runtimeProfileFinish(cntxt, mb, stk);
if ( backup != backups) GDKfree(backup);
diff --git a/monetdb5/modules/mal/orderidx.c b/monetdb5/modules/mal/orderidx.c
--- a/monetdb5/modules/mal/orderidx.c
+++ b/monetdb5/modules/mal/orderidx.c
@@ -223,6 +223,7 @@ OIDXcreateImplementation(Client cntxt, i
newstk->stk[arg].vtype= TYPE_bat;
newstk->stk[arg].val.bval= b->batCacheid;
BBPretain(newstk->stk[arg].val.bval);
+ smb->starttime = GDKusec();
msg = runMALsequence(cntxt, smb, 1, 0, newstk, 0, 0);
freeStack(newstk);
/* get rid of temporary MAL block */
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -4644,6 +4644,7 @@ SQLunionfunc(Client cntxt, MalBlkPtr mb,
if (!nmb)
return createException(MAL, "sql.unionfunc", SQLSTATE(HY013)
MAL_MALLOC_FAIL);
+ nmb->starttime = mb->starttime;
mod = *getArgReference_str(stk, pci, arg++);
fcn = *getArgReference_str(stk, pci, arg++);
npci = newStmtArgs(nmb, mod, fcn, pci->argc);
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -2353,9 +2353,13 @@ store_manager(sqlstore *store)
MT_lock_unset(&store->flush);
MT_sleep_ms(sleeptime);
flusher.countdown_ms -= sleeptime;
+ MT_lock_set(&store->commit);
MT_lock_set(&store->flush);
- if (store->logger_api.changes(store) <= 0)
+ if (store->logger_api.changes(store) <= 0) {
+ MT_lock_unset(&store->commit);
continue;
+ }
+ MT_lock_unset(&store->commit);
if (GDKexiting())
break;
diff --git a/tools/monetdbe/monetdbe.c b/tools/monetdbe/monetdbe.c
--- a/tools/monetdbe/monetdbe.c
+++ b/tools/monetdbe/monetdbe.c
@@ -854,6 +854,7 @@ monetdbe_open_remote(monetdbe_database_i
return -2;
}
stk->keepAlive = TRUE;
+ mb->starttime = GDKusec();
if ( (mdbe->msg = runMALsequence(c, mb, 1, 0, stk, 0, 0)) !=
MAL_SUCCEED ) {
freeStack(stk);
freeSymbol(c->curprg);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]