a8273be9da3b7a87a8d829d3efb79bce66e22039 angie Wed Jan 23 17:42:02 2019 -0800 New hg.conf settings sessionDataDir and sessionDataDbPrefix enable hgSession to move saved session trash files and customTrash tables into safe storage, so trash cleaner can be simpler. refs #22440 When hgSession saves a session to namedSessionDb: * If sessionDataDir is set in hg.conf (e.g. /data/apache/userdata on hgwdev), trash paths in cart variable values and in the contents of ctfile_$db and customComposite-$db files are replaced with paths in a directory hierarchy under sessionDataDir. Files are moved from trash into the new directories and symlinks are made from trash locations to new locations. * If sessionDataDbPrefix is set in hg.conf (e.g. customData), customTrash tables named in dbTableName settings in ctfile_$db are moved to a database (e.g. customData03 on the third day of the month). dbTableName settings are updated to point to the new locations. If sessionDataDir is also set and a table contains a trash path, then the table is updated to contain to the new path under sessionDataDir. sessionDataDir must be an absolute path to keep the symlinks straightforward. The new directory hierarchy under sessionDataDir is A/B/C/D where A-D are defined as follows: * A: the first two characters of the hex string md5sum of namedSessionDb.userName, i.e. the URI-encoded username truncated to varchar(32) (there can be tens of thousands of userNames; using this mini-hash distributes them across up to 256 subdirectories of sessionDataDir) * B: the URI-encoded userName * C: the first 8 characters of the hex string md5sum of namedSessionDb.sessionName, i.e. the URI-encoded session name truncated to varchar(255) * D: the original path below ../trash/ So, for example, the file ../trash/ct/ct_hgwdev_angie_11fc0_2b5970.maf could be moved to /data/apache/userdata/fb/AngieHinrichs/cf2a2304/ct/ct_hgwdev_angie_11fc0_2b5970.maf diff --git src/hg/inc/customTrack.h src/hg/inc/customTrack.h index 8f23bdd..dc0c7ae 100644 --- src/hg/inc/customTrack.h +++ src/hg/inc/customTrack.h @@ -21,32 +21,32 @@ #define CT_DEFAULT_TRACK_NAME "User Track" #define CT_DEFAULT_TRACK_DESCR "User Supplied Track" #define CT_MANAGE_BUTTON_LABEL "manage custom tracks" #define CT_ADD_BUTTON_LABEL "add custom tracks" /* setting used when creating custom tracks in table browser -- indicates * custom track file in trash has not been through the factory parser */ #define CT_UNPARSED "unparsed" /* TODO: Remove this when hgCustom is ready for release. This cart variable is * only used to preserve old behavior during testing */ struct customTrack /* A custom track. */ -/* NOTE: if you add any *File members to struct customTrack, please update - * cart.c cartCopyCustomTracks() accordingly! */ +/* NOTE: if you add any trash-stored *File members to struct customTrack, please make sure they + * appear in the ctfile track line, or add it to stealthFiles in hgSession/sessionData.c. */ { struct customTrack *next; /* Next in list. */ struct trackDb *tdb; /* TrackDb description of track. */ char *genomeDb; /* Genome database the track is associated */ struct bed *bedList; /* List of beds. */ int fieldCount; /* Number of fields in bed. */ int maxChromName; /* max chromName length */ boolean needsLift; /* True if coordinates need lifting. */ boolean fromPsl; /* Track was derived from psl file. */ boolean wiggle; /* This is a wiggle track */ boolean dbTrack; /* This track is in the trash database */ char *dbTableName; /* name of table in trash database */ char *dbTrackType; /* type of data in this db table */ boolean dbDataLoad; /* FALSE == failed loading */ char *dbStderrFile; /* trash file to receive stderr of loaders */