f2ef97844c0973a30cbbc1afcdd01b4096143a69 lrnassar Wed Jun 3 10:56:07 2026 -0700 Add date-based dataVersion to composite/superTrack otto containers. refs #36455 Composite and superTrack container pages do not display 'Data last updated at UCSC' (printUpdateTime returns early for them), so a dataVersion file is the only freshness signal a user sees there. Add one to the dbVar (dbVarSv), panelApp, clinGen (clinGenComp) and decipher (decipherContainer) containers. Each otto build script writes a per-assembly 'Last updated <date>' file when it actually updates the data, and the container stanza points to it via dataVersion. clinGen's container date is written by its three displayed feeds (makeDosage, makeGeneValidity, makeClinGenCspec); decipher writes hg38 only (hg19 is frozen). diff --git src/hg/utils/otto/dbVar/checkDbVar.sh src/hg/utils/otto/dbVar/checkDbVar.sh index 2e5d250d999..21e899a001e 100755 --- src/hg/utils/otto/dbVar/checkDbVar.sh +++ src/hg/utils/otto/dbVar/checkDbVar.sh @@ -119,30 +119,33 @@ printf "Inspect vs the live release/{hg19,hg38}/ copies, then either:\n" printf " - rsync each .new/ over its live dir to accept, or\n" printf " - rm -rf release/{hg19,hg38}.new to reject (next cron re-downloads).\n" printf "lastUpdate was NOT bumped; the next cron run will retry the fetch.\n" exit 1 fi # Validation passed -- promote .new/ to live via directory rename. Per-file # mv would give smaller inconsistency windows but per-directory mv on the # same filesystem is already effectively atomic, and keeping the rollback # as a whole-directory snapshot is simpler to reason about. for db in hg19 hg38; do rm -rf release/${db}.prev [ -d release/${db} ] && mv release/${db} release/${db}.prev mv release/${db}.new release/${db} + # dbVar is a superTrack, whose container page does not show "Data last + # updated"; this dataVersion file gives it a freshness date instead. + printf 'Last updated %s\n' "$today" > release/${db}/version.txt done # Detect new .bb files that NCBI has added to the hub since the last # acknowledged state (stored in knownFiles.txt). Union both assemblies # so a file added to only one assembly still gets flagged. If any are # found, the email should include the list so a human can decide whether # to add a trackDb stanza + gbdb symlink. # Use find rather than `ls *.bb` so a partial hub state (one assembly # missing files) doesn't blow up the script via set -e after release/ # has already been promoted. currentFiles=$(find ${today}/dbVar/hg19 ${today}/dbVar/hg38 -maxdepth 1 -name '*.bb' -printf '%f\n' | sort -u) newFiles=$(comm -23 <(echo "$currentFiles") <(grep -v '^#' ${WORKDIR}/knownFiles.txt | grep -v '^$' | sort -u)) # Print the email body: what ran, any new files, and a reminder of next # steps if there are additions. Everything below this point goes into