mirror of
https://github.com/minio/minio.git
synced 2024-12-24 22:25:54 -05:00
Initialize global object layer after all subsystems have initialized (#6333)
This is to ensure that object API operations are not performed on a server on which subsystems are yet to be initialized.
This commit is contained in:
parent
8601f29d95
commit
b01e69e08f
@ -174,10 +174,6 @@ func TestServerConfigMigrateV2toV28(t *testing.T) {
|
|||||||
}
|
}
|
||||||
defer os.RemoveAll(fsDir)
|
defer os.RemoveAll(fsDir)
|
||||||
|
|
||||||
globalObjLayerMutex.Lock()
|
|
||||||
globalObjectAPI = objLayer
|
|
||||||
globalObjLayerMutex.Unlock()
|
|
||||||
|
|
||||||
configPath := rootPath + "/" + minioConfigFile
|
configPath := rootPath + "/" + minioConfigFile
|
||||||
|
|
||||||
// Create a corrupted config file
|
// Create a corrupted config file
|
||||||
@ -203,12 +199,12 @@ func TestServerConfigMigrateV2toV28(t *testing.T) {
|
|||||||
t.Fatal("Unexpected error: ", err)
|
t.Fatal("Unexpected error: ", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := migrateConfigToMinioSys(); err != nil {
|
if err := migrateConfigToMinioSys(objLayer); err != nil {
|
||||||
t.Fatal("Unexpected error: ", err)
|
t.Fatal("Unexpected error: ", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize server config and check again if everything is fine
|
// Initialize server config and check again if everything is fine
|
||||||
if err := loadConfig(newObjectLayerFn()); err != nil {
|
if err := loadConfig(objLayer); err != nil {
|
||||||
t.Fatalf("Unable to initialize from updated config file %s", err)
|
t.Fatalf("Unable to initialize from updated config file %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,9 +202,9 @@ func NewConfigSys() *ConfigSys {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Migrates ${HOME}/.minio/config.json to '<export_path>/.minio.sys/config/config.json'
|
// Migrates ${HOME}/.minio/config.json to '<export_path>/.minio.sys/config/config.json'
|
||||||
func migrateConfigToMinioSys() error {
|
func migrateConfigToMinioSys(objAPI ObjectLayer) error {
|
||||||
// Verify if backend already has the file.
|
// Verify if backend already has the file.
|
||||||
if err := checkServerConfig(context.Background(), newObjectLayerFn()); err != errConfigNotFound {
|
if err := checkServerConfig(context.Background(), objAPI); err != errConfigNotFound {
|
||||||
return err
|
return err
|
||||||
} // if errConfigNotFound proceed to migrate..
|
} // if errConfigNotFound proceed to migrate..
|
||||||
|
|
||||||
@ -213,7 +213,7 @@ func migrateConfigToMinioSys() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return saveServerConfig(newObjectLayerFn(), config)
|
return saveServerConfig(objAPI, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize and load config from remote etcd or local config directory
|
// Initialize and load config from remote etcd or local config directory
|
||||||
@ -236,7 +236,7 @@ func initConfig(objAPI ObjectLayer) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Migrates ${HOME}/.minio/config.json to '<export_path>/.minio.sys/config/config.json'
|
// Migrates ${HOME}/.minio/config.json to '<export_path>/.minio.sys/config/config.json'
|
||||||
if err := migrateConfigToMinioSys(); err != nil {
|
if err := migrateConfigToMinioSys(objAPI); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,10 +77,6 @@ func (sys *PolicySys) Remove(bucketName string) {
|
|||||||
|
|
||||||
// IsAllowed - checks given policy args is allowed to continue the Rest API.
|
// IsAllowed - checks given policy args is allowed to continue the Rest API.
|
||||||
func (sys *PolicySys) IsAllowed(args policy.Args) bool {
|
func (sys *PolicySys) IsAllowed(args policy.Args) bool {
|
||||||
if sys == nil {
|
|
||||||
return args.IsOwner
|
|
||||||
}
|
|
||||||
|
|
||||||
sys.RLock()
|
sys.RLock()
|
||||||
defer sys.RUnlock()
|
defer sys.RUnlock()
|
||||||
|
|
||||||
|
@ -313,10 +313,6 @@ func serverMain(ctx *cli.Context) {
|
|||||||
logger.FatalIf(err, "Unable to initialize backend")
|
logger.FatalIf(err, "Unable to initialize backend")
|
||||||
}
|
}
|
||||||
|
|
||||||
globalObjLayerMutex.Lock()
|
|
||||||
globalObjectAPI = newObject
|
|
||||||
globalObjLayerMutex.Unlock()
|
|
||||||
|
|
||||||
// Populate existing buckets to the etcd backend
|
// Populate existing buckets to the etcd backend
|
||||||
if globalDNSConfig != nil {
|
if globalDNSConfig != nil {
|
||||||
initFederatorBackend(newObject)
|
initFederatorBackend(newObject)
|
||||||
@ -326,7 +322,7 @@ func serverMain(ctx *cli.Context) {
|
|||||||
globalConfigSys = NewConfigSys()
|
globalConfigSys = NewConfigSys()
|
||||||
|
|
||||||
// Initialize config system.
|
// Initialize config system.
|
||||||
if err = globalConfigSys.Init(newObjectLayerFn()); err != nil {
|
if err = globalConfigSys.Init(newObject); err != nil {
|
||||||
logger.Fatal(err, "Unable to initialize config system")
|
logger.Fatal(err, "Unable to initialize config system")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -347,7 +343,7 @@ func serverMain(ctx *cli.Context) {
|
|||||||
globalPolicySys = NewPolicySys()
|
globalPolicySys = NewPolicySys()
|
||||||
|
|
||||||
// Initialize policy system.
|
// Initialize policy system.
|
||||||
if err := globalPolicySys.Init(newObjectLayerFn()); err != nil {
|
if err := globalPolicySys.Init(newObject); err != nil {
|
||||||
logger.Fatal(err, "Unable to initialize policy system")
|
logger.Fatal(err, "Unable to initialize policy system")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -355,10 +351,14 @@ func serverMain(ctx *cli.Context) {
|
|||||||
globalNotificationSys = NewNotificationSys(globalServerConfig, globalEndpoints)
|
globalNotificationSys = NewNotificationSys(globalServerConfig, globalEndpoints)
|
||||||
|
|
||||||
// Initialize notification system.
|
// Initialize notification system.
|
||||||
if err := globalNotificationSys.Init(newObjectLayerFn()); err != nil {
|
if err := globalNotificationSys.Init(newObject); err != nil {
|
||||||
logger.Fatal(err, "Unable to initialize notification system")
|
logger.Fatal(err, "Unable to initialize notification system")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
globalObjLayerMutex.Lock()
|
||||||
|
globalObjectAPI = newObject
|
||||||
|
globalObjLayerMutex.Unlock()
|
||||||
|
|
||||||
// Prints the formatted startup message once object layer is initialized.
|
// Prints the formatted startup message once object layer is initialized.
|
||||||
apiEndpoints := getAPIEndpoints(globalMinioAddr)
|
apiEndpoints := getAPIEndpoints(globalMinioAddr)
|
||||||
printStartupMessage(apiEndpoints)
|
printStartupMessage(apiEndpoints)
|
||||||
|
Loading…
Reference in New Issue
Block a user