summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-11-03 12:45:08 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2021-11-03 12:45:08 +0100
commit01165b282415fa1de88f21762127886cb8bba8aa (patch)
tree68acedaf4c6a80787ffe69b43e2924c2d1aff308 /config-model
parente5bc78b971380cb1245e9c6a36c2b3ea0fe6eebf (diff)
Separate RankProfileRegistry from Application to reduce its lifetime to be only during model building.
Application is kept alive from Schema which is kept alive from NamedSchema and lives permanently in the model.
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/Application.java9
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/RankProfileRegistry.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/SchemaBuilder.java10
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java14
4 files changed, 14 insertions, 21 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/Application.java b/config-model/src/main/java/com/yahoo/searchdefinition/Application.java
index bdcb65ee938..fb76c945344 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/Application.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/Application.java
@@ -6,7 +6,6 @@ import com.yahoo.config.application.api.DeployLogger;
import java.util.Collections;
import java.util.LinkedHashMap;
-import java.util.List;
import java.util.Map;
/**
@@ -19,22 +18,14 @@ import java.util.Map;
public class Application {
private final ApplicationPackage applicationPackage;
- private final RankProfileRegistry rankProfileRegistry;
private final Map<String, Schema> schemas = new LinkedHashMap<>();
public Application(ApplicationPackage applicationPackage) {
- this(applicationPackage, new RankProfileRegistry());
- }
-
- // TODO: Almost sure the rank profile registry passed is always new RankProfileRegistry() (apart from in some tests), so remove the parameter
- public Application(ApplicationPackage applicationPackage, RankProfileRegistry rankProfileRegistry) {
this.applicationPackage = applicationPackage;
- this.rankProfileRegistry = rankProfileRegistry;
}
public ApplicationPackage applicationPackage() { return applicationPackage; }
- public RankProfileRegistry rankProfileRegistry() { return rankProfileRegistry; }
public void add(Schema schema) {
if (schemas.containsKey(schema.getName()))
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfileRegistry.java b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfileRegistry.java
index 4825da4087e..ec446e27670 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfileRegistry.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfileRegistry.java
@@ -25,7 +25,7 @@ import java.util.Set;
public class RankProfileRegistry {
private final Map<String, Map<String, RankProfile>> rankProfiles = new LinkedHashMap<>();
- private final String MAGIC_GLOBAL_RANKPROFILES = "[MAGIC_GLOBAL_RANKPROFILES]";
+ private static final String MAGIC_GLOBAL_RANKPROFILES = "[MAGIC_GLOBAL_RANKPROFILES]";
/* These rank profiles can be overridden: 'default' rank profile, as that is documented to work. And 'unranked'. */
static final Set<String> overridableRankProfileNames = new HashSet<>(Arrays.asList("default", "unranked"));
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/SchemaBuilder.java b/config-model/src/main/java/com/yahoo/searchdefinition/SchemaBuilder.java
index 76385a87d83..2ff4d2d44d0 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/SchemaBuilder.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/SchemaBuilder.java
@@ -50,6 +50,7 @@ public class SchemaBuilder {
private final DocumentTypeManager docTypeMgr = new DocumentTypeManager();
private final DocumentModel model = new DocumentModel();
private final Application application;
+ private final RankProfileRegistry rankProfileRegistry;
private final QueryProfileRegistry queryProfileRegistry;
private final FileRegistry fileRegistry;
private final DeployLogger deployLogger;
@@ -119,7 +120,8 @@ public class SchemaBuilder {
RankProfileRegistry rankProfileRegistry,
QueryProfileRegistry queryProfileRegistry,
boolean documentsOnly) {
- this.application = new Application(applicationPackage, rankProfileRegistry);
+ this.application = new Application(applicationPackage);
+ this.rankProfileRegistry = rankProfileRegistry;
this.queryProfileRegistry = queryProfileRegistry;
this.fileRegistry = fileRegistry;
this.deployLogger = deployLogger;
@@ -172,7 +174,7 @@ public class SchemaBuilder {
SimpleCharStream stream = new SimpleCharStream(str);
try {
return importRawSchema(new SDParser(stream, fileRegistry, deployLogger, properties, application,
- application.rankProfileRegistry(), documentsOnly)
+ rankProfileRegistry, documentsOnly)
.schema(docTypeMgr, searchDefDir));
} catch (TokenMgrException e) {
throw new ParseException("Unknown symbol: " + e.getMessage());
@@ -261,7 +263,7 @@ public class SchemaBuilder {
* #build()} method so that subclasses can choose not to build anything.
*/
private void process(Schema schema, QueryProfiles queryProfiles, boolean validate) {
- new Processing().process(schema, deployLogger, application.rankProfileRegistry(), queryProfiles, validate,
+ new Processing().process(schema, deployLogger, rankProfileRegistry, queryProfiles, validate,
documentsOnly, processorsToSkip);
}
@@ -531,7 +533,7 @@ public class SchemaBuilder {
}
public RankProfileRegistry getRankProfileRegistry() {
- return application.rankProfileRegistry();
+ return rankProfileRegistry;
}
public QueryProfileRegistry getQueryProfileRegistry() {
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java
index 3413fe3c373..860b741a1f2 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java
@@ -153,9 +153,9 @@ public class SchemaTestCase {
assertNotNull(child.getField("child_field"));
assertNotNull(child.getExtraField("parent_field"));
assertNotNull(child.getExtraField("child_field"));
- assertNotNull(application.rankProfileRegistry().get(child, "parent_profile"));
- assertNotNull(application.rankProfileRegistry().get(child, "child_profile"));
- assertEquals("parent_profile", application.rankProfileRegistry().get(child, "child_profile").getInheritedName());
+ assertNotNull(builder.getRankProfileRegistry().get(child, "parent_profile"));
+ assertNotNull(builder.getRankProfileRegistry().get(child, "child_profile"));
+ assertEquals("parent_profile", builder.getRankProfileRegistry().get(child, "child_profile").getInheritedName());
assertNotNull(child.rankingConstants().get("parent_constant"));
assertNotNull(child.rankingConstants().get("child_constant"));
assertTrue(child.rankingConstants().asMap().containsKey("parent_constant"));
@@ -239,17 +239,17 @@ public class SchemaTestCase {
builder.build(true);
var application = builder.application();
- assertInheritedFromParent(application.schemas().get("child"), application);
- assertInheritedFromParent(application.schemas().get("grandchild"), application);
+ assertInheritedFromParent(application.schemas().get("child"), application, builder.getRankProfileRegistry());
+ assertInheritedFromParent(application.schemas().get("grandchild"), application, builder.getRankProfileRegistry());
}
- private void assertInheritedFromParent(Schema schema, Application application) {
+ private void assertInheritedFromParent(Schema schema, Application application, RankProfileRegistry rankProfileRegistry) {
assertEquals("pf1", schema.fieldSets().userFieldSets().get("parent_set").getFieldNames().stream().findFirst().get());
assertEquals(Stemming.NONE, schema.getStemming());
assertEquals(Stemming.BEST, schema.getIndex("parent_index").getStemming());
assertNotNull(schema.getField("parent_field"));
assertNotNull(schema.getExtraField("parent_field"));
- assertNotNull(application.rankProfileRegistry().get(schema, "parent_profile"));
+ assertNotNull(rankProfileRegistry.get(schema, "parent_profile"));
assertNotNull(schema.rankingConstants().get("parent_constant"));
assertTrue(schema.rankingConstants().asMap().containsKey("parent_constant"));
assertNotNull(schema.onnxModels().get("parent_model"));