Fix lockup when initalizing database. (#875)

This commit is contained in:
Todd Knight authored and GitHub committed 2021-01-20 18:10:45 -07:00
1 parent 2bafd8a07c
commit 595a86508e
1 file changed
+11 -19
+11 -19
View File
@@ -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 {