-
Type:
Sub-task
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Query Integration
-
Fully Compatible
-
None
-
None
-
None
-
None
-
None
-
None
-
None
The parsers in document_source_search.cpp and document_source_search_meta.cpp will be updated as follows:
REGISTER_LITE_PARSED_DOCUMENT_SOURCE_FALLBACK(
{search|searchMeta},
[](const NamespaceString& nss,
const BSONElement& spec,
const LiteParserOptions& options) -> std::unique_ptr<LiteParsedDocumentSource> {
// Check if the extension is loaded on this shard, tassert otherwise.
return {Search|SearchMeta}LiteParsed::parse(nss, spec, options);
},
AllowedWithApiStrict::kNeverInVersion1,
&feature_flags::gFeatureFlagSearchExtension);
Unit Tests
- Fallback Parser Registration (document_source_search{_meta}_test.cpp)
- Parser tasserts when featureFlagSearchExtension is true but the extension is not loaded.
- Parser uses the fallback legacy implementation when featureFlagSearchExtension is false.
Integration Tests
- IFR Flag Toggle
- Extension loaded + featureFlagSearchExtension=true uses the extension.
- Extension loaded + featureFlagSearchExtension=false uses the fallback.
- No extension loaded uses the fallback regardless of featureFlagSearchExtension.
- Flipping the flag at runtime correctly toggles between legacy and extension implementations.
- depends on
-
SERVER-117783 Create feature flag
-
- Closed
-
-
SERVER-122451 Create test extension for $search and $searchMeta
-
- Closed
-