From 83e1088d42c82f64d258f9b52c0611ef4e829460 Mon Sep 17 00:00:00 2001 From: Debanjum Singh Solanky Date: Tue, 18 Jul 2023 15:27:55 -0700 Subject: [PATCH 1/2] Manage khoj.yml config migrations on app start. Version the schema - Add version to khoj.yml schema Versioning the khoj.yml config schema will simplify future migrations --- src/khoj/utils/cli.py | 15 +++++++++++++-- src/khoj/utils/rawconfig.py | 1 + 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/khoj/utils/cli.py b/src/khoj/utils/cli.py index 0f3c5555..f5c93bb1 100644 --- a/src/khoj/utils/cli.py +++ b/src/khoj/utils/cli.py @@ -5,7 +5,7 @@ from importlib.metadata import version # Internal Packages from khoj.utils.helpers import resolve_absolute_path -from khoj.utils.yaml import parse_config_from_file +from khoj.utils.yaml import load_config_from_file, parse_config_from_file, save_config_to_file def cli(args=None): @@ -34,9 +34,10 @@ def cli(args=None): args = parser.parse_args(args) + args.version_no = version("khoj-assistant") if args.version: # Show version of khoj installed and exit - print(version("khoj-assistant")) + print(args.version_no) exit(0) # Normalize config_file path to absolute path @@ -45,6 +46,16 @@ def cli(args=None): if not args.config_file.exists(): args.config = None else: + migrate_config(args) args.config = parse_config_from_file(args.config_file) return args + + +def migrate_config(args): + raw_config = load_config_from_file(args.config_file) + + # Add version to khoj config schema + if "version" not in raw_config: + raw_config["version"] = args.version_no + save_config_to_file(raw_config, args.config_file) diff --git a/src/khoj/utils/rawconfig.py b/src/khoj/utils/rawconfig.py index 043576f5..d3c9a4ea 100644 --- a/src/khoj/utils/rawconfig.py +++ b/src/khoj/utils/rawconfig.py @@ -123,6 +123,7 @@ class FullConfig(ConfigBase): search_type: Optional[SearchConfig] = None processor: Optional[ProcessorConfig] = None app: Optional[AppConfig] = AppConfig(should_log_telemetry=True) + version: Optional[str] = None class SearchResponse(ConfigBase): From 429e1b4b48ff5c0074a76ed17942aa876dedd8ce Mon Sep 17 00:00:00 2001 From: Debanjum Singh Solanky Date: Tue, 18 Jul 2023 16:10:47 -0700 Subject: [PATCH 2/2] Regenerate index to apply corruption fixes on first run of new khoj --- src/khoj/utils/cli.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/khoj/utils/cli.py b/src/khoj/utils/cli.py index f5c93bb1..49acd6e1 100644 --- a/src/khoj/utils/cli.py +++ b/src/khoj/utils/cli.py @@ -46,7 +46,7 @@ def cli(args=None): if not args.config_file.exists(): args.config = None else: - migrate_config(args) + args = migrate_config(args) args.config = parse_config_from_file(args.config_file) return args @@ -59,3 +59,9 @@ def migrate_config(args): if "version" not in raw_config: raw_config["version"] = args.version_no save_config_to_file(raw_config, args.config_file) + + # regenerate khoj index on first start of this version + # this should refresh index and apply index corruption fixes from #325 + args.regenerate = True + + return args