Fix lockup when initalizing database. (#875)

pull/865/head
Todd Knight 5 years ago committed by GitHub
parent 2bafd8a07c
commit 595a86508e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -257,15 +257,16 @@ func (c *InitCommand) Run(args []string) (retCode int) {
migrationUrlToParse = urlToParse
}
dbaseUrl, err := config.ParseAddress(urlToParse)
migrationUrl, err := config.ParseAddress(migrationUrlToParse)
if err != nil && err != config.ErrNotAUrl {
c.UI.Error(fmt.Errorf("Error parsing database url: %w", err).Error())
c.UI.Error(fmt.Errorf("Error parsing migration url: %w", err).Error())
return 1
}
migrationUrl = strings.TrimSpace(migrationUrl)
// This database is used to keep an exclusive lock on the database for the
// remainder of the command
dBase, err := sql.Open(dialect, dbaseUrl)
dBase, err := sql.Open(dialect, migrationUrl)
if err != nil {
c.UI.Error(fmt.Errorf("Error establishing db connection for locking: %w", err).Error())
return 1
@ -310,31 +311,22 @@ func (c *InitCommand) Run(args []string) (retCode int) {
}
}()
migrationUrl, err := config.ParseAddress(migrationUrlToParse)
if err != nil && err != config.ErrNotAUrl {
c.UI.Error(fmt.Errorf("Error parsing migration url: %w", err).Error())
return 1
}
// Core migrations using the migration URL
{
migrationUrl = strings.TrimSpace(migrationUrl)
ran, err := schema.InitStore(c.Context, dialect, migrationUrl)
if err != nil {
if err := man.RollForward(c.Context); err != nil {
c.UI.Error(fmt.Errorf("Error running database migrations: %w", err).Error())
return 1
}
if !ran {
if base.Format(c.UI) == "table" {
c.UI.Info("Database already initialized.")
return 0
}
}
if base.Format(c.UI) == "table" {
c.UI.Info("Migrations successfully run.")
}
}
dbaseUrl, err := config.ParseAddress(urlToParse)
if err != nil && err != config.ErrNotAUrl {
c.UI.Error(fmt.Errorf("Error parsing database url: %w", err).Error())
return 1
}
// Everything after is done with normal database URL and is affecting actual data
c.srv.DatabaseUrl = strings.TrimSpace(dbaseUrl)
if err := c.srv.ConnectToDatabase(dialect); err != nil {

Loading…
Cancel
Save