Changeset: adf6eb846638 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=adf6eb846638
Modified Files:
        tools/merovingian/daemon/multiplex-funnel.c
Branch: Apr2011
Log Message:

multiplex-funnel: don't assume we can always do a connection switch-over

Deferred connection management also involves putting new connections
life, or dropping connections.  Hence, we cannot print the from/to in
such case.  Don't try to.


diffs (48 lines):

diff --git a/tools/merovingian/daemon/multiplex-funnel.c 
b/tools/merovingian/daemon/multiplex-funnel.c
--- a/tools/merovingian/daemon/multiplex-funnel.c
+++ b/tools/merovingian/daemon/multiplex-funnel.c
@@ -529,17 +529,33 @@
                /* evaluate if connections have to be switched */
                for (i = 0; i < m->dbcc; i++) {
                        if (m->dbcv[i]->connupdate) {
-                               /* put new connection live */
-                               Mfprintf(stdout, "performing deferred 
connection cycle "
-                                               "for %s from %s to %s\n",
-                                               m->dbcv[i]->database,
-                                               mapi_get_uri(m->dbcv[i]->conn),
-                                               
mapi_get_uri(m->dbcv[i]->newconn));
-                               mapi_disconnect(m->dbcv[i]->conn);
-                               mapi_destroy(m->dbcv[i]->conn);
-                               m->dbcv[i]->conn = m->dbcv[i]->newconn;
-                               m->dbcv[i]->newconn = NULL;
-                               m->dbcv[i]->connupdate = 0;
+                               if (m->dbcv[i]->newconn != NULL) {
+                                       /* put new connection live */
+                                       Mfprintf(stdout, "performing deferred 
connection cycle "
+                                                       "for %s from %s to 
%s\n",
+                                                       m->dbcv[i]->database,
+                                                       m->dbcv[i]->conn != 
NULL ?
+                                                               
mapi_get_uri(m->dbcv[i]->conn) :
+                                                               "<unconnected>",
+                                                       
mapi_get_uri(m->dbcv[i]->newconn));
+                                       mapi_disconnect(m->dbcv[i]->conn);
+                                       mapi_destroy(m->dbcv[i]->conn);
+                                       m->dbcv[i]->conn = m->dbcv[i]->newconn;
+                                       m->dbcv[i]->newconn = NULL;
+                                       m->dbcv[i]->connupdate = 0;
+                               } else {
+                                       /* put new connection live */
+                                       Mfprintf(stdout, "performing deferred 
connection drop "
+                                                       "for %s from %s\n",
+                                                       m->dbcv[i]->database,
+                                                       m->dbcv[i]->conn != 
NULL ?
+                                                               
mapi_get_uri(m->dbcv[i]->conn) :
+                                                               
"<unconnected>");
+                                       mapi_disconnect(m->dbcv[i]->conn);
+                                       mapi_destroy(m->dbcv[i]->conn);
+                                       m->dbcv[i]->conn = NULL;
+                                       m->dbcv[i]->connupdate = 0;
+                               }
                        }
                }
 
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to