Changeset: 49c421d01e5d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=49c421d01e5d
Modified Files:
monetdb5/modules/mal/oltp.c
Branch: oltp
Log Message:
Cleanup some code
diffs (85 lines):
diff --git a/monetdb5/modules/mal/oltp.c b/monetdb5/modules/mal/oltp.c
--- a/monetdb5/modules/mal/oltp.c
+++ b/monetdb5/modules/mal/oltp.c
@@ -18,7 +18,7 @@
#include "mtime.h"
#define LOCKTIMEOUT 20 * 1000
-#define LOCKDELAY 200
+#define LOCKDELAY 20
typedef struct{
Client cntxt; // user holding the write lock
@@ -109,16 +109,14 @@ OLTPinit(Client cntxt, MalBlkPtr mb, Mal
str
OLTPlock(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
- int i,cnt,lck;
- lng clk;
- lng ms = GDKms();
+ int i,lck;
+ int clk;
str sql,cpy;
(void) stk;
if ( oltp_delay == FALSE )
return MAL_SUCCEED;
-
- clk = (lng) time(0);
+ clk = GDKms();
#ifdef _DEBUG_OLTP_
mnstr_printf(cntxt->fdout,"#OLTP %6d lock for client %d:", GDKms(),
cntxt->idx);
@@ -142,19 +140,18 @@ OLTPlock(Client cntxt, MalBlkPtr mb, Mal
#endif
MT_lock_set(&mal_oltpLock);
- // check if all the locks are available
- cnt = 0;
+ // check if all write locks are available
for( i=1; i< pci->argc; i++){
lck= getVarConstant(mb, getArg(pci,i)).val.ival;
- if ( lck > 0)
- cnt += oltp_locks[lck].locked == 0;
- else cnt++;
+ if ( lck > 0 && oltp_locks[lck].locked )
+ break;
}
- if( cnt == pci->argc -1){
+ if( i == pci->argc ){
#ifdef _DEBUG_OLTP_
mnstr_printf(cntxt->fdout,"#OLTP %6d set lock for
client %d\n", GDKms(), cntxt->idx);
#endif
+ clk = GDKms();
for( i=1; i< pci->argc; i++){
lck= getVarConstant(mb, getArg(pci,i)).val.ival;
// only set the write locks
@@ -165,7 +162,6 @@ OLTPlock(Client cntxt, MalBlkPtr mb, Mal
oltp_locks[lck].locked = 1;
}
}
- //OLTPdump_(cntxt,"#grabbed the locks\n");
MT_lock_unset(&mal_oltpLock);
return MAL_SUCCEED;
} else {
@@ -173,8 +169,9 @@ OLTPlock(Client cntxt, MalBlkPtr mb, Mal
#ifdef _DEBUG_OLTP_
mnstr_printf(cntxt->fdout,"#OLTP %d delay imposed for
client %d\n", GDKms(), cntxt->idx);
#endif
+ MT_sleep_ms(LOCKDELAY);
}
- } while( GDKms() - ms < LOCKTIMEOUT);
+ } while( GDKms() - clk < LOCKTIMEOUT);
#ifdef _DEBUG_OLTP_
mnstr_printf(cntxt->fdout,"#OLTP %6d proceed query for client %d\n",
GDKms(), cntxt->idx);
@@ -184,7 +181,7 @@ OLTPlock(Client cntxt, MalBlkPtr mb, Mal
cpy = getName("copy_from");
for( i = 0; i < mb->stop; i++)
- if( getModuleId(getInstrPtr(mb,i)) == sql &&
getFunctionId(getInstrPtr(mb,i)) == cpy){
+ if( getFunctionId(getInstrPtr(mb,i)) == cpy &&
getModuleId(getInstrPtr(mb,i)) == sql ){
#ifdef _DEBUG_OLTP_
mnstr_printf(cntxt->fdout,"#OLTP %6d bail out a
concurrent copy into %d\n", GDKms(), cntxt->idx);
#endif
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list