aboutsummaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-06-02 19:41:09 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-06-02 19:41:09 +0000
commit8564980847124346c5e7ada01babbd93aafd9255 (patch)
tree92c0e2b4ef1983676b9ae5f3f1672ad574fbdd39 /storage
parenta8b3591b02fa02520ceb1d00833215e4146a7a6b (diff)
Use a hash map for specs. If the request is a point lookup then just use a hash lookup.
If it is a wildcard lookup iterate as earlier on. Also use vespalib::stringref in interface to avoid conversion. Use vespalib:string in the hash map to locate string in object aswe are still on old abi.
Diffstat (limited to 'storage')
-rw-r--r--storage/src/tests/storageserver/rpc/caching_rpc_target_resolver_test.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/caching_rpc_target_resolver.cpp5
2 files changed, 3 insertions, 4 deletions
diff --git a/storage/src/tests/storageserver/rpc/caching_rpc_target_resolver_test.cpp b/storage/src/tests/storageserver/rpc/caching_rpc_target_resolver_test.cpp
index 8f8eb84b0f2..1bbc1ec7aef 100644
--- a/storage/src/tests/storageserver/rpc/caching_rpc_target_resolver_test.cpp
+++ b/storage/src/tests/storageserver/rpc/caching_rpc_target_resolver_test.cpp
@@ -17,7 +17,7 @@ public:
Mappings mappings;
uint32_t gen;
MockMirror() : mappings(), gen(1) {}
- SpecList lookup(const std::string& pattern) const override {
+ SpecList lookup(vespalib::stringref pattern) const override {
auto itr = mappings.find(pattern);
if (itr != mappings.end()) {
return itr->second;
diff --git a/storage/src/vespa/storage/storageserver/rpc/caching_rpc_target_resolver.cpp b/storage/src/vespa/storage/storageserver/rpc/caching_rpc_target_resolver.cpp
index 39959c24968..743225c6209 100644
--- a/storage/src/vespa/storage/storageserver/rpc/caching_rpc_target_resolver.cpp
+++ b/storage/src/vespa/storage/storageserver/rpc/caching_rpc_target_resolver.cpp
@@ -92,14 +92,13 @@ CachingRpcTargetResolver::insert_new_target_mapping(const api::StorageMessageAdd
}
std::shared_ptr<RpcTarget>
-CachingRpcTargetResolver::resolve_rpc_target(const api::StorageMessageAddress& address,
- uint64_t bucket_id) {
+CachingRpcTargetResolver::resolve_rpc_target(const api::StorageMessageAddress& address, uint64_t bucket_id) {
const uint32_t curr_slobrok_gen = _slobrok_mirror.updates();
if (auto result = lookup_target(address, bucket_id, curr_slobrok_gen)) {
return result;
}
auto slobrok_id = address_to_slobrok_id(address);
- auto specs = _slobrok_mirror.lookup(slobrok_id); // FIXME string type mismatch; implicit conv!
+ auto specs = _slobrok_mirror.lookup(slobrok_id);
if (specs.empty()) {
LOG(debug, "Found no mapping for '%s'", slobrok_id.c_str());
// TODO return potentially stale existing target if no longer existing in SB?