Skip to content

Commit c9e17cc

Browse files
committed
Defer REGISTRY import to fix empty validator snapshot
The query-language REGISTRY snapshots ValidatorRegistry.get_instance() at import time. This import is triggered during engine bootstrap before bootstrap_ast_validators() populates the singleton, resulting in an empty REGISTRY and KeyError in DruidQueryTransformer on UDF queries. Move the REGISTRY import into parse_query_to_validated_ast so the snapshot is taken at first use (request time) when validators are already registered.
1 parent 4bf4d75 commit c9e17cc

File tree

1 file changed

+2
-1
lines changed
  • osprey_worker/src/osprey/engine/query_language

1 file changed

+2
-1
lines changed

osprey_worker/src/osprey/engine/query_language/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from osprey.engine.ast_validator.validators.validate_static_types import ValidateStaticTypes
55
from osprey.engine.ast_validator.validators.variables_must_be_defined import VariablesMustBeDefined
66
from osprey.engine.query_language import udfs
7-
from osprey.engine.query_language.ast_validator import REGISTRY
87
from osprey.engine.query_language.udfs.registry import UDF_REGISTRY
98
from osprey.engine.utils.imports import import_all_direct_children
109

@@ -16,6 +15,8 @@ def parse_query_to_validated_ast(query: str, rules_sources: ValidatedSources) ->
1615
"""
1716

1817
try:
18+
from osprey.engine.query_language.ast_validator import REGISTRY
19+
1920
sources = Sources.from_dict({SOURCE_ENTRY_POINT_PATH: 'Query = ' + query})
2021
validation_context = (
2122
ValidationContext(sources=sources, udf_registry=UDF_REGISTRY, validator_registry=REGISTRY)

0 commit comments

Comments
 (0)