зеркало из https://github.com/github/vitess-gh.git
Cleanup from capabilities PR
Signed-off-by: Morgan Tocker <tocker@gmail.com>
This commit is contained in:
Родитель
2113547dff
Коммит
d2e0312d0e
|
@ -37,3 +37,5 @@ if [[ "$VTTOP" == "${VTTOP/\/src\/vitess.io\/vitess/}" ]]; then
|
|||
echo "WARNING: VTTOP($VTTOP) does not contain src/vitess.io/vitess"
|
||||
fi
|
||||
|
||||
# For Legacy scripts
|
||||
export MYSQL_FLAVOR=MySQL56
|
||||
|
|
|
@ -29,51 +29,51 @@ const (
|
|||
)
|
||||
|
||||
// Mysqld is the object that represents a mysqld daemon running on this server.
|
||||
type CapabilitySet struct {
|
||||
type capabilitySet struct {
|
||||
flavor mysqlFlavor
|
||||
version serverVersion
|
||||
}
|
||||
|
||||
func NewCapabilitySet(f mysqlFlavor, v serverVersion) (c CapabilitySet) {
|
||||
func newCapabilitySet(f mysqlFlavor, v serverVersion) (c capabilitySet) {
|
||||
c.flavor = f
|
||||
c.version = v
|
||||
return
|
||||
}
|
||||
|
||||
func (c *CapabilitySet) HasMySQLUpgradeInServer() bool {
|
||||
return c.IsMySQLLike() && c.version.atLeast(serverVersion{Major: 8, Minor: 0, Patch: 16})
|
||||
func (c *capabilitySet) hasMySQLUpgradeInServer() bool {
|
||||
return c.isMySQLLike() && c.version.atLeast(serverVersion{Major: 8, Minor: 0, Patch: 16})
|
||||
}
|
||||
func (c *CapabilitySet) HasInitializeInServer() bool {
|
||||
return c.IsMySQLLike() && c.version.atLeast(serverVersion{Major: 5, Minor: 7, Patch: 0})
|
||||
func (c *capabilitySet) hasInitializeInServer() bool {
|
||||
return c.isMySQLLike() && c.version.atLeast(serverVersion{Major: 5, Minor: 7, Patch: 0})
|
||||
}
|
||||
func (c *CapabilitySet) HasMySQLxEnabledByDefault() bool {
|
||||
return c.IsMySQLLike() && c.version.atLeast(serverVersion{Major: 8, Minor: 0, Patch: 11})
|
||||
func (c *capabilitySet) hasMySQLxEnabledByDefault() bool {
|
||||
return c.isMySQLLike() && c.version.atLeast(serverVersion{Major: 8, Minor: 0, Patch: 11})
|
||||
}
|
||||
func (c *CapabilitySet) HasPersistConfig() bool {
|
||||
return c.IsMySQLLike() && c.version.atLeast(serverVersion{Major: 8, Minor: 0, Patch: 0})
|
||||
func (c *capabilitySet) hasPersistConfig() bool {
|
||||
return c.isMySQLLike() && c.version.atLeast(serverVersion{Major: 8, Minor: 0, Patch: 0})
|
||||
}
|
||||
func (c *CapabilitySet) HasShutdownCommand() bool {
|
||||
return (c.IsMySQLLike() && c.version.atLeast(serverVersion{Major: 5, Minor: 7, Patch: 9})) || (c.IsMariaDB() && c.version.atLeast(serverVersion{Major: 10, Minor: 0, Patch: 4}))
|
||||
func (c *capabilitySet) hasShutdownCommand() bool {
|
||||
return (c.isMySQLLike() && c.version.atLeast(serverVersion{Major: 5, Minor: 7, Patch: 9})) || (c.isMariaDB() && c.version.atLeast(serverVersion{Major: 10, Minor: 0, Patch: 4}))
|
||||
}
|
||||
func (c *CapabilitySet) HasBackupLocks() bool {
|
||||
return c.IsMySQLLike() && c.version.atLeast(serverVersion{Major: 8, Minor: 0, Patch: 0})
|
||||
func (c *capabilitySet) hasBackupLocks() bool {
|
||||
return c.isMySQLLike() && c.version.atLeast(serverVersion{Major: 8, Minor: 0, Patch: 0})
|
||||
}
|
||||
func (c *CapabilitySet) HasDefaultUft8mb4() bool {
|
||||
return c.IsMySQLLike() && c.version.atLeast(serverVersion{Major: 8, Minor: 0, Patch: 0})
|
||||
func (c *capabilitySet) hasDefaultUft8mb4() bool {
|
||||
return c.isMySQLLike() && c.version.atLeast(serverVersion{Major: 8, Minor: 0, Patch: 0})
|
||||
}
|
||||
func (c *CapabilitySet) HasSemiSyncEnabledByDefault() bool {
|
||||
return c.IsMariaDB() && c.version.atLeast(serverVersion{Major: 10, Minor: 3, Patch: 3})
|
||||
func (c *capabilitySet) hasSemiSyncEnabledByDefault() bool {
|
||||
return c.isMariaDB() && c.version.atLeast(serverVersion{Major: 10, Minor: 3, Patch: 3})
|
||||
}
|
||||
|
||||
// IsMySQLLike tests if the server is either MySQL
|
||||
// or Percona Server. At least currently, Vitess doesn't
|
||||
// make use of any specific Percona Server features.
|
||||
func (c *CapabilitySet) IsMySQLLike() bool {
|
||||
func (c *capabilitySet) isMySQLLike() bool {
|
||||
return c.flavor == flavorMySQL || c.flavor == flavorPercona
|
||||
}
|
||||
|
||||
// IsMariaDB tests if the server is MariaDB.
|
||||
// IsMySQLLike() and IsMariaDB() are mutually exclusive
|
||||
func (c *CapabilitySet) IsMariaDB() bool {
|
||||
func (c *capabilitySet) isMariaDB() bool {
|
||||
return c.flavor == flavorMariaDB
|
||||
}
|
||||
|
|
|
@ -89,7 +89,7 @@ type Mysqld struct {
|
|||
dbaPool *dbconnpool.ConnectionPool
|
||||
appPool *dbconnpool.ConnectionPool
|
||||
|
||||
capabilities CapabilitySet
|
||||
capabilities capabilitySet
|
||||
|
||||
// mutex protects the fields below.
|
||||
mutex sync.Mutex
|
||||
|
@ -119,13 +119,13 @@ func NewMysqld(dbcfgs *dbconfigs.DBConfigs) *Mysqld {
|
|||
if getErr != nil || err != nil {
|
||||
f, v, err = getVersionFromEnv()
|
||||
if err != nil {
|
||||
panic("Could not detect version from mysqld --version or MYSQL_FLAVOR")
|
||||
panic("could not detect version from mysqld --version or MYSQL_FLAVOR")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
log.Infof("Using flavor: %v, version: %v", f, v)
|
||||
result.capabilities = NewCapabilitySet(f, v)
|
||||
result.capabilities = newCapabilitySet(f, v)
|
||||
return result
|
||||
}
|
||||
|
||||
|
@ -151,7 +151,7 @@ func getVersionFromEnv() (flavor mysqlFlavor, ver serverVersion, err error) {
|
|||
case "MySQL56":
|
||||
return flavorMySQL, serverVersion{5, 7, 10}, nil
|
||||
}
|
||||
return flavor, ver, fmt.Errorf("Could not determine version from MYSQL_FLAVOR: %s", env)
|
||||
return flavor, ver, fmt.Errorf("could not determine version from MYSQL_FLAVOR: %s", env)
|
||||
}
|
||||
|
||||
func getVersionString() (string, error) {
|
||||
|
@ -183,19 +183,19 @@ func parseVersionString(version string) (flavor mysqlFlavor, ver serverVersion,
|
|||
}
|
||||
v := versionRegex.FindStringSubmatch(version)
|
||||
if len(v) != 4 {
|
||||
return flavor, ver, fmt.Errorf("Could not parse server version from: %s", version)
|
||||
return flavor, ver, fmt.Errorf("could not parse server version from: %s", version)
|
||||
}
|
||||
ver.Major, err = strconv.Atoi(string(v[1]))
|
||||
if err != nil {
|
||||
return flavor, ver, fmt.Errorf("Could not parse server version from: %s", version)
|
||||
return flavor, ver, fmt.Errorf("could not parse server version from: %s", version)
|
||||
}
|
||||
ver.Minor, err = strconv.Atoi(string(v[2]))
|
||||
if err != nil {
|
||||
return flavor, ver, fmt.Errorf("Could not parse server version from: %s", version)
|
||||
return flavor, ver, fmt.Errorf("could not parse server version from: %s", version)
|
||||
}
|
||||
ver.Patch, err = strconv.Atoi(string(v[3]))
|
||||
if err != nil {
|
||||
return flavor, ver, fmt.Errorf("Could not parse server version from: %s", version)
|
||||
return flavor, ver, fmt.Errorf("could not parse server version from: %s", version)
|
||||
}
|
||||
|
||||
return
|
||||
|
@ -216,7 +216,7 @@ func (mysqld *Mysqld) RunMysqlUpgrade() error {
|
|||
return client.RunMysqlUpgrade(context.TODO())
|
||||
}
|
||||
|
||||
if mysqld.capabilities.HasMySQLUpgradeInServer() {
|
||||
if mysqld.capabilities.hasMySQLUpgradeInServer() {
|
||||
log.Warningf("MySQL version has built-in upgrade, skipping RunMySQLUpgrade")
|
||||
return nil
|
||||
}
|
||||
|
@ -650,7 +650,7 @@ func (mysqld *Mysqld) installDataDir(cnf *Mycnf) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if mysqld.capabilities.HasInitializeInServer() {
|
||||
if mysqld.capabilities.hasInitializeInServer() {
|
||||
log.Infof("Installing data dir with mysqld --initialize-insecure")
|
||||
args := []string{
|
||||
"--defaults-file=" + cnf.path,
|
||||
|
@ -736,7 +736,7 @@ func (mysqld *Mysqld) getMycnfTemplates(root string) []string {
|
|||
// Percona Server == MySQL in this context
|
||||
|
||||
f := flavorMariaDB
|
||||
if mysqld.capabilities.IsMySQLLike() {
|
||||
if mysqld.capabilities.isMySQLLike() {
|
||||
f = flavorMySQL
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче