diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-06-02 19:41:09 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-06-02 19:41:09 +0000 |
commit | 8564980847124346c5e7ada01babbd93aafd9255 (patch) | |
tree | 92c0e2b4ef1983676b9ae5f3f1672ad574fbdd39 /storage | |
parent | a8b3591b02fa02520ceb1d00833215e4146a7a6b (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.cpp | 2 | ||||
-rw-r--r-- | storage/src/vespa/storage/storageserver/rpc/caching_rpc_target_resolver.cpp | 5 |
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? |