return os.Open(fnm)
}
uuid := m[2]
- mnt := "/mnt/" + uuid + "/"
- if !strings.HasPrefix(fnm, mnt) {
+ mnt := "/mnt/" + uuid
+ if fnm != mnt && !strings.HasPrefix(fnm, mnt+"/") {
return os.Open(fnm)
}
}
log.Infof("reading %q from %s using Arvados client", fnm[len(mnt):], uuid)
- return siteFS.Open("by_id/" + uuid + "/" + fnm[len(mnt):])
+ return siteFS.Open("by_id/" + uuid + fnm[len(mnt):])
}
for _, fi := range fis {
if fi.Name() == "." || fi.Name() == ".." {
continue
- } else if fi.IsDir() {
- err = walk(path + "/" + fi.Name())
+ } else if child := path + "/" + fi.Name(); fi.IsDir() {
+ err = walk(child)
if err != nil {
return err
}
- } else if strings.HasSuffix(path, ".gob") || strings.HasSuffix(path, ".gob.gz") {
- files = append(files, path)
+ } else if strings.HasSuffix(child, ".gob") || strings.HasSuffix(child, ".gob.gz") {
+ files = append(files, child)
}
}
return nil
}
+ log.Infof("LoadDir: walk dir %s", path)
err := walk(path)
if err != nil {
return err
cseqs := []CompactSequence{}
variantmap := map[tileLibRef]tileVariantID{}
errs := make(chan error, len(files))
+ log.Infof("LoadDir: read %d files", len(files))
for _, path := range files {
path := path
go func() {
}
mtx.Lock()
defer mtx.Unlock()
- if err := tilelib.loadTagSet(ent.TagSet); err != nil {
- return err
+ if tilelib.taglib == nil || tilelib.taglib.Len() != len(ent.TagSet) {
+ // load first set of tags, or
+ // report mismatch if 2 sets
+ // have different #tags.
+ if err := tilelib.loadTagSet(ent.TagSet); err != nil {
+ return err
+ }
}
if err := tilelib.loadTileVariants(ent.TileVariants, variantmap); err != nil {
return err
return err
}
}
+ log.Info("LoadDir: loadCompactGenomes")
err = tilelib.loadCompactGenomes(cgs, variantmap, onLoadGenome)
if err != nil {
return err
}
+ log.Info("LoadDir: loadCompactSequences")
err = tilelib.loadCompactSequences(cseqs, variantmap)
if err != nil {
return err
}
+ log.Info("LoadDir done")
return nil
}