Changeset: d407f9184adc for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d407f9184adc
Modified Files:
        monetdb5/scheduler/srvpool.c
Branch: default
Log Message:

Remove obsolete registered functions.


diffs (66 lines):

diff --git a/monetdb5/scheduler/srvpool.c b/monetdb5/scheduler/srvpool.c
--- a/monetdb5/scheduler/srvpool.c
+++ b/monetdb5/scheduler/srvpool.c
@@ -297,11 +297,25 @@ SRVPOOLdiscover(Client cntxt)
  * a list of those already sent.
  */
 static int
-SRVPOOLfind(int srv, str qry){
-       Registry r;
+SRVPOOLfind(Client cntxt, int srv, str qry){
+       Registry r, garbage;
+       Symbol sym;
+
        for ( r= servers[srv].nxt; r; r= r->nxt)
-       if ( strcmp(qry, r->fcn)==0)
+       if ( strcmp(qry, r->fcn)==0) {
+               /* double check on local user module as well */
+               sym = findSymbol(cntxt->nspace, userRef, putName(qry, 
strlen(qry)));
+               if (sym == NULL) {
+                       /* remove garbage */
+                       if ( r->nxt) {
+                               garbage = r->nxt;
+                               *r = *r->nxt;
+                               GDKfree(garbage);
+                       }
+                       continue;
+               }
                return 1;
+       }
        return 0;
 }
 
@@ -327,7 +341,7 @@ SRVPOOLregisterInternal(Client cntxt, st
        if ( con) GDKfree(con);
                
 
-       if( !SRVPOOLfind(srv, fname) ){
+       if( !SRVPOOLfind(cntxt, srv, fname) ){
                if ( servers[srv].conn ) {
                        if ( nrservers > 1) /* register remotely */
                                msg = RMTregisterInternal(cntxt, 
servers[srv].conn, userRef, fname);
@@ -388,20 +402,20 @@ SRVPOOLserver(Client cntxt, MalBlkPtr mb
 
        for ( j= i=0; i < pci->retc && j < nrservers; j++)  {
                if ( servers[j].conn ) {
-                       if ( !SRVPOOLfind(j,plan) ){
+                       if ( !SRVPOOLfind(cntxt, j,plan) ){
                                msg = SRVPOOLregisterInternal(cntxt, 
servers[i].uri, plan);
                                if ( msg) {
 #ifdef DEBUG_RUN_SRVPOOL
-                                       mnstr_printf(cntxt->fdout,"#failed to 
register at %d\n",i);
+                                       mnstr_printf(cntxt->fdout,"#failed to 
register %s at %d\n",plan,i);
                                        mnstr_printf(cntxt->fdout,"#%s\n",msg);
 #endif
                                        GDKfree(msg);
                                }
                        }
-                       if ( SRVPOOLfind(j,plan) ){
+                       if ( SRVPOOLfind(cntxt, j,plan) ){
                                *(str*) getArgReference(stk,pci,i++) = 
GDKstrdup(servers[j].conn);
 #ifdef DEBUG_RUN_SRVPOOL
-                               mnstr_printf(cntxt->fdout,"#found it on server 
%d\n",j);
+                               mnstr_printf(cntxt->fdout,"#found %s on server 
%d\n",plan,j);
 #endif
                                fnd ++;
                        }
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to