// Initialize creates a repositories manager that is handled through package functions. func Initialize() error { m := &repoManager{ repoToUUID: make(map[dvid.RepoID]dvid.UUID), versionToUUID: make(map[dvid.VersionID]dvid.UUID), uuidToVersion: make(map[dvid.UUID]dvid.VersionID), repos: make(map[dvid.UUID]*repoT), repoID: 1, versionID: 1, instanceID: 1, } var err error m.store, err = storage.MetaDataStore() if err != nil { return err } // Set the package variable. We are good to go... manager = m // Load the repo metadata if err = m.loadMetadata(); err != nil { return fmt.Errorf("Error loading metadata: %v", err) } // If there are any migrations registered, run them. migrator_mu.RLock() defer migrator_mu.RUnlock() for desc, f := range migrators { dvid.Infof("Running migration: %s\n", desc) go f() } return nil }
// Initialize creates a repositories manager that is handled through package functions. func Initialize(initMetadata bool, iconfig *InstanceConfig) error { m := &repoManager{ repoToUUID: make(map[dvid.RepoID]dvid.UUID), versionToUUID: make(map[dvid.VersionID]dvid.UUID), uuidToVersion: make(map[dvid.UUID]dvid.VersionID), repos: make(map[dvid.UUID]*repoT), repoID: 1, versionID: 1, iids: make(map[dvid.InstanceID]DataService), instanceIDGen: iconfig.Gen, instanceIDStart: iconfig.Start, } if iconfig.Gen == "" { m.instanceIDGen = "sequential" } if iconfig.Start > 1 { m.instanceID = iconfig.Start } else { m.instanceID = 1 } var err error m.store, err = storage.MetaDataStore() if err != nil { return err } // Set the package variable. We are good to go... manager = m if initMetadata { // Initialize repo management data in storage dvid.Infof("Initializing repo management data in storage...\n") if err := m.putNewIDs(); err != nil { return err } if err := m.putCaches(); err != nil { return err } m.formatVersion = RepoFormatVersion } else { // Load the repo metadata dvid.Infof("Loading metadata from storage...\n") if err = m.loadMetadata(); err != nil { return fmt.Errorf("Error loading metadata: %v", err) } // If there are any migrations registered, run them. migrator_mu.RLock() defer migrator_mu.RUnlock() for desc, f := range migrators { dvid.Infof("Running migration: %s\n", desc) go f() } } return nil }