Changeset: 53432a128312 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=53432a128312
Modified Files:
monetdb5/optimizer/opt_partition.mx
monetdb5/scheduler/srvpool.c
monetdb5/scheduler/srvpool.mal
Branch: default
Log Message:
Handle remote register later
Postpone remote registration until you determine the servers needed
diffs (102 lines):
diff --git a/monetdb5/optimizer/opt_partition.mx
b/monetdb5/optimizer/opt_partition.mx
--- a/monetdb5/optimizer/opt_partition.mx
+++ b/monetdb5/optimizer/opt_partition.mx
@@ -175,7 +175,6 @@ OPTplanCntrl(Client cntxt, MalBlkPtr mb,
q= newFcnCall(cmb,schedulerRef,srvpoolRef);
q->barrier= BARRIERsymbol;
barrier = getArg(q,0);
- q= pushStr(cmb,q, plan);
setVarType(cmb,x,TYPE_int);
/* get servers to execute the query */
diff --git a/monetdb5/scheduler/srvpool.c b/monetdb5/scheduler/srvpool.c
--- a/monetdb5/scheduler/srvpool.c
+++ b/monetdb5/scheduler/srvpool.c
@@ -242,7 +242,9 @@ SRVPOOLdiscover(Client cntxt, str patter
}
if( msg) {
/* ignore merovingian complaints */
+#ifdef DEBUG_RUN_SRVPOOL
mnstr_printf(cntxt->fdout,"#%s\n", msg);
+#endif
GDKfree(msg);
}
@@ -340,11 +342,7 @@ str
SRVPOOLscheduler(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
int *res = (int*) getArgReference(stk,pci,0);
- str plan = *(str*) getArgReference(stk,pci,1);
- str msg = MAL_SUCCEED;
- int i;
- (void) cntxt;
(void) mb;
(void) stk;
(void) pci;
@@ -354,13 +352,6 @@ SRVPOOLscheduler(Client cntxt, MalBlkPtr
} else {
if (nrservers == 0)
SRVPOOLdiscover(cntxt,"srvpool", 2);
- for ( i = 0; i < nrservers; i++ ) {
- msg = SRVPOOLregisterInternal(cntxt, servers[i].name,
plan);
- if ( msg) {
- mnstr_printf(cntxt->fdout,"#failed to register
at %d\n",i);
- GDKfree(msg);
- }
- }
*res = localExecution;
}
return MAL_SUCCEED;
@@ -371,18 +362,35 @@ SRVPOOLserver(Client cntxt, MalBlkPtr mb
{
int i,j, fnd =0;
str plan = *(str*) getArgReference(stk,pci,pci->retc);
+ str msg = MAL_SUCCEED;
+
(void) cntxt;
(void) mb;
for ( j= i=0; i < pci->retc && j < nrservers; j++) {
- if ( servers[j].conn && SRVPOOLfind(j, plan)) {
- *(str*) getArgReference(stk,pci,i++) =
GDKstrdup(servers[j].conn);
- mnstr_printf(cntxt->fdout,"#found it %d\n",j);
- fnd ++;
+ if ( servers[j].conn ) {
+ if ( !SRVPOOLfind(j,plan) ){
+ msg = SRVPOOLregisterInternal(cntxt,
servers[i].name, plan);
+ if ( msg) {
+#ifdef DEBUG_RUN_SRVPOOL
+ mnstr_printf(cntxt->fdout,"#failed to
register at %d\n",i);
+#endif
+ GDKfree(msg);
+ }
+ }
+ if ( SRVPOOLfind(j,plan) ){
+ *(str*) getArgReference(stk,pci,i++) =
GDKstrdup(servers[j].conn);
+#ifdef DEBUG_RUN_SRVPOOL
+ mnstr_printf(cntxt->fdout,"#found it %d\n",j);
+#endif
+ fnd ++;
+ }
}
+#ifdef DEBUG_RUN_SRVPOOL
mnstr_printf(cntxt->fdout,"#server %d uri %s conn %s\n", j,
(servers[j].uri?servers[j].uri:"null"),
(servers[j].conn?servers[j].conn:"null"));
+#endif
}
if ( fnd != pci->retc)
throw(MAL,"srvpool.server","Not enough connections");
diff --git a/monetdb5/scheduler/srvpool.mal b/monetdb5/scheduler/srvpool.mal
--- a/monetdb5/scheduler/srvpool.mal
+++ b/monetdb5/scheduler/srvpool.mal
@@ -16,7 +16,7 @@
# All Rights Reserved.
module srvpool;
-pattern scheduler.srvpool(plan:str):int
+pattern scheduler.srvpool():int
address SRVPOOLscheduler
comment "Run a program block in parallel.";
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list