Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetAccountIdByName ¶ added in v1.2.0
func GetAccountIdByName(accountName string, txn executor.TxnExecutor) (int32, error)
GetAccountIdByName get accountId by accountName when upgrade account
Types ¶
type Locker ¶
type Locker interface {
// Get return true means get lock
Get(ctx context.Context, key string) (bool, error)
}
Locker locker is used to get lock to bootstrap. Only one cn can get lock to bootstrap. Other cns need to wait bootstrap completed.
type Option ¶ added in v1.2.0
type Option func(s *service)
Option option for bootstrap service
func WithCheckUpgradeDuration ¶ added in v1.2.0
WithCheckUpgradeDuration setup check upgrade duration
func WithCheckUpgradeTenantDuration ¶ added in v1.2.0
WithCheckUpgradeDuration setup check upgrade duration
func WithCheckUpgradeTenantWorkers ¶ added in v1.2.0
WithCheckUpgradeTenantWorkers setup upgrade tenant workers
func WithUpgradeHandles ¶ added in v1.2.0
func WithUpgradeHandles(handles []VersionHandle) Option
WithUpgradeHandles reset upgrade handles
func WithUpgradeTenantBatch ¶ added in v1.2.0
WithUpgradeTenantBatch setup upgrade tenant batch
type Service ¶ added in v1.2.0
type Service interface {
// Bootstrap try to bootstrap mo cluster
Bootstrap(ctx context.Context) error
// BootstrapUpgrade bootstrap upgrade framework
BootstrapUpgrade(ctx context.Context) error
// MaybeUpgradeTenant used to upgrade tenant metadata if the tenant is old version.
// Return true, nil means tenant upgraded, the call need to load tenant again to get
// latest tenant info.
MaybeUpgradeTenant(
ctx context.Context,
tenantFetchFunc func() (int32, string, error),
txnOp client.TxnOperator) (bool, error)
// UpgradeTenant used to manual upgrade tenant metadata
UpgradeTenant(ctx context.Context, tenantName string, retryCount uint32, isALLAccount bool) (bool, error)
// GetFinalVersion Get mo final version, which is based on the current code
GetFinalVersion() string
// GetFinalVersionOffset Get mo final version offset, which is based on the current code
GetFinalVersionOffset() int32
// Close close bootstrap service
Close() error
}
Service is used to bootstrap and upgrade mo cluster.
In bootstrap, it will create some internal databases and tables at the time of MO initialization according to a specific logic. It provides the necessary dependencies for other components to be launched later.
In upgrade, it will upgrade the metadata between two MO versions. When there is a need to modify the original data (e.g. create a system table, modify the system table structure, etc.) between two MO versions, then an upgrade process is required. This process is used to ensure that each tenant's data is properly upgraded and updated.
Note that, this service is not used to bootstrap logservice and dn. The internal databases and tables as below: 1. mo_indexes in mo_catalog 2. task infrastructure database
type VersionHandle ¶ added in v1.2.0
type VersionHandle interface {
// Metadata version metadata
Metadata() versions.Version
// Prepare prepare upgrade. This upgrade will be executed before cluster and tenant upgrade.
Prepare(ctx context.Context, txn executor.TxnExecutor, final bool) error
// ClusterNeedUpgrade handle upgrade cluster metadata. This upgrade will be executed before
// tenant upgrade.
HandleClusterUpgrade(ctx context.Context, txn executor.TxnExecutor) error
// HandleTenantUpgrade handle upgrade a special tenant.
HandleTenantUpgrade(ctx context.Context, tenantID int32, txn executor.TxnExecutor) error
// HandleCreateFrameworkDeps Used to execute pre dependencies when creating a new upgrade framework
// based on the current version for the first time.
HandleCreateFrameworkDeps(txn executor.TxnExecutor) error
}
VersionHandle every version that needs to be upgraded with cluster metadata needs to have an VersionHandle implementation!