summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-06-24 15:24:20 +0200
committerGitHub <noreply@github.com>2022-06-24 15:24:20 +0200
commit4a53c233ad4f4d6ce2b8afa0873d9596c9c13e99 (patch)
treeed070ad9d0756f3d4ba08c4840c8f17ec0ae588a
parentaa244b000fe8ef9db2e8c8fea7921b7cd1a71d84 (diff)
parente6a4d0a49ec3f06470753e71a855917fc1c316b9 (diff)
Merge pull request #23236 from vespa-engine/balder/avoid-copying-map-if-it-already-has-all-keys
Balder/avoid copying map if it already has all keys
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileProperties.java16
1 files changed, 10 insertions, 6 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileProperties.java b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileProperties.java
index 5a12eeddd17..3f9df4d9955 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileProperties.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileProperties.java
@@ -31,6 +31,9 @@ import java.util.Map;
*/
public class QueryProfileProperties extends Properties {
+ private static final String ENVIRONMENT = "environment";
+ private static final String REGION = "region";
+ private static final String INSTANCE = "instance";
private final CompiledQueryProfile profile;
private final Map<String, Embedder> embedders;
private final ZoneInfo zoneInfo;
@@ -70,9 +73,9 @@ public class QueryProfileProperties extends Properties {
this.embedders = embedders;
this.zoneInfo = zoneInfo;
this.zoneContext = Map.of(
- "environment", zoneInfo.zone().environment().name(),
- "region", zoneInfo.zone().region(),
- "instance", zoneInfo.application().instance());
+ ENVIRONMENT, zoneInfo.zone().environment().name(),
+ REGION, zoneInfo.zone().region(),
+ INSTANCE, zoneInfo.application().instance());
}
@@ -297,11 +300,12 @@ public class QueryProfileProperties extends Properties {
if (zoneInfo == ZoneInfo.defaultInfo()) return context;
if (context == null) return zoneContext;
if (context == zoneContext) return context;
+ if (context.containsKey(ENVIRONMENT) && context.containsKey(REGION) && context.containsKey(INSTANCE)) return context;
Map<String, String> contextWithZoneInfo = new HashMap<>(context);
- contextWithZoneInfo.putIfAbsent("environment", zoneInfo.zone().environment().name());
- contextWithZoneInfo.putIfAbsent("region", zoneInfo.zone().region());
- contextWithZoneInfo.putIfAbsent("instance", zoneInfo.application().instance());
+ contextWithZoneInfo.putIfAbsent(ENVIRONMENT, zoneInfo.zone().environment().name());
+ contextWithZoneInfo.putIfAbsent(REGION, zoneInfo.zone().region());
+ contextWithZoneInfo.putIfAbsent(INSTANCE, zoneInfo.application().instance());
return Collections.unmodifiableMap(contextWithZoneInfo);
}