Skip to content
Snippets Groups Projects
Commit 8ca77dad authored by Pavel Antonov's avatar Pavel Antonov :asterisk:
Browse files

Merge branch 'feature/PRXS-2156-SpaceMigrate' into 'master'

Исправлена ошибка “failed to run space migrations: namespace xxx.migrations already exists” при доступе к окружениям пространства

See merge request perxis/perxis-go!195
parents 41356904 fa4e96c6
No related branches found
No related tags found
No related merge requests found
package spaces
import (
"git.perx.ru/perxis/perxis-go/pkg/errors"
"git.perx.ru/perxis/perxis-go/pkg/service"
)
var (
ErrNotFound = service.ErrNotFound
ErrStateConflict = errors.New("state conflicts with current space state")
ErrOrgIDRequired = errors.New("organization id required")
)
......@@ -10,9 +10,17 @@ const (
StateReady // Пространство готово к использованию
StatePreparing // Пространство готовится в использованию
StateMaintenance // Пространство находится на обслуживании
StateMigration // Пространство в состоянии выполнения миграций
StateDeleting // Пространство удаляется, данные будут удалены
StateError // Произошла ошибка при конфигурации пространства (см. Space.Error)
// StateMigrationScheduled Для пространства запланирована миграция
// При планировании запуска миграции пространства это состояние выступает в роли Lock'а, который не
// позволяет запустить несколько миграций одновременно. Логика планировщика миграций сначала пытается
// установить для пространства состояние StateMigrationScheduled, что удается только в двух случаях:
// пространство находится в состоянии StateReady или же в состояниях StateMigration, StateMigrationScheduled,
// но последнее обновление состояния было более 15-ти минут назад
StateMigrationScheduled
StateMigration // Пространство в состоянии выполнения миграций
StateDeleting // Пространство удаляется, данные будут удалены
StateError // Произошла ошибка при конфигурации пространства (см. Space.Error)
)
func (s State) String() string {
......@@ -25,6 +33,8 @@ func (s State) String() string {
return "Preparing"
case StateMaintenance:
return "Maintenance"
case StateMigrationScheduled:
return "MigrationScheduled"
case StateMigration:
return "Migration"
case StateDeleting:
......@@ -55,10 +65,10 @@ type Space struct {
}
type StateInfo struct {
State State `json:"state" bson:"state"`
Info string `json:"info" bson:"info"`
State State `json:"state" bson:"state,omitempty"`
Info string `json:"info" bson:"info,omitempty"`
Time time.Time `json:"time,omitempty" bson:"time,omitempty"`
DBVersion uint32 `json:"db_version" bson:"db_version"`
DBVersion uint32 `json:"db_version" bson:"db_version,omitempty"`
}
func (s Space) Clone() *Space {
......
......@@ -21,4 +21,5 @@ type Filter struct {
Name []string `json:"name,omitempty" bson:"name"`
State []State `json:"state,omitempty" bson:"state"`
TransferToOrg []string `json:"transfer_to_org" bson:"transfer_to_org"`
Q []string `json:"q" bson:"q"`
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment