Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

初期化に中途半端に失敗すると再初期化が出来ない #2397

Open
Nagarei opened this issue May 1, 2024 · 0 comments
Open
Labels
kind/bug バグや機能不全に関するもの

Comments

@Nagarei
Copy link
Contributor

Nagarei commented May 1, 2024

初期化処理のうち gorm.NewGormRepository 成功後の 84 行目以降で失敗したとする。
次回起動時は、gorm.NewGormRepository は成功しているため init が false になり、初期化処理が完了していないにも関わらず初期化処理が走らない。

traQ/cmd/serve.go

Lines 77 to 150 in 1847db7

logger.Info("setting up repository...")
repo, init, err := gorm.NewGormRepository(engine, hub, logger, true)
if err != nil {
logger.Fatal("failed to initialize repository", zap.Error(err))
}
logger.Info("repository was set up")
// JWT for QRCode
if priv := c.JWT.Keys.Private; priv != "" {
privRaw, err := os.ReadFile(priv)
if err != nil {
logger.Fatal("failed to read jwt private key", zap.Error(err))
}
if err := jwt.SetupSigner(privRaw); err != nil {
logger.Fatal("failed to setup signer", zap.Error(err))
}
} else {
// 一時鍵を発行
privRaw, pubRaw := random.GenerateECDSAKey()
_ = jwt.SetupSigner(privRaw)
logger.Warn("a temporary key for QRCode JWT was generated. This key is valid only during this running.", zap.String("public_key", string(pubRaw)))
}
// サーバー作成
server, err := newServer(hub, engine, repo, fs, logger, &c)
if err != nil {
logger.Fatal("failed to create server", zap.Error(err))
}
// 初期化
if init {
logger.Info("data initializing...")
// システムユーザーロール投入
if err := repo.CreateUserRoles(role.SystemRoleModels()...); err != nil {
logger.Fatal("failed to init system user roles", zap.Error(err))
}
if err := server.SS.RBAC.Reload(); err != nil {
logger.Fatal("failed to reload rbac", zap.Error(err))
}
// 管理者ユーザーの作成
fid, err := file.GenerateIconFile(server.SS.FileManager, "traq")
if err != nil {
logger.Fatal("failed to generate icon file", zap.Error(err))
}
u, err := repo.CreateUser(repository.CreateUserArgs{
Name: "traq",
Password: "traq",
Role: role.Admin,
IconFileID: fid,
})
if err == nil {
logger.Info("traq user was created", zap.Stringer("uid", u.GetID()))
} else {
logger.Fatal("failed to init admin user", zap.Error(err))
}
// generalチャンネル作成
if ch, err := server.SS.ChannelManager.CreatePublicChannel("general", uuid.Nil, uuid.Nil); err == nil {
logger.Info("#general was created", zap.Stringer("cid", ch.ID))
} else {
logger.Error("failed to init general channel", zap.Error(err))
}
// unicodeスタンプインストール
if !skipInitEmojis {
if err := twemoji.Install(repo, server.SS.FileManager, logger, false); err != nil {
logger.Error("failed to install unicode emojis", zap.Error(err))
}
}
logger.Info("data initialization finished")
}

@Nagarei Nagarei changed the title 初期化時にコケると 初期化に中途半端に失敗することがある May 1, 2024
@Nagarei Nagarei changed the title 初期化に中途半端に失敗することがある 初期化に中途半端に失敗するto May 1, 2024
@Nagarei Nagarei changed the title 初期化に中途半端に失敗するto 初期化に中途半端に失敗すると再初期化が出来ない May 1, 2024
@motoki317 motoki317 added the kind/bug バグや機能不全に関するもの label May 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/bug バグや機能不全に関するもの
Projects
None yet
Development

No branches or pull requests

2 participants