X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c502c5a50aae825683ee4cff629c6839a4209501..b041a675c577e174680913e0da0bf69b1cca83b6:/sdk/go/arvados/fs_site.go diff --git a/sdk/go/arvados/fs_site.go b/sdk/go/arvados/fs_site.go index 0a561f667a..bb2eee7792 100644 --- a/sdk/go/arvados/fs_site.go +++ b/sdk/go/arvados/fs_site.go @@ -161,7 +161,8 @@ func (fs *customFileSystem) mountCollection(parent inode, id string) inode { return cfs } -func (fs *customFileSystem) newProjectNode(root inode, name, uuid string, properties map[string]interface{}) inode { +func (fs *customFileSystem) newProjectNode(root inode, name, uuid string, proj *Group) inode { + var projLoading sync.Mutex return &lookupnode{ stale: fs.Stale, loadOne: func(parent inode, name string) (inode, error) { return fs.projectsLoadOne(parent, uuid, name) }, @@ -174,10 +175,19 @@ func (fs *customFileSystem) newProjectNode(root inode, name, uuid string, proper name: name, modTime: time.Now(), mode: 0755 | os.ModeDir, - sys: &Group{ - GroupClass: "project", - UUID: uuid, - Properties: properties, + sys: func() interface{} { + projLoading.Lock() + defer projLoading.Unlock() + if proj != nil { + return proj + } + var g Group + err := fs.RequestAndDecode(&g, "GET", "arvados/v1/groups/"+uuid, nil, nil) + if err != nil { + return err + } + proj = &g + return proj }, }, },