You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Tracking: ongoing refactors — case-config finalization and hardening #877
Tracking issue for the ongoing refactor work on case configuration handling in VectorDBBench. The goal is to make case-config construction and validation deterministic, mutation-free, and consistent across all task entry points (CLI and web UI), then harden the config model so classes can be made immutable.
Background / Why
db_case_config was touched in four layers — CLI construction, run() FTS routing, assembler in-place mutation, and task-runner/client reads — and the CLI-only routing was skipped entirely on the web UI path. This made config-handling changes easy to break, and the two entry points could diverge. A follow-up audit of the config model also found self-assigning cached-field methods in several backends that prevent immutable config classes.
Scope (work items)
1. Finalize db_case_config at a single choke point — PR #872 (WIP)
New vectordb_bench/backend/db_case_config.py with finalize_db_case_config(db, case_type, base_config, *, parameters, dataset).
Routes both entry points (cli.run() and web UI generate_tasks()) through one resolver; the assembler no longer mutates the config; select_cli_db_case_config remains as a thin backward-compatible wrapper.
Summary
Tracking issue for the ongoing refactor work on case configuration handling in VectorDBBench. The goal is to make case-config construction and validation deterministic, mutation-free, and consistent across all task entry points (CLI and web UI), then harden the config model so classes can be made immutable.
Background / Why
db_case_configwas touched in four layers — CLI construction,run()FTS routing, assembler in-place mutation, and task-runner/client reads — and the CLI-only routing was skipped entirely on the web UI path. This made config-handling changes easy to break, and the two entry points could diverge. A follow-up audit of the config model also found self-assigning cached-field methods in several backends that prevent immutable config classes.Scope (work items)
1. Finalize
db_case_configat a single choke point — PR #872 (WIP)vectordb_bench/backend/db_case_config.pywithfinalize_db_case_config(db, case_type, base_config, *, parameters, dataset).cli.run()and web UIgenerate_tasks()) through one resolver; the assembler no longer mutates the config;select_cli_db_case_configremains as a thin backward-compatible wrapper.force_merge_target_size_mb) into the resolver, subsuming the one-line whitelist fix in PR feat: add CLI control for Milvus force-merge size and toggle #871 (cli/cli.py). When both merge, drop feat: add CLI control for Milvus force-merge size and toggle #871'scli/cli.pyhunk.2. Enforce
frozen=Trueacross all case-config classes (approved, deferred — separate PR)aws_opensearch/oss_opensearchparse_metric()hologrespgvectorDefinition of done
db_case_configremains outside the resolver.frozen=Truewith no self-assigning cached-field methods.References
_optimize()may be too costly and non-reproducible at 100M scale (LAION-100M) #825 — force-merge compaction concerns that motivated theforce_merge_target_size_mbwhitelist entry