mirror of
https://github.com/hanzoai/forge.git
synced 2026-10-30 15:00:39 +00:00
2978 files. The fork is 2026-07-15 (rebrand: gitea.dev -> github.com/hanzoai/git), so 2026 is the year, and "Copyright 2026 Hanzo AI, Inc." was already the form used by the handful of files that had ours. Shape is now: // Copyright 2026 Hanzo AI, Inc. All rights reserved. // Copyright 2015 The Gogs Authors. All rights reserved. // Copyright 2019 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT Ours on top, theirs retained verbatim. Retained because MIT requires it, and separately because they are true — those authors did write that code. Not renamed to "The Git Authors": Git is a different project under a different license, and putting its name here would attribute this code to people who have nothing to do with it. Adding our line is the fix; overwriting theirs would have been both a licence violation and a false statement. gofmt still reports import-order drift in some of these files. It predates this change (verified against a stash) and is left alone rather than burying a one-line-per-file legal change under 3000 files of unrelated reordering. Build clean. Co-authored-by: Hanzo Dev <[email protected]>
60 lines
2.2 KiB
Go
60 lines
2.2 KiB
Go
// Copyright 2026 Hanzo AI, Inc. All rights reserved.
|
|
// Copyright 2021 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package common
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"time"
|
|
|
|
"github.com/hanzoai/git/models/db"
|
|
"github.com/hanzoai/git/models/migrations"
|
|
system_model "github.com/hanzoai/git/models/system"
|
|
"github.com/hanzoai/git/modules/log"
|
|
"github.com/hanzoai/git/modules/setting"
|
|
"github.com/hanzoai/git/modules/setting/config"
|
|
"github.com/hanzoai/git/services/versioned_migration"
|
|
)
|
|
|
|
// InitDBEngine In case of problems connecting to DB, retry connection. Eg, PGSQL in Docker Container on Synology
|
|
func InitDBEngine(ctx context.Context) (err error) {
|
|
log.Info("Beginning ORM engine initialization.")
|
|
for i := 0; i < setting.Database.DBConnectRetries; i++ {
|
|
select {
|
|
case <-ctx.Done():
|
|
return errors.New("Aborted due to shutdown:\nin retry ORM engine initialization")
|
|
default:
|
|
}
|
|
log.Info("ORM engine initialization attempt #%d/%d...", i+1, setting.Database.DBConnectRetries)
|
|
if err = db.InitEngineWithMigration(ctx, migrateWithSetting); err == nil {
|
|
break
|
|
} else if i == setting.Database.DBConnectRetries-1 {
|
|
return err
|
|
}
|
|
log.Error("ORM engine initialization attempt #%d/%d failed. Error: %v", i+1, setting.Database.DBConnectRetries, err)
|
|
log.Info("Backing off for %d seconds", int64(setting.Database.DBConnectBackoff/time.Second))
|
|
time.Sleep(setting.Database.DBConnectBackoff)
|
|
}
|
|
config.SetDynGetter(system_model.NewDatabaseDynKeyGetter())
|
|
return nil
|
|
}
|
|
|
|
func migrateWithSetting(ctx context.Context, x db.EngineMigration) error {
|
|
if setting.Database.AutoMigration {
|
|
return versioned_migration.Migrate(ctx, x)
|
|
}
|
|
|
|
if current, err := migrations.GetCurrentDBVersion(x); err != nil {
|
|
return err
|
|
} else if current < 0 {
|
|
// execute migrations when the database isn't initialized even if AutoMigration is false
|
|
return versioned_migration.Migrate(ctx, x)
|
|
} else if expected := migrations.ExpectedDBVersion(); current != expected {
|
|
log.Fatal(`"database.AUTO_MIGRATION" is disabled, but current database version %d is not equal to the expected version %d.`+
|
|
`You can set "database.AUTO_MIGRATION" to true or migrate manually by running "gitd [--config /path/to/app.ini] migrate"`, current, expected)
|
|
}
|
|
return nil
|
|
}
|