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

ベンチマーカーで初期化処理と整合性チェックのタイムアウトが共有されている #12

Open
theoremoon opened this issue Nov 18, 2023 · 0 comments

Comments

@theoremoon
Copy link

theoremoon commented Nov 18, 2023

仕様かバグかわからずで質問になってしまい恐縮なのですが、当日マニュアル には

初期化処理の実行 POST /initialize(最大 60 秒)
整合性チェック (数秒~数十秒)
負荷走行(60 秒)

とあり、 初期化処理と整合性はそれぞれでタイムアウトが設けられているように見えるのですが、実装は以下のようにInitializeRequestTimeout でタイムアウトを設定したctxValidationScenarioに渡されていて整合性チェックの完了まで含めて60秒のタイムアウトが設定されていそうに見えます。

// 初期化処理を行うが、初期化処理を正しく実行しているかをチェックする。
// 初期化処理自体は `main.DefaultInitializeRequestTimeout` 秒以内に終了する必要がある。
func (s *Scenario) Prepare(ctx context.Context, step *isucandar.BenchmarkStep) error {
err := s.LoadInitialData()
if err != nil {
return err
}
ctx, cancel := context.WithTimeout(ctx, s.Option.InitializeRequestTimeout)
defer cancel()
report := TimeReporter("初期化処理", s.Option)
defer report()
agent, err := s.Option.NewAgent(true)
if err != nil {
return failure.NewError(ErrCannotCreateNewAgent, err)
}
// 管理者ユーザーをシナリオに登録しておき、マスターデータ更新で利用する。
// 管理者 ID は決め打ちで1が入る。
s.AdminUser = &AdminUser{
ID: LoginAdminID,
Password: LoginAdminPassword,
}
s.MasterVersion = "1"
err = s.DoInitialize(ctx, step, agent)
if err != nil {
return err
}
// 検証シナリオを1回まわす
if err := s.ValidationScenario(ctx, step); err != nil {
ContestantLogger.Println("整合性チェックに失敗しました")
return err
}

この状態だとinitializeが60秒以内にレスポンスを返しても、60秒ぎりぎりだと整合性チェック中にタイムアウトになってしまうことがあるのではないかと思っていますが、意図した挙動でしょうか

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant