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/maf.c src/lib/maf.c index 5f5dd0d..8ffda67 100644 --- src/lib/maf.c +++ src/lib/maf.c @@ -8,31 +8,31 @@ #include "maf.h" #include "hash.h" #include <fcntl.h> char *mafRegDefTxUpstream = "txupstream"; // transcription start size upstream region struct mafFile *mafMayOpen(char *fileName) /* Open up a maf file and verify header. */ { struct mafFile *mf; struct lineFile *lf; char *line, *word; char *sig = "##maf"; -if ((lf = lineFileMayOpen(fileName, TRUE)) == NULL) +if ((lf = lineFileUdcMayOpen(fileName, TRUE)) == NULL) return NULL; AllocVar(mf); mf->lf = lf; lineFileNeedNext(lf, &line, NULL); if (!startsWith(sig, line)) { errAbort("%s does not start with %s", fileName, sig); } line += strlen(sig); while ((word = nextWord(&line)) != NULL) { /* Parse name=val. */ char *name = word;