225c0d55992aefae478461bba278644bdfdda3c5 max Wed Jan 15 08:33:57 2014 -0800 library changes for the browser box: This changes mostly hdb and jksql,plus - to a smaller extent - various other places in the code that deal with /gbdb/ files. The overall aim is to make it possible to have the data remote at UCSC while having the CGIs on a machine far away. At up to 180msecs distance from UCSC (Europe,Japan), each query can get slow. So I tried to reduce the number of queries sent to UCSC while allowing to keep some mysql tables on localhost. I changed four things: - extend larry's table cache to include field names. The code uses "describe" very often, which is slow from remote. With a table name cache these queries can be handled locally. This is configured in hg.conf - mysql "failover" connections: a mysql connection can have a 2nd connection that is used if a query fails, configured in hg.conf (I didn't call it "remote" connections, because we use that term already in the code) - mysql lazy connects: don't connect a sqlConnection right away, but only when needed. a mysql connect takes >500msecs from across the atlantic. - move gbdb: patch various places that use absolute "/gbdb/" pathnames to go through a central function that can change the filename of gbdb files to something else, as configured in hg.conf Plus patch 1 or 2 lines for more speed + update the hgMirror script diff --git src/lib/udc.c src/lib/udc.c index 4c1746a..0c1e122 100644 --- src/lib/udc.c +++ src/lib/udc.c @@ -1640,15 +1640,26 @@ if (startsWith("http://",url) || startsWith("https://",url)) { if (udcInfoViaHttp(url, &info)) answer = info.size; } else if (startsWith("ftp://",url)) { if (udcInfoViaFtp(url, &info)) answer = info.size; } return answer; } #endif + +boolean udcIsLocal(char *url) +/* return true if file is not a http or ftp file, just a local file */ +{ +// copied from above +char *protocol = NULL, *afterProtocol = NULL, *colon; +udcParseUrl(url, &protocol, &afterProtocol, &colon); +freez(&protocol); +freez(&afterProtocol); +return colon==NULL; +}