aboutsummaryrefslogtreecommitdiffstats
path: root/storage/src
diff options
context:
space:
mode:
Diffstat (limited to 'storage/src')
-rw-r--r--storage/src/tests/bucketdb/bucketmanagertest.cpp2
-rw-r--r--storage/src/tests/common/hostreporter/hostinfotest.cpp3
-rw-r--r--storage/src/tests/common/hostreporter/util.cpp2
-rw-r--r--storage/src/tests/common/metricstest.cpp2
-rw-r--r--storage/src/tests/distributor/distributor_host_info_reporter_test.cpp4
-rw-r--r--storage/src/tests/distributor/distributor_stripe_test.cpp25
-rw-r--r--storage/src/tests/distributor/distributor_stripe_test_util.cpp2
-rw-r--r--storage/src/tests/distributor/distributor_stripe_test_util.h2
-rw-r--r--storage/src/tests/distributor/externaloperationhandlertest.cpp10
-rw-r--r--storage/src/tests/distributor/mergeoperationtest.cpp5
-rw-r--r--storage/src/tests/distributor/read_for_write_visitor_operation_test.cpp2
-rw-r--r--storage/src/tests/distributor/simplemaintenancescannertest.cpp14
-rw-r--r--storage/src/tests/distributor/top_level_bucket_db_updater_test.cpp8
-rw-r--r--storage/src/tests/distributor/top_level_distributor_test.cpp3
-rw-r--r--storage/src/tests/distributor/top_level_distributor_test_util.cpp2
-rw-r--r--storage/src/tests/distributor/top_level_distributor_test_util.h2
-rw-r--r--storage/src/tests/distributor/twophaseupdateoperationtest.cpp2
-rw-r--r--storage/src/tests/distributor/visitoroperationtest.cpp2
-rw-r--r--storage/src/tests/frameworkimpl/status/statustest.cpp2
-rw-r--r--storage/src/tests/persistence/filestorage/feed_operation_batching_test.cpp2
-rw-r--r--storage/src/tests/persistence/mergehandlertest.cpp50
-rw-r--r--storage/src/tests/persistence/provider_error_wrapper_test.cpp4
-rw-r--r--storage/src/tests/storageserver/changedbucketownershiphandlertest.cpp2
-rw-r--r--storage/src/tests/storageserver/communicationmanagertest.cpp2
-rw-r--r--storage/src/tests/storageserver/configurable_bucket_resolver_test.cpp2
-rw-r--r--storage/src/tests/storageserver/rpc/caching_rpc_target_resolver_test.cpp4
-rw-r--r--storage/src/tests/storageserver/rpc/cluster_controller_rpc_api_service_test.cpp4
-rw-r--r--storage/src/tests/storageserver/rpc/storage_api_rpc_service_test.cpp2
-rw-r--r--storage/src/tests/storageserver/service_layer_error_listener_test.cpp2
-rw-r--r--storage/src/tests/storageserver/statemanagertest.cpp6
-rw-r--r--storage/src/tests/visiting/commandqueuetest.cpp4
-rw-r--r--storage/src/tests/visiting/visitortest.cpp6
-rw-r--r--storage/src/vespa/storage/bucketdb/bucketmanager.cpp4
-rw-r--r--storage/src/vespa/storage/common/content_bucket_space.h2
-rw-r--r--storage/src/vespa/storage/common/distributorcomponent.cpp2
-rw-r--r--storage/src/vespa/storage/common/distributorcomponent.h2
-rw-r--r--storage/src/vespa/storage/common/node_identity.cpp2
-rw-r--r--storage/src/vespa/storage/common/node_identity.h2
-rw-r--r--storage/src/vespa/storage/common/servicelayercomponent.h2
-rw-r--r--storage/src/vespa/storage/common/statusmetricconsumer.cpp4
-rw-r--r--storage/src/vespa/storage/common/storagecomponent.cpp4
-rw-r--r--storage/src/vespa/storage/common/storagecomponent.h4
-rw-r--r--storage/src/vespa/storage/distributor/activecopy.cpp12
-rw-r--r--storage/src/vespa/storage/distributor/distributor_stripe.cpp11
-rw-r--r--storage/src/vespa/storage/distributor/operation_sequencer.h4
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/visitoroperation.cpp6
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/idealstateoperation.h8
-rw-r--r--storage/src/vespa/storage/distributor/statecheckers.cpp18
-rw-r--r--storage/src/vespa/storage/distributor/top_level_bucket_db_updater.cpp2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.cpp2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.h2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/status/statuswebserver.cpp2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/status/statuswebserver.h2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/thread/deadlockdetector.cpp8
-rw-r--r--storage/src/vespa/storage/persistence/apply_bucket_diff_state.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/asynchandler.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/bucketprocessor.cpp4
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp10
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/filestormanager.h2
-rw-r--r--storage/src/vespa/storage/persistence/mergehandler.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/mergehandler.h2
-rw-r--r--storage/src/vespa/storage/persistence/persistenceutil.h2
-rw-r--r--storage/src/vespa/storage/persistence/provider_error_wrapper.cpp4
-rw-r--r--storage/src/vespa/storage/persistence/provider_error_wrapper.h8
-rw-r--r--storage/src/vespa/storage/persistence/simplemessagehandler.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/splitbitdetector.h2
-rw-r--r--storage/src/vespa/storage/persistence/testandsethelper.h4
-rw-r--r--storage/src/vespa/storage/storageserver/communicationmanager.cpp8
-rw-r--r--storage/src/vespa/storage/storageserver/configurable_bucket_resolver.cpp14
-rw-r--r--storage/src/vespa/storage/storageserver/configurable_bucket_resolver.h4
-rw-r--r--storage/src/vespa/storage/storageserver/documentapiconverter.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/mergethrottler.cpp16
-rw-r--r--storage/src/vespa/storage/storageserver/mergethrottler.h2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.h2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/slime_cluster_state_bundle_codec.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.cpp6
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.h2
-rw-r--r--storage/src/vespa/storage/storageserver/service_layer_error_listener.cpp4
-rw-r--r--storage/src/vespa/storage/storageserver/service_layer_error_listener.h4
-rw-r--r--storage/src/vespa/storage/storageserver/statemanager.cpp4
-rw-r--r--storage/src/vespa/storage/storageserver/storagenode.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/storagenode.h2
-rw-r--r--storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.cpp4
-rw-r--r--storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.h2
-rw-r--r--storage/src/vespa/storage/visiting/countvisitor.cpp4
-rw-r--r--storage/src/vespa/storage/visiting/recoveryvisitor.cpp26
-rw-r--r--storage/src/vespa/storage/visiting/reindexing_visitor.cpp4
-rw-r--r--storage/src/vespa/storage/visiting/visitor.cpp2
-rw-r--r--storage/src/vespa/storage/visiting/visitormetrics.cpp4
-rw-r--r--storage/src/vespa/storage/visiting/visitorthread.cpp24
-rw-r--r--storage/src/vespa/storage/visiting/visitorthread.h2
-rw-r--r--storage/src/vespa/storageapi/mbusprot/protocolserialization7.cpp4
-rw-r--r--storage/src/vespa/storageapi/mbusprot/serializationhelper.h4
-rw-r--r--storage/src/vespa/storageapi/message/bucket.cpp2
-rw-r--r--storage/src/vespa/storageapi/message/bucket.h2
-rw-r--r--storage/src/vespa/storageapi/message/datagram.cpp2
-rw-r--r--storage/src/vespa/storageapi/message/persistence.cpp2
-rw-r--r--storage/src/vespa/storageapi/message/persistence.h4
-rw-r--r--storage/src/vespa/storageapi/message/removelocation.cpp2
-rw-r--r--storage/src/vespa/storageapi/message/removelocation.h2
-rw-r--r--storage/src/vespa/storageapi/message/stat.cpp4
-rw-r--r--storage/src/vespa/storageapi/message/stat.h6
-rw-r--r--storage/src/vespa/storageapi/message/visitor.cpp8
-rw-r--r--storage/src/vespa/storageapi/message/visitor.h16
-rw-r--r--storage/src/vespa/storageapi/messageapi/maintenancecommand.h2
-rw-r--r--storage/src/vespa/storageapi/messageapi/returncode.cpp2
-rw-r--r--storage/src/vespa/storageapi/messageapi/returncode.h8
-rw-r--r--storage/src/vespa/storageapi/messageapi/storagemessage.cpp4
-rw-r--r--storage/src/vespa/storageapi/messageapi/storagemessage.h2
-rw-r--r--storage/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.cpp8
-rw-r--r--storage/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h8
-rw-r--r--storage/src/vespa/storageframework/defaultimplementation/thread/threadimpl.cpp2
-rw-r--r--storage/src/vespa/storageframework/defaultimplementation/thread/threadimpl.h2
-rw-r--r--storage/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.cpp2
-rw-r--r--storage/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.h2
-rw-r--r--storage/src/vespa/storageframework/generic/component/component.cpp4
-rw-r--r--storage/src/vespa/storageframework/generic/component/component.h4
-rw-r--r--storage/src/vespa/storageframework/generic/component/componentregister.h2
-rw-r--r--storage/src/vespa/storageframework/generic/metric/metricregistrator.h2
-rw-r--r--storage/src/vespa/storageframework/generic/status/htmlstatusreporter.cpp2
-rw-r--r--storage/src/vespa/storageframework/generic/status/htmlstatusreporter.h2
-rw-r--r--storage/src/vespa/storageframework/generic/status/httpurlpath.cpp5
-rw-r--r--storage/src/vespa/storageframework/generic/status/statusreporter.cpp2
-rw-r--r--storage/src/vespa/storageframework/generic/status/statusreporter.h2
-rw-r--r--storage/src/vespa/storageframework/generic/status/statusreportermap.h2
-rw-r--r--storage/src/vespa/storageframework/generic/status/xmlstatusreporter.cpp6
-rw-r--r--storage/src/vespa/storageframework/generic/status/xmlstatusreporter.h2
-rw-r--r--storage/src/vespa/storageframework/generic/thread/thread.h2
-rw-r--r--storage/src/vespa/storageframework/generic/thread/threadpool.h2
-rw-r--r--storage/src/vespa/storageframework/generic/thread/tickingthread.cpp8
-rw-r--r--storage/src/vespa/storageframework/generic/thread/tickingthread.h4
134 files changed, 321 insertions, 317 deletions
diff --git a/storage/src/tests/bucketdb/bucketmanagertest.cpp b/storage/src/tests/bucketdb/bucketmanagertest.cpp
index a20902422b0..dc560cf58cd 100644
--- a/storage/src/tests/bucketdb/bucketmanagertest.cpp
+++ b/storage/src/tests/bucketdb/bucketmanagertest.cpp
@@ -602,7 +602,7 @@ public:
return std::make_shared<api::RequestBucketInfoCommand>(makeBucketSpace(), 0, explicit_state);
}
- auto createFullFetchCommandWithHash(vespalib::stringref hash) const {
+ auto createFullFetchCommandWithHash(std::string_view hash) const {
return std::make_shared<api::RequestBucketInfoCommand>(makeBucketSpace(), 0, *_state, hash);
}
diff --git a/storage/src/tests/common/hostreporter/hostinfotest.cpp b/storage/src/tests/common/hostreporter/hostinfotest.cpp
index 13d53007af4..7548b431c2c 100644
--- a/storage/src/tests/common/hostreporter/hostinfotest.cpp
+++ b/storage/src/tests/common/hostreporter/hostinfotest.cpp
@@ -1,6 +1,5 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "util.h"
#include <vespa/storage/common/hostreporter/hostinfo.h>
#include <vespa/storage/common/hostreporter/hostreporter.h>
#include <vespa/vespalib/data/slime/slime.h>
@@ -38,7 +37,7 @@ TEST(HostInfoReporterTest, host_info_reporter) {
hostinfo.printReport(stream);
stream << End();
- std::string jsonData = json.str();
+ std::string_view jsonData = json.view();
vespalib::Slime slime;
JsonFormat::decode(Memory(jsonData), slime);
EXPECT_EQ(slime.get()["dummy"]["foo"].asString(), "bar");
diff --git a/storage/src/tests/common/hostreporter/util.cpp b/storage/src/tests/common/hostreporter/util.cpp
index f87fb9728fb..4e40eb6aa3f 100644
--- a/storage/src/tests/common/hostreporter/util.cpp
+++ b/storage/src/tests/common/hostreporter/util.cpp
@@ -22,7 +22,7 @@ reporterToSlime(HostReporter &hostReporter, vespalib::Slime &slime) {
stream << Object();
hostReporter.report(stream);
stream << End();
- std::string jsonData = json.str();
+ std::string jsonData(json.view());
size_t parsed = JsonFormat::decode(Memory(jsonData), slime);
if (parsed == 0) {
diff --git a/storage/src/tests/common/metricstest.cpp b/storage/src/tests/common/metricstest.cpp
index 6ca84f0304a..9a52adf7fa3 100644
--- a/storage/src/tests/common/metricstest.cpp
+++ b/storage/src/tests/common/metricstest.cpp
@@ -204,7 +204,7 @@ TEST_F(MetricsTest, filestor_metrics) {
} else { \
std::ostringstream valueost; \
valueost << metric << " count=" << count; \
- ASSERT_TRUE(s.find(valueost.str()) != std::string::npos) \
+ ASSERT_TRUE(s.find(valueost.view()) != std::string::npos) \
<< "Did not find value " + valueost.str() + " in metric dump " + s; \
} \
}
diff --git a/storage/src/tests/distributor/distributor_host_info_reporter_test.cpp b/storage/src/tests/distributor/distributor_host_info_reporter_test.cpp
index c56911a066e..3dfc91a7848 100644
--- a/storage/src/tests/distributor/distributor_host_info_reporter_test.cpp
+++ b/storage/src/tests/distributor/distributor_host_info_reporter_test.cpp
@@ -81,7 +81,7 @@ getBucketSpaceStats(const vespalib::Slime& root, uint16_t nodeIndex, const vespa
{
const auto& bucketSpaces = getNode(root, nodeIndex)["bucket-spaces"];
for (size_t i = 0; i < bucketSpaces.entries(); ++i) {
- if (bucketSpaces[i]["name"].asString().make_stringref() == bucketSpaceName) {
+ if (bucketSpaces[i]["name"].asString().make_stringview() == bucketSpaceName) {
return bucketSpaces[i];
}
}
@@ -181,7 +181,7 @@ TEST_F(DistributorHostInfoReporterTest, generate_example_json) {
stream << End();
stream.finalize();
- std::string jsonString = json.str();
+ std::string_view jsonString = json.view();
std::string path = TEST_PATH("../../../../protocols/getnodestate/distributor.json");
std::string goldenString = File::readAll(path);
diff --git a/storage/src/tests/distributor/distributor_stripe_test.cpp b/storage/src/tests/distributor/distributor_stripe_test.cpp
index fbc9cb44462..ee1e05154bb 100644
--- a/storage/src/tests/distributor/distributor_stripe_test.cpp
+++ b/storage/src/tests/distributor/distributor_stripe_test.cpp
@@ -670,7 +670,7 @@ TEST_F(DistributorStripeTest, external_client_requests_are_handled_individually_
std::vector<api::StorageMessage::Priority> priorities({50, 255, 10, 40, 0});
document::DocumentId id("id:foo:testdoctype1:n=1:foo");
- vespalib::stringref field_set = "";
+ std::string_view field_set = "";
for (auto pri : priorities) {
auto cmd = std::make_shared<api::GetCommand>(makeDocumentBucket(document::BucketId()), id, field_set);
cmd->setPriority(pri);
@@ -728,7 +728,7 @@ TEST_F(DistributorStripeTest, closing_aborts_priority_queued_client_requests)
addNodesToBucketDB(bucket, "0=1/1/1/t");
document::DocumentId id("id:foo:testdoctype1:n=1:foo");
- vespalib::stringref field_set = "";
+ std::string_view field_set = "";
for (int i = 0; i < 10; ++i) {
auto cmd = std::make_shared<api::GetCommand>(makeDocumentBucket(document::BucketId()), id, field_set);
_stripe->handle_or_enqueue_message(cmd);
@@ -1071,10 +1071,23 @@ TEST_F(DistributorStripeTest, bucket_ownership_change_does_not_cancel_pending_op
do_test_not_cancelled_pending_op_without_bucket_ownership_change(true);
}
-// TODO we do not have good handling of bucket ownership changes combined with
-// distribution config changes... Hard to remove all such edge cases unless we
-// make state+config change an atomic operation initiated by the cluster controller
-// (hint: we should do this).
+TEST_F(DistributorStripeTest, maintenance_operation_cancellation_does_not_invoke_recheck_with_invalid_bucket) {
+ setup_stripe(Redundancy(1), NodeCount(2), "version:1 distributor:1 storage:2");
+ configure_enable_operation_cancellation(true);
+ addNodesToBucketDB(BucketId(16, 1), "0=3/4/5/t/u/r,1=4/5/6/t/u/r");
+
+ tickDistributorNTimes(10); // ==> Activation sent to node 1 (largest ready replica)
+ ASSERT_EQ(_sender.getCommands(true), "SetBucketState => 1");
+
+ // Node 1 takes a nosedive; the pending SetBucketState operation is cancelled internally.
+ simulate_cluster_state_transition("version:2 distributor:1 storage:2 .1.s:d", true);
+ auto reply = std::make_shared<api::SetBucketStateReply>(dynamic_cast<api::SetBucketStateCommand&>(*_sender.command(0)));
+ _stripe->handleReply(reply);
+ // If we have gotten this far without exploding with an invariant check failure, all is well.
+ EXPECT_EQ("BucketId(0x4000000000000001) : "
+ "node(idx=0,crc=0x3,docs=4/4,bytes=5/5,trusted=true,active=false,ready=true)", // no node 1
+ dumpBucket(BucketId(16, 1)));
+}
}
diff --git a/storage/src/tests/distributor/distributor_stripe_test_util.cpp b/storage/src/tests/distributor/distributor_stripe_test_util.cpp
index 0628b62bdfe..9cc7934ddb6 100644
--- a/storage/src/tests/distributor/distributor_stripe_test_util.cpp
+++ b/storage/src/tests/distributor/distributor_stripe_test_util.cpp
@@ -537,7 +537,7 @@ DistributorStripeTestUtil::getBucketSpaces() const
}
void
-DistributorStripeTestUtil::enable_cluster_state(vespalib::stringref state)
+DistributorStripeTestUtil::enable_cluster_state(std::string_view state)
{
getBucketDBUpdater().simulate_cluster_state_bundle_activation(lib::ClusterStateBundle(lib::ClusterState(state)));
}
diff --git a/storage/src/tests/distributor/distributor_stripe_test_util.h b/storage/src/tests/distributor/distributor_stripe_test_util.h
index 862d9bfbfba..d6877c0b3e0 100644
--- a/storage/src/tests/distributor/distributor_stripe_test_util.h
+++ b/storage/src/tests/distributor/distributor_stripe_test_util.h
@@ -264,7 +264,7 @@ protected:
};
MessageSenderImpl _messageSender;
- void enable_cluster_state(vespalib::stringref state);
+ void enable_cluster_state(std::string_view state);
void enable_cluster_state(const lib::ClusterStateBundle& state);
};
diff --git a/storage/src/tests/distributor/externaloperationhandlertest.cpp b/storage/src/tests/distributor/externaloperationhandlertest.cpp
index 33da4727017..5677e5e6628 100644
--- a/storage/src/tests/distributor/externaloperationhandlertest.cpp
+++ b/storage/src/tests/distributor/externaloperationhandlertest.cpp
@@ -32,8 +32,8 @@ namespace storage::distributor {
struct ExternalOperationHandlerTest : Test, DistributorStripeTestUtil {
document::TestDocMan _testDocMan;
- document::BucketId findNonOwnedUserBucketInState(vespalib::stringref state);
- document::BucketId findOwned1stNotOwned2ndInStates(vespalib::stringref state1, vespalib::stringref state2);
+ document::BucketId findNonOwnedUserBucketInState(std::string_view state);
+ document::BucketId findOwned1stNotOwned2ndInStates(std::string_view state1, std::string_view state2);
std::shared_ptr<api::GetCommand> makeGetCommandForUser(uint64_t id) const;
std::shared_ptr<api::GetCommand> makeGetCommand(const vespalib::string& id) const;
@@ -130,7 +130,7 @@ TEST_F(ExternalOperationHandlerTest, bucket_split_mask) {
document::BucketId
ExternalOperationHandlerTest::findNonOwnedUserBucketInState(
- vespalib::stringref statestr)
+ std::string_view statestr)
{
lib::ClusterState state(statestr);
for (uint64_t i = 1; i < 1000; ++i) {
@@ -144,8 +144,8 @@ ExternalOperationHandlerTest::findNonOwnedUserBucketInState(
document::BucketId
ExternalOperationHandlerTest::findOwned1stNotOwned2ndInStates(
- vespalib::stringref statestr1,
- vespalib::stringref statestr2)
+ std::string_view statestr1,
+ std::string_view statestr2)
{
lib::ClusterState state1(statestr1);
lib::ClusterState state2(statestr2);
diff --git a/storage/src/tests/distributor/mergeoperationtest.cpp b/storage/src/tests/distributor/mergeoperationtest.cpp
index 754974ebf97..19752e2db9e 100644
--- a/storage/src/tests/distributor/mergeoperationtest.cpp
+++ b/storage/src/tests/distributor/mergeoperationtest.cpp
@@ -148,13 +148,12 @@ TEST_F(MergeOperationTest, fail_if_delete_bucket_fails) {
namespace {
std::string getNodeList(std::string state, uint32_t redundancy, std::string existing) {
- lib::Distribution distribution(
- lib::Distribution::getDefaultDistributionConfig(redundancy));
+ lib::Distribution distribution(lib::Distribution::getDefaultDistributionConfig(redundancy));
lib::ClusterState clusterState(state);
vespalib::StringTokenizer st(existing, ",");
std::vector<BucketCopy> bucketDB(st.size());
for (uint32_t i = 0; i < st.size(); i++) {
- std::string num = st[i];
+ std::string num(st[i]);
size_t pos = num.find('t');
bool trusted = false;
diff --git a/storage/src/tests/distributor/read_for_write_visitor_operation_test.cpp b/storage/src/tests/distributor/read_for_write_visitor_operation_test.cpp
index 21116f8a281..d4b8c0605af 100644
--- a/storage/src/tests/distributor/read_for_write_visitor_operation_test.cpp
+++ b/storage/src/tests/distributor/read_for_write_visitor_operation_test.cpp
@@ -215,7 +215,7 @@ TEST_F(ReadForWriteVisitorOperationStarterTest, visitor_locks_bucket_with_random
auto cmd = std::dynamic_pointer_cast<api::CreateVisitorCommand>(_sender.command(0));
ASSERT_TRUE(cmd);
EXPECT_EQ(cmd->getParameters().get(reindexing_bucket_lock_visitor_parameter_key(),
- vespalib::stringref("not found :I")),
+ std::string_view("not found :I")),
"fritjof");
}
diff --git a/storage/src/tests/distributor/simplemaintenancescannertest.cpp b/storage/src/tests/distributor/simplemaintenancescannertest.cpp
index 3541857e029..ba77f9b3abe 100644
--- a/storage/src/tests/distributor/simplemaintenancescannertest.cpp
+++ b/storage/src/tests/distributor/simplemaintenancescannertest.cpp
@@ -28,7 +28,7 @@ struct SimpleMaintenanceScannerTest : Test {
void addBucketToDb(document::BucketSpace bucketSpace, int bucketNum);
void addBucketToDb(int bucketNum);
- bool scanEntireDatabase(int expected);
+ bool scanEntireDatabase(int expected) const;
std::string stringifyGlobalPendingStats(const PendingStats& stats) const;
void SetUp() override;
@@ -58,8 +58,7 @@ SimpleMaintenanceScannerTest::addBucketToDb(int bucketNum)
}
std::string
-SimpleMaintenanceScannerTest::stringifyGlobalPendingStats(
- const PendingStats& stats) const
+SimpleMaintenanceScannerTest::stringifyGlobalPendingStats(const PendingStats& stats) const
{
std::ostringstream ss;
ss << stats.global;
@@ -99,8 +98,11 @@ namespace {
std::string sortLines(const std::string& source) {
vespalib::StringTokenizer st(source,"\n","");
- std::vector<std::string> lines;
- std::copy(st.begin(), st.end(), std::back_inserter(lines));
+ std::vector<vespalib::string> lines;
+ lines.reserve(st.size());
+ for (const auto & token : st) {
+ lines.emplace_back(token);
+ }
std::sort(lines.begin(), lines.end());
std::ostringstream ost;
for (auto& line : lines) {
@@ -125,7 +127,7 @@ TEST_F(SimpleMaintenanceScannerTest, prioritize_multiple_buckets) {
}
bool
-SimpleMaintenanceScannerTest::scanEntireDatabase(int expected)
+SimpleMaintenanceScannerTest::scanEntireDatabase(int expected) const
{
for (int i = 0; i < expected; ++i) {
if (_scanner->scanNext().isDone()) {
diff --git a/storage/src/tests/distributor/top_level_bucket_db_updater_test.cpp b/storage/src/tests/distributor/top_level_bucket_db_updater_test.cpp
index 4fe8d88fb8d..26242720966 100644
--- a/storage/src/tests/distributor/top_level_bucket_db_updater_test.cpp
+++ b/storage/src/tests/distributor/top_level_bucket_db_updater_test.cpp
@@ -407,10 +407,10 @@ public:
std::vector<uint16_t> expand_node_vec(const std::vector<uint16_t>& nodes);
void trigger_completed_but_not_yet_activated_transition(
- vespalib::stringref initial_state_str,
+ std::string_view initial_state_str,
uint32_t initial_buckets,
uint32_t initial_expected_msgs,
- vespalib::stringref pending_state_str,
+ std::string_view pending_state_str,
uint32_t pending_buckets,
uint32_t pending_expected_msgs);
@@ -603,10 +603,10 @@ TopLevelBucketDBUpdaterTest::get_node_list(const std::vector<uint16_t>& nodes)
void
TopLevelBucketDBUpdaterTest::trigger_completed_but_not_yet_activated_transition(
- vespalib::stringref initial_state_str,
+ std::string_view initial_state_str,
uint32_t initial_buckets,
uint32_t initial_expected_msgs,
- vespalib::stringref pending_state_str,
+ std::string_view pending_state_str,
uint32_t pending_buckets,
uint32_t pending_expected_msgs)
{
diff --git a/storage/src/tests/distributor/top_level_distributor_test.cpp b/storage/src/tests/distributor/top_level_distributor_test.cpp
index 8463e0b548c..d14929b81fe 100644
--- a/storage/src/tests/distributor/top_level_distributor_test.cpp
+++ b/storage/src/tests/distributor/top_level_distributor_test.cpp
@@ -56,7 +56,6 @@ struct TopLevelDistributorTest : Test, TopLevelDistributorTestUtil {
// added type safety.
using NodeCount = int;
using Redundancy = int;
- using ConfigBuilder = vespa::config::content::core::StorDistributormanagerConfigBuilder;
std::string resolve_stripe_operation_routing(const std::shared_ptr<api::StorageMessage> & msg) {
handle_top_level_message(msg);
@@ -70,7 +69,7 @@ struct TopLevelDistributorTest : Test, TopLevelDistributorTestUtil {
}
stripes[i]->_messageQueue.clear();
}
- return posted_msgs.str();
+ return std::string(posted_msgs.view());
}
StatusReporterDelegate& distributor_status_delegate() {
diff --git a/storage/src/tests/distributor/top_level_distributor_test_util.cpp b/storage/src/tests/distributor/top_level_distributor_test_util.cpp
index 4816c1dce22..4fb3fba904b 100644
--- a/storage/src/tests/distributor/top_level_distributor_test_util.cpp
+++ b/storage/src/tests/distributor/top_level_distributor_test_util.cpp
@@ -419,7 +419,7 @@ TopLevelDistributorTestUtil::all_distributor_stripes_are_in_recovery_mode() cons
}
void
-TopLevelDistributorTestUtil::enable_distributor_cluster_state(vespalib::stringref state,
+TopLevelDistributorTestUtil::enable_distributor_cluster_state(std::string_view state,
bool has_bucket_ownership_transfer)
{
bucket_db_updater().simulate_cluster_state_bundle_activation(
diff --git a/storage/src/tests/distributor/top_level_distributor_test_util.h b/storage/src/tests/distributor/top_level_distributor_test_util.h
index 5ae6646502f..b4fd0ccec12 100644
--- a/storage/src/tests/distributor/top_level_distributor_test_util.h
+++ b/storage/src/tests/distributor/top_level_distributor_test_util.h
@@ -168,7 +168,7 @@ protected:
MessageSenderImpl _message_sender;
uint32_t _num_distributor_stripes;
- void enable_distributor_cluster_state(vespalib::stringref state, bool has_bucket_ownership_transfer = false);
+ void enable_distributor_cluster_state(std::string_view state, bool has_bucket_ownership_transfer = false);
void enable_distributor_cluster_state(const lib::ClusterStateBundle& state);
};
diff --git a/storage/src/tests/distributor/twophaseupdateoperationtest.cpp b/storage/src/tests/distributor/twophaseupdateoperationtest.cpp
index 8ccca37e6c1..02473f31a54 100644
--- a/storage/src/tests/distributor/twophaseupdateoperationtest.cpp
+++ b/storage/src/tests/distributor/twophaseupdateoperationtest.cpp
@@ -134,7 +134,7 @@ struct TwoPhaseUpdateOperationTest : Test, DistributorStripeTestUtil {
_timestampToUpdate = ts;
return *this;
}
- UpdateOptions& condition(vespalib::stringref cond) {
+ UpdateOptions& condition(std::string_view cond) {
_condition = documentapi::TestAndSetCondition(cond);
return *this;
}
diff --git a/storage/src/tests/distributor/visitoroperationtest.cpp b/storage/src/tests/distributor/visitoroperationtest.cpp
index 5ad0ef939b0..cf07303fd24 100644
--- a/storage/src/tests/distributor/visitoroperationtest.cpp
+++ b/storage/src/tests/distributor/visitoroperationtest.cpp
@@ -1114,7 +1114,7 @@ TEST_F(VisitorOperationTest, assigning_put_lock_access_token_sets_special_visito
auto cmd = std::dynamic_pointer_cast<api::CreateVisitorCommand>(_sender.command(0));
ASSERT_TRUE(cmd);
EXPECT_EQ(cmd->getParameters().get(reindexing_bucket_lock_visitor_parameter_key(),
- vespalib::stringref("")),
+ std::string_view("")),
"its-a me, mario");
}
diff --git a/storage/src/tests/frameworkimpl/status/statustest.cpp b/storage/src/tests/frameworkimpl/status/statustest.cpp
index 8592a332f0c..72886d2c29d 100644
--- a/storage/src/tests/frameworkimpl/status/statustest.cpp
+++ b/storage/src/tests/frameworkimpl/status/statustest.cpp
@@ -30,7 +30,7 @@ vespalib::string fetch(int port, const vespalib::string &path) {
vespalib::string result;
ssize_t res = conn->read(buf, sizeof(buf));
while (res > 0) {
- result.append(vespalib::stringref(buf, res));
+ result.append(std::string_view(buf, res));
res = conn->read(buf, sizeof(buf));
}
assert(res == 0);
diff --git a/storage/src/tests/persistence/filestorage/feed_operation_batching_test.cpp b/storage/src/tests/persistence/filestorage/feed_operation_batching_test.cpp
index cf16123933b..1e4f581b779 100644
--- a/storage/src/tests/persistence/filestorage/feed_operation_batching_test.cpp
+++ b/storage/src/tests/persistence/filestorage/feed_operation_batching_test.cpp
@@ -139,7 +139,7 @@ struct FeedOperationBatchingTest : FileStorTestFixture {
auto id = as_cmd->getDocumentId();
ASSERT_TRUE(id.getScheme().hasNumber());
EXPECT_EQ(id.getScheme().getNumber(), expected_bucket_idx) << id;
- std::string actual_id_part = id.getScheme().getNamespaceSpecific();
+ std::string actual_id_part(id.getScheme().getNamespaceSpecific());
std::string expected_id_part = std::to_string(expected_doc_idx);
EXPECT_EQ(actual_id_part, expected_id_part) << id;
}
diff --git a/storage/src/tests/persistence/mergehandlertest.cpp b/storage/src/tests/persistence/mergehandlertest.cpp
index 2514f524b57..1a80374d182 100644
--- a/storage/src/tests/persistence/mergehandlertest.cpp
+++ b/storage/src/tests/persistence/mergehandlertest.cpp
@@ -44,7 +44,7 @@ struct MergeHandlerTest : PersistenceTestUtils {
// @TODO Add test to test that buildBucketInfo and mergeLists create minimal list (wrong sorting screws this up)
- void fillDummyApplyDiff(std::vector<api::ApplyBucketDiffCommand::Entry>& diff);
+ void fillDummyApplyDiff(std::vector<api::ApplyBucketDiffCommand::Entry>& diff) const;
std::shared_ptr<api::ApplyBucketDiffCommand> createDummyApplyDiff(
int timestampOffset,
uint16_t hasMask = 0x1,
@@ -73,7 +73,6 @@ struct MergeHandlerTest : PersistenceTestUtils {
virtual void invoke(MergeHandlerTest&, MergeHandler&, spi::Context&) = 0;
virtual std::string afterInvoke(MergeHandlerTest&, MergeHandler&) = 0;
};
- friend class HandlerInvoker;
class NoReplyHandlerInvoker
: public HandlerInvoker
@@ -92,13 +91,6 @@ struct MergeHandlerTest : PersistenceTestUtils {
void invoke(MergeHandlerTest&, MergeHandler&, spi::Context&) override;
};
- class HandleMergeBucketReplyInvoker
- : public NoReplyHandlerInvoker
- {
- public:
- void invoke(MergeHandlerTest&, MergeHandler&, spi::Context&) override;
- };
-
class HandleGetBucketDiffInvoker
: public NoReplyHandlerInvoker
{
@@ -168,13 +160,13 @@ struct MergeHandlerTest : PersistenceTestUtils {
HandlerInvoker& invoker,
const ExpectedExceptionSpec& spec);
- MergeHandler createHandler(size_t maxChunkSize = 0x400000) {
- return MergeHandler(getEnv(), getPersistenceProvider(),
- getEnv()._component.cluster_context(), getEnv()._component.getClock(), *_sequenceTaskExecutor, maxChunkSize);
+ MergeHandler createHandler(uint32_t maxChunkSize = 0x400000) {
+ return {getEnv(), getPersistenceProvider(), getEnv()._component.cluster_context(),
+ getEnv()._component.getClock(), *_sequenceTaskExecutor, maxChunkSize};
}
MergeHandler createHandler(spi::PersistenceProvider & spi) {
- return MergeHandler(getEnv(), spi,
- getEnv()._component.cluster_context(), getEnv()._component.getClock(), *_sequenceTaskExecutor, 4190208);
+ return {getEnv(), spi, getEnv()._component.cluster_context(),
+ getEnv()._component.getClock(), *_sequenceTaskExecutor, 4190208};
}
std::shared_ptr<api::StorageMessage> get_queued_reply() {
@@ -425,8 +417,8 @@ size_t
getFilledCount(const std::vector<api::ApplyBucketDiffCommand::Entry>& diff)
{
size_t filledCount = 0;
- for (size_t i=0; i<diff.size(); ++i) {
- if (diff[i].filled()) {
+ for (const auto & i : diff) {
+ if (i.filled()) {
++filledCount;
}
}
@@ -437,9 +429,9 @@ size_t
getFilledDataSize(const std::vector<api::ApplyBucketDiffCommand::Entry>& diff)
{
size_t filledSize = 0;
- for (size_t i=0; i<diff.size(); ++i) {
- filledSize += diff[i]._headerBlob.size();
- filledSize += diff[i]._bodyBlob.size();
+ for (const auto & i : diff) {
+ filledSize += i._headerBlob.size();
+ filledSize += i._bodyBlob.size();
}
return filledSize;
}
@@ -480,14 +472,14 @@ TEST_F(MergeHandlerTest, chunked_apply_bucket_diff) {
// Include node 1 in hasmask for all diffs to indicate it's done
// Also remember the diffs we've seen thus far to ensure chunking
// does not send duplicates.
- for (size_t i = 0; i < diff.size(); ++i) {
- if (!diff[i].filled()) {
+ for (auto & i : diff) {
+ if (!i.filled()) {
continue;
}
- diff[i]._entry._hasMask |= 2u;
- auto inserted = seen.emplace(spi::Timestamp(diff[i]._entry._timestamp));
+ i._entry._hasMask |= 2u;
+ auto inserted = seen.emplace(i._entry._timestamp);
if (!inserted.second) {
- FAIL() << "Diff for " << diff[i]
+ FAIL() << "Diff for " << i
<< " has already been seen in another ApplyBucketDiff";
}
}
@@ -561,8 +553,7 @@ TEST_F(MergeHandlerTest, max_timestamp) {
}
void
-MergeHandlerTest::fillDummyApplyDiff(
- std::vector<api::ApplyBucketDiffCommand::Entry>& diff)
+MergeHandlerTest::fillDummyApplyDiff(std::vector<api::ApplyBucketDiffCommand::Entry>& diff) const
{
document::TestDocMan docMan;
document::Document::SP doc(docMan.createRandomDocumentAtLocation(_location));
@@ -776,7 +767,7 @@ MergeHandlerTest::convert_delayed_error_to_exception(MergeHandler& handler)
getEnv()._fileStorHandler.clearMergeStatus(_bucket, return_code);
fetchSingleMessage<api::ApplyBucketDiffReply>();
fetchSingleMessage<api::ApplyBucketDiffCommand>();
- throw std::runtime_error(return_code.getMessage());
+ throw std::runtime_error(std::string(return_code.getMessage()));
}
}
}
@@ -1052,7 +1043,7 @@ MergeHandlerTest::HandleApplyBucketDiffReplyInvoker::convert_delayed_error_to_ex
auto chained_reply = _stub.replies.back();
_stub.replies.pop_back();
test.messageKeeper().sendReply(chained_reply);
- throw std::runtime_error(chained_reply->getResult().getMessage());
+ throw std::runtime_error(std::string(chained_reply->getResult().getMessage()));
}
}
@@ -1221,8 +1212,7 @@ TEST_F(MergeHandlerTest, remove_put_on_existing_timestamp) {
// Timestamp should now be a regular remove
bool foundTimestamp = false;
- for (size_t i = 0; i < getBucketDiffCmd->getDiff().size(); ++i) {
- const api::GetBucketDiffCommand::Entry& e(getBucketDiffCmd->getDiff()[i]);
+ for (const auto & e : getBucketDiffCmd->getDiff()) {
if (e._timestamp == ts) {
EXPECT_EQ(
uint16_t(MergeHandler::IN_USE | MergeHandler::DELETED),
diff --git a/storage/src/tests/persistence/provider_error_wrapper_test.cpp b/storage/src/tests/persistence/provider_error_wrapper_test.cpp
index d5ce8400b25..7ecc9dac30e 100644
--- a/storage/src/tests/persistence/provider_error_wrapper_test.cpp
+++ b/storage/src/tests/persistence/provider_error_wrapper_test.cpp
@@ -16,11 +16,11 @@ struct ProviderErrorWrapperTest : PersistenceTestUtils {
namespace {
struct MockErrorListener : ProviderErrorListener {
- void on_fatal_error(vespalib::stringref message) override {
+ void on_fatal_error(std::string_view message) override {
_seen_fatal_error = true;
_fatal_error = message;
}
- void on_resource_exhaustion_error(vespalib::stringref message) override {
+ void on_resource_exhaustion_error(std::string_view message) override {
_seen_resource_exhaustion_error = true;
_resource_exhaustion_error = message;
}
diff --git a/storage/src/tests/storageserver/changedbucketownershiphandlertest.cpp b/storage/src/tests/storageserver/changedbucketownershiphandlertest.cpp
index 6993882f479..e4962c45921 100644
--- a/storage/src/tests/storageserver/changedbucketownershiphandlertest.cpp
+++ b/storage/src/tests/storageserver/changedbucketownershiphandlertest.cpp
@@ -90,7 +90,7 @@ struct ChangedBucketOwnershipHandlerTest : Test {
}
static std::shared_ptr<const lib::ClusterStateBundle> make_state_bundle_with_config(
- vespalib::stringref state_str, uint16_t node_count)
+ std::string_view state_str, uint16_t node_count)
{
return std::make_shared<const lib::ClusterStateBundle>(
std::make_shared<const lib::ClusterState>(state_str),
diff --git a/storage/src/tests/storageserver/communicationmanagertest.cpp b/storage/src/tests/storageserver/communicationmanagertest.cpp
index b741d79582f..7de9d7ca011 100644
--- a/storage/src/tests/storageserver/communicationmanagertest.cpp
+++ b/storage/src/tests/storageserver/communicationmanagertest.cpp
@@ -295,7 +295,7 @@ using vespa::config::content::core::BucketspacesConfigBuilder;
namespace {
-BucketspacesConfigBuilder::Documenttype doc_type(vespalib::stringref name, vespalib::stringref space) {
+BucketspacesConfigBuilder::Documenttype doc_type(std::string_view name, std::string_view space) {
BucketspacesConfigBuilder::Documenttype dt;
dt.name = name;
dt.bucketspace = space;
diff --git a/storage/src/tests/storageserver/configurable_bucket_resolver_test.cpp b/storage/src/tests/storageserver/configurable_bucket_resolver_test.cpp
index 499bc365edd..da8e76e7e93 100644
--- a/storage/src/tests/storageserver/configurable_bucket_resolver_test.cpp
+++ b/storage/src/tests/storageserver/configurable_bucket_resolver_test.cpp
@@ -76,7 +76,7 @@ using BucketSpacesConfigBuilder = vespa::config::content::core::BucketspacesConf
namespace {
-BucketSpacesConfigBuilder::Documenttype make_doc_type(vespalib::stringref name, vespalib::stringref space) {
+BucketSpacesConfigBuilder::Documenttype make_doc_type(std::string_view name, std::string_view space) {
BucketSpacesConfigBuilder::Documenttype doc_type;
doc_type.name = name;
doc_type.bucketspace = space;
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 9b9b32a74ab..dcdc53aae8c 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,8 +17,8 @@ public:
Mappings mappings;
uint32_t gen;
MockMirror() : mappings(), gen(1) {}
- SpecList lookup(vespalib::stringref pattern) const override {
- auto itr = mappings.find(pattern);
+ SpecList lookup(std::string_view pattern) const override {
+ auto itr = mappings.find(vespalib::string(pattern));
if (itr != mappings.end()) {
return itr->second;
}
diff --git a/storage/src/tests/storageserver/rpc/cluster_controller_rpc_api_service_test.cpp b/storage/src/tests/storageserver/rpc/cluster_controller_rpc_api_service_test.cpp
index e59f6d22080..ca348b06c1c 100644
--- a/storage/src/tests/storageserver/rpc/cluster_controller_rpc_api_service_test.cpp
+++ b/storage/src/tests/storageserver/rpc/cluster_controller_rpc_api_service_test.cpp
@@ -125,7 +125,7 @@ struct SetStateFixture : FixtureBase {
}
};
-std::shared_ptr<const lib::ClusterState> state_of(vespalib::stringref state) {
+std::shared_ptr<const lib::ClusterState> state_of(std::string_view state) {
return std::make_shared<const lib::ClusterState>(state);
}
@@ -135,7 +135,7 @@ vespalib::string make_compressable_state_string() {
ss << " ." << i << ".s:d";
}
return vespalib::make_string("version:123 distributor:100%s storage:100%s",
- ss.str().data(), ss.str().data());
+ ss.view().data(), ss.view().data());
}
} // anon namespace
diff --git a/storage/src/tests/storageserver/rpc/storage_api_rpc_service_test.cpp b/storage/src/tests/storageserver/rpc/storage_api_rpc_service_test.cpp
index 010f2b441ef..5852e27f78d 100644
--- a/storage/src/tests/storageserver/rpc/storage_api_rpc_service_test.cpp
+++ b/storage/src/tests/storageserver/rpc/storage_api_rpc_service_test.cpp
@@ -129,7 +129,7 @@ public:
const SharedRpcResources& shared_rpc_resources() const noexcept { return *_shared_rpc_resources; }
SharedRpcResources& shared_rpc_resources() noexcept { return *_shared_rpc_resources; }
- void wait_until_visible_in_slobrok(vespalib::stringref id) {
+ void wait_until_visible_in_slobrok(std::string_view id) {
const auto deadline = std::chrono::steady_clock::now() + slobrok_register_timeout;
while (_shared_rpc_resources->slobrok_mirror().lookup(id).empty()) {
if (std::chrono::steady_clock::now() > deadline) {
diff --git a/storage/src/tests/storageserver/service_layer_error_listener_test.cpp b/storage/src/tests/storageserver/service_layer_error_listener_test.cpp
index b84f96dd847..d7222700026 100644
--- a/storage/src/tests/storageserver/service_layer_error_listener_test.cpp
+++ b/storage/src/tests/storageserver/service_layer_error_listener_test.cpp
@@ -24,7 +24,7 @@ class TestShutdownListener
public:
TestShutdownListener() : _reason() {}
- void requestShutdown(vespalib::stringref reason) override {
+ void requestShutdown(std::string_view reason) override {
_reason = reason;
}
diff --git a/storage/src/tests/storageserver/statemanagertest.cpp b/storage/src/tests/storageserver/statemanagertest.cpp
index 45ad44b1152..c7f6ef0c5c0 100644
--- a/storage/src/tests/storageserver/statemanagertest.cpp
+++ b/storage/src/tests/storageserver/statemanagertest.cpp
@@ -33,14 +33,14 @@ struct StateManagerTest : Test, NodeStateReporter {
void SetUp() override;
void TearDown() override;
- static std::shared_ptr<api::SetSystemStateCommand> make_set_state_cmd(vespalib::stringref state_str, uint16_t cc_index) {
+ static std::shared_ptr<api::SetSystemStateCommand> make_set_state_cmd(std::string_view state_str, uint16_t cc_index) {
auto cmd = std::make_shared<api::SetSystemStateCommand>(lib::ClusterState(state_str));
cmd->setSourceIndex(cc_index);
return cmd;
}
static std::shared_ptr<const lib::ClusterStateBundle> make_state_bundle_with_config(
- vespalib::stringref state_str, uint16_t num_nodes)
+ std::string_view state_str, uint16_t num_nodes)
{
auto state = std::make_shared<const ClusterState>(state_str);
auto distr = lib::DistributionConfigBundle::of(lib::Distribution::getDefaultDistributionConfig(1, num_nodes));
@@ -51,7 +51,7 @@ struct StateManagerTest : Test, NodeStateReporter {
static std::shared_ptr<api::SetSystemStateCommand> make_set_state_cmd_with_config(
- vespalib::stringref state_str, uint16_t num_nodes)
+ std::string_view state_str, uint16_t num_nodes)
{
return std::make_shared<api::SetSystemStateCommand>(make_state_bundle_with_config(state_str, num_nodes));
}
diff --git a/storage/src/tests/visiting/commandqueuetest.cpp b/storage/src/tests/visiting/commandqueuetest.cpp
index 74de7430c3f..f8068c8c915 100644
--- a/storage/src/tests/visiting/commandqueuetest.cpp
+++ b/storage/src/tests/visiting/commandqueuetest.cpp
@@ -16,13 +16,13 @@ namespace storage {
namespace {
std::shared_ptr<api::CreateVisitorCommand> getCommand(
- vespalib::stringref name, vespalib::duration timeout,
+ std::string_view name, vespalib::duration timeout,
uint8_t priority = 0)
{
vespalib::asciistream ost;
ost << name << " t=" << vespalib::count_ms(timeout) << " p=" << static_cast<unsigned int>(priority);
// Piggyback name in document selection
- auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "", "", ost.str());
+ auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "", "", ost.view());
cmd->setQueueTimeout(timeout);
cmd->setPriority(priority);
return cmd;
diff --git a/storage/src/tests/visiting/visitortest.cpp b/storage/src/tests/visiting/visitortest.cpp
index 075ebd13741..3d34230c98f 100644
--- a/storage/src/tests/visiting/visitortest.cpp
+++ b/storage/src/tests/visiting/visitortest.cpp
@@ -80,7 +80,7 @@ struct VisitorTest : Test {
VisitorOptions() {}
- VisitorOptions& withVisitorType(vespalib::stringref type) {
+ VisitorOptions& withVisitorType(std::string_view type) {
visitorType = type;
return *this;
}
@@ -109,7 +109,7 @@ struct VisitorTest : Test {
protected:
void doTestVisitorInstanceHasConsistencyLevel(
- vespalib::stringref visitorType,
+ std::string_view visitorType,
spi::ReadConsistency expectedConsistency);
template <typename T>
@@ -850,7 +850,7 @@ TEST_F(VisitorTest, no_more_iterators_sent_while_memory_used_above_limit) {
void
VisitorTest::doTestVisitorInstanceHasConsistencyLevel(
- vespalib::stringref visitorType,
+ std::string_view visitorType,
spi::ReadConsistency expectedConsistency)
{
ASSERT_NO_FATAL_FAILURE(initializeTest());
diff --git a/storage/src/vespa/storage/bucketdb/bucketmanager.cpp b/storage/src/vespa/storage/bucketdb/bucketmanager.cpp
index 280afe8fb91..44b9283145f 100644
--- a/storage/src/vespa/storage/bucketdb/bucketmanager.cpp
+++ b/storage/src/vespa/storage/bucketdb/bucketmanager.cpp
@@ -202,7 +202,7 @@ struct MetricsUpdater {
namespace {
void
-output(vespalib::JsonStream & json, vespalib::stringref name, uint64_t value, vespalib::stringref bucketSpace) {
+output(vespalib::JsonStream & json, std::string_view name, uint64_t value, std::string_view bucketSpace) {
using namespace vespalib::jsonstream;
json << Object();
json << "name" << name;
@@ -216,7 +216,7 @@ output(vespalib::JsonStream & json, vespalib::stringref name, uint64_t value, ve
}
void
-output(vespalib::JsonStream & json, vespalib::stringref name, uint64_t value) {
+output(vespalib::JsonStream & json, std::string_view name, uint64_t value) {
output(json, name, value, "");
}
diff --git a/storage/src/vespa/storage/common/content_bucket_space.h b/storage/src/vespa/storage/common/content_bucket_space.h
index 67ee4209d35..9dfd6031346 100644
--- a/storage/src/vespa/storage/common/content_bucket_space.h
+++ b/storage/src/vespa/storage/common/content_bucket_space.h
@@ -25,7 +25,9 @@ struct ClusterStateAndDistribution {
// Precondition: valid() == true
[[nodiscard]] const lib::ClusterState& cluster_state() const noexcept { return *_cluster_state; }
+ [[nodiscard]] const std::shared_ptr<const lib::ClusterState>& cluster_state_sp() const noexcept { return _cluster_state; }
[[nodiscard]] const lib::Distribution& distribution() const noexcept { return *_distribution; }
+ [[nodiscard]] const std::shared_ptr<const lib::Distribution>& distribution_sp() const noexcept { return _distribution; }
[[nodiscard]] std::shared_ptr<const ClusterStateAndDistribution> with_new_state(
std::shared_ptr<const lib::ClusterState> cluster_state) const;
diff --git a/storage/src/vespa/storage/common/distributorcomponent.cpp b/storage/src/vespa/storage/common/distributorcomponent.cpp
index c2249a1ef68..3091173be37 100644
--- a/storage/src/vespa/storage/common/distributorcomponent.cpp
+++ b/storage/src/vespa/storage/common/distributorcomponent.cpp
@@ -8,7 +8,7 @@
namespace storage {
DistributorComponent::DistributorComponent(DistributorComponentRegister& compReg,
- vespalib::stringref name)
+ std::string_view name)
: StorageComponent(compReg, name),
_timeCalculator(nullptr),
_distributorConfig(std::make_unique<DistributorManagerConfig>()),
diff --git a/storage/src/vespa/storage/common/distributorcomponent.h b/storage/src/vespa/storage/common/distributorcomponent.h
index cb5e76fe44b..79e36bd0967 100644
--- a/storage/src/vespa/storage/common/distributorcomponent.h
+++ b/storage/src/vespa/storage/common/distributorcomponent.h
@@ -75,7 +75,7 @@ class DistributorComponent : public StorageComponent,
public:
using UP = std::unique_ptr<DistributorComponent>;
- DistributorComponent(DistributorComponentRegister& compReg, vespalib::stringref name);
+ DistributorComponent(DistributorComponentRegister& compReg, std::string_view name);
~DistributorComponent() override;
[[nodiscard]] api::Timestamp getUniqueTimestamp() const {
diff --git a/storage/src/vespa/storage/common/node_identity.cpp b/storage/src/vespa/storage/common/node_identity.cpp
index 048ad72cb5c..42052c80bdc 100644
--- a/storage/src/vespa/storage/common/node_identity.cpp
+++ b/storage/src/vespa/storage/common/node_identity.cpp
@@ -4,7 +4,7 @@
namespace storage {
-NodeIdentity::NodeIdentity(vespalib::stringref cluster_name_in,
+NodeIdentity::NodeIdentity(std::string_view cluster_name_in,
const lib::NodeType& node_type_in,
uint16_t node_index_in)
: _cluster_name(cluster_name_in),
diff --git a/storage/src/vespa/storage/common/node_identity.h b/storage/src/vespa/storage/common/node_identity.h
index 301fd59658c..789bb41c858 100644
--- a/storage/src/vespa/storage/common/node_identity.h
+++ b/storage/src/vespa/storage/common/node_identity.h
@@ -17,7 +17,7 @@ private:
uint16_t _node_index;
public:
- NodeIdentity(vespalib::stringref cluster_name_in,
+ NodeIdentity(std::string_view cluster_name_in,
const lib::NodeType& node_type_in,
uint16_t node_index_in);
const vespalib::string& cluster_name() const { return _cluster_name; }
diff --git a/storage/src/vespa/storage/common/servicelayercomponent.h b/storage/src/vespa/storage/common/servicelayercomponent.h
index 23bed3b6a82..2a300e54530 100644
--- a/storage/src/vespa/storage/common/servicelayercomponent.h
+++ b/storage/src/vespa/storage/common/servicelayercomponent.h
@@ -62,7 +62,7 @@ public:
using UP = std::unique_ptr<ServiceLayerComponent>;
ServiceLayerComponent(ServiceLayerComponentRegister& compReg,
- vespalib::stringref name)
+ std::string_view name)
: StorageComponent(compReg, name),
_bucketSpaceRepo(nullptr),
_minUsedBitsTracker(nullptr)
diff --git a/storage/src/vespa/storage/common/statusmetricconsumer.cpp b/storage/src/vespa/storage/common/statusmetricconsumer.cpp
index a2cfbf0843b..7d26276473b 100644
--- a/storage/src/vespa/storage/common/statusmetricconsumer.cpp
+++ b/storage/src/vespa/storage/common/statusmetricconsumer.cpp
@@ -131,12 +131,12 @@ StatusMetricConsumer::reportStatus(std::ostream& out,
_manager.visit(metricLock, *snapshot, metricJsonWriter, consumer);
stream << End();
stream.finalize();
- out << jsonStreamData.str();
+ out << jsonStreamData.view();
} else if (prometheus) {
vespalib::asciistream ps;
metrics::PrometheusWriter pw(ps);
_manager.visit(metricLock, *snapshot, pw, consumer);
- out << ps.str();
+ out << ps.view();
} else {
std::string pattern = path.getAttribute("pattern", ".*");
metrics::TextWriter textWriter(out, snapshot->getPeriod(), pattern, verbosity > 0);
diff --git a/storage/src/vespa/storage/common/storagecomponent.cpp b/storage/src/vespa/storage/common/storagecomponent.cpp
index 148683750ea..7c48aa4f4e0 100644
--- a/storage/src/vespa/storage/common/storagecomponent.cpp
+++ b/storage/src/vespa/storage/common/storagecomponent.cpp
@@ -20,7 +20,7 @@ StorageComponent::Repos::~Repos() = default;
StorageComponent::~StorageComponent() = default;
void
-StorageComponent::setNodeInfo(vespalib::stringref clusterName,
+StorageComponent::setNodeInfo(std::string_view clusterName,
const lib::NodeType& nodeType,
uint16_t index)
{
@@ -67,7 +67,7 @@ StorageComponent::setNodeStateUpdater(NodeStateUpdater& updater)
}
StorageComponent::StorageComponent(StorageComponentRegister& compReg,
- vespalib::stringref name)
+ std::string_view name)
: Component(compReg, name),
_cluster_ctx(),
_nodeType(nullptr),
diff --git a/storage/src/vespa/storage/common/storagecomponent.h b/storage/src/vespa/storage/common/storagecomponent.h
index ba12fc666a9..c30ccddf124 100644
--- a/storage/src/vespa/storage/common/storagecomponent.h
+++ b/storage/src/vespa/storage/common/storagecomponent.h
@@ -67,7 +67,7 @@ public:
* Node type is supposed to be set immediately, and never be updated.
* Thus it does not need to be threadsafe. Should never be used before set.
*/
- void setNodeInfo(vespalib::stringref clusterName, const lib::NodeType& nodeType, uint16_t index);
+ void setNodeInfo(std::string_view clusterName, const lib::NodeType& nodeType, uint16_t index);
/**
* Node state updater is supposed to be set immediately, and never be
@@ -79,7 +79,7 @@ public:
void setBucketIdFactory(const document::BucketIdFactory&);
void setDistribution(DistributionSP);
- StorageComponent(StorageComponentRegister&, vespalib::stringref name);
+ StorageComponent(StorageComponentRegister&, std::string_view name);
~StorageComponent() override;
const ClusterContext & cluster_context() const noexcept { return _cluster_ctx; }
diff --git a/storage/src/vespa/storage/distributor/activecopy.cpp b/storage/src/vespa/storage/distributor/activecopy.cpp
index b823978a0cc..d70e7daef51 100644
--- a/storage/src/vespa/storage/distributor/activecopy.cpp
+++ b/storage/src/vespa/storage/distributor/activecopy.cpp
@@ -28,34 +28,26 @@ using IndexList = lib::Distribution::IndexList;
vespalib::string
ActiveCopy::getReason() const {
+ vespalib::asciistream ost;
if (_ready && (_doc_count > 0) && valid_ideal()) {
- vespalib::asciistream ost;
ost << "copy is ready, has " << _doc_count
<< " docs and ideal state priority " << _ideal;
- return ost.str();
} else if (_ready && (_doc_count > 0)) {
- vespalib::asciistream ost;
ost << "copy is ready with " << _doc_count << " docs";
- return ost.str();
} else if (_ready) {
return "copy is ready";
} else if ((_doc_count > 0) && valid_ideal()) {
- vespalib::asciistream ost;
ost << "copy has " << _doc_count << " docs and ideal state priority " << _ideal;
- return ost.str();
} else if (_doc_count > 0) {
- vespalib::asciistream ost;
ost << "copy has " << _doc_count << " docs";
- return ost.str();
} else if (_active) {
return "copy is already active";
} else if (valid_ideal()) {
- vespalib::asciistream ost;
ost << "copy is ideal state priority " << _ideal;
- return ost.str();
} else {
return "first available copy";
}
+ return ost.str();
}
std::ostream&
diff --git a/storage/src/vespa/storage/distributor/distributor_stripe.cpp b/storage/src/vespa/storage/distributor/distributor_stripe.cpp
index f8abdf78c2b..2b3fb4bda60 100644
--- a/storage/src/vespa/storage/distributor/distributor_stripe.cpp
+++ b/storage/src/vespa/storage/distributor/distributor_stripe.cpp
@@ -233,7 +233,14 @@ DistributorStripe::handleReply(const std::shared_ptr<api::StorageReply>& reply)
}
if (_maintenanceOperationOwner.handleReply(reply)) {
- _scanner->prioritizeBucket(bucket);
+ // If a maintenance operation reply comes from a node that went down after its original
+ // request was sent _and_ cancelling is enabled, the operation will be present in
+ // _maintenanceOperationOwner but _not_ in _pendingMessageTracker. The latter returns
+ // the zero bucket (including an invalid bucket space) if no mapping could be found,
+ // which is not accepted by prioritizeBucket().
+ if (bucket.getBucketId() != document::BucketId(0)) {
+ _scanner->prioritizeBucket(bucket);
+ }
return true;
}
@@ -701,7 +708,7 @@ toBucketSpacesStats(const NodeMaintenanceStatsTracker &maintenanceStats)
{
PerNodeBucketSpacesStats result;
for (const auto &entry : maintenanceStats.perNodeStats()) {
- auto bucketSpace = document::FixedBucketSpaces::to_string(entry.first.bucketSpace());
+ const vespalib::string & bucketSpace(document::FixedBucketSpaces::to_string(entry.first.bucketSpace()));
result[entry.first.node()][bucketSpace] = toBucketSpaceStats(entry.second);
}
return result;
diff --git a/storage/src/vespa/storage/distributor/operation_sequencer.h b/storage/src/vespa/storage/distributor/operation_sequencer.h
index b74729bd7ec..194a083d7fe 100644
--- a/storage/src/vespa/storage/distributor/operation_sequencer.h
+++ b/storage/src/vespa/storage/distributor/operation_sequencer.h
@@ -31,7 +31,7 @@ public:
vespalib::string lock_token;
BlockedByLockedBucket() = default;
- explicit BlockedByLockedBucket(vespalib::stringref token) : lock_token(token) {}
+ explicit BlockedByLockedBucket(std::string_view token) : lock_token(token) {}
};
private:
OperationSequencer* _sequencer;
@@ -103,7 +103,7 @@ public:
[[nodiscard]] bool is_blocked_by_bucket() const noexcept {
return std::holds_alternative<BlockedByLockedBucket>(_handle);
}
- [[nodiscard]] bool is_bucket_blocked_with_token(vespalib::stringref token) const noexcept {
+ [[nodiscard]] bool is_bucket_blocked_with_token(std::string_view token) const noexcept {
return (std::holds_alternative<BlockedByLockedBucket>(_handle) &&
(std::get<BlockedByLockedBucket>(_handle).lock_token == token));
}
diff --git a/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp b/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp
index 849746416d6..738a5c6e13a 100644
--- a/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp
@@ -633,7 +633,7 @@ TwoPhaseUpdateOperation::hasTasCondition() const noexcept
}
void
-TwoPhaseUpdateOperation::replyWithTasFailure(DistributorStripeMessageSender& sender, vespalib::stringref message)
+TwoPhaseUpdateOperation::replyWithTasFailure(DistributorStripeMessageSender& sender, std::string_view message)
{
sendReplyWithResult(sender, api::ReturnCode(api::ReturnCode::TEST_AND_SET_CONDITION_FAILED, message));
}
diff --git a/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.h b/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.h
index 0511c07a5c1..5c9a3a030bc 100644
--- a/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.h
@@ -131,7 +131,7 @@ private:
void addTraceFromReply(api::StorageReply& reply);
[[nodiscard]] bool hasTasCondition() const noexcept;
void replyWithTasFailure(DistributorStripeMessageSender& sender,
- vespalib::stringref message);
+ std::string_view message);
bool may_restart_with_fast_path(const api::GetReply& reply);
[[nodiscard]] bool replica_set_unchanged_after_get_operation() const;
void restart_with_fast_path_due_to_consistent_get_timestamps(DistributorStripeMessageSender& sender);
diff --git a/storage/src/vespa/storage/distributor/operations/external/visitoroperation.cpp b/storage/src/vespa/storage/distributor/operations/external/visitoroperation.cpp
index afbb74851c7..5b8422e6a86 100644
--- a/storage/src/vespa/storage/distributor/operations/external/visitoroperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/external/visitoroperation.cpp
@@ -51,7 +51,7 @@ VisitorOperation::SuperBucketInfo::~SuperBucketInfo() = default;
namespace {
[[nodiscard]] bool
-matches_visitor_library(vespalib::stringref input, vespalib::stringref expected)
+matches_visitor_library(std::string_view input, std::string_view expected)
{
if (input.size() != expected.size()) {
return false;
@@ -233,7 +233,7 @@ namespace {
class VisitorVerificationException {
public:
VisitorVerificationException(api::ReturnCode::Result result,
- vespalib::stringref message)
+ std::string_view message)
: _code(result, message)
{}
@@ -813,7 +813,7 @@ VisitorOperation::sendStorageVisitor(uint16_t node,
os << _msg->getInstanceId() << '-'
<< _node_ctx.node_index() << '-' << cmd->getMsgId();
- vespalib::string storageInstanceId(os.str());
+ vespalib::string storageInstanceId(os.view());
cmd->setInstanceId(storageInstanceId);
cmd->setAddress(api::StorageMessageAddress::create(_node_ctx.cluster_name_ptr(), lib::NodeType::STORAGE, node));
cmd->setMaximumPendingReplyCount(pending);
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/idealstateoperation.h b/storage/src/vespa/storage/distributor/operations/idealstate/idealstateoperation.h
index 37539c3d563..d52ce68d1cf 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/idealstateoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/idealstateoperation.h
@@ -195,12 +195,12 @@ public:
*/
api::StorageMessage::Priority getPriority() const noexcept { return _priority; }
- void setDetailedReason(const std::string& detailedReason) {
- _detailedReason = detailedReason;
- }
- void setDetailedReason(std::string&& detailedReason) {
+ void setDetailedReason(std::string detailedReason) {
_detailedReason = std::move(detailedReason);
}
+ void setDetailedReason(std::string_view detailedReason) {
+ _detailedReason = std::string(detailedReason);
+ }
const std::string& getDetailedReason() const override {
return _detailedReason;
diff --git a/storage/src/vespa/storage/distributor/statecheckers.cpp b/storage/src/vespa/storage/distributor/statecheckers.cpp
index 562cbe3dc3e..1310a446ddd 100644
--- a/storage/src/vespa/storage/distributor/statecheckers.cpp
+++ b/storage/src/vespa/storage/distributor/statecheckers.cpp
@@ -80,7 +80,7 @@ SplitBucketStateChecker::generateMinimumBucketSplitOperation(const Context& c)
c.distributorConfig.getMinimalBucketSplit(), 0, 0);
so->setPriority(c.distributorConfig.getMaintenancePriorities().splitDistributionBits);
- so->setDetailedReason("[Splitting bucket because the current system size requires a higher minimum split bit]");
+ so->setDetailedReason(std::string("[Splitting bucket because the current system size requires a higher minimum split bit]"));
return Result::createStoredResult(std::move(so), MaintenancePriority::MEDIUM);
}
@@ -103,7 +103,7 @@ SplitBucketStateChecker::generateMaxSizeExceededSplitOperation(const Context& c)
<< c.distributorConfig.getSplitSize()
<< ", " << c.distributorConfig.getSplitCount() << ")]";
- so->setDetailedReason(ost.str());
+ so->setDetailedReason(ost.view());
return Result::createStoredResult(std::move(so), MaintenancePriority::HIGH);
}
@@ -431,7 +431,7 @@ JoinBucketsStateChecker::check(const Context &c) const
<< getTotalMetaCount(c) << " docs) is less than the configured limit of ("
<< c.distributorConfig.getJoinSize() << ", " << c.distributorConfig.getJoinCount() << ")";
- op->setDetailedReason(ost.str());
+ op->setDetailedReason(ost.view());
return Result::createStoredResult(std::move(op), MaintenancePriority::VERY_LOW);
}
@@ -498,7 +498,7 @@ SplitInconsistentStateChecker::check(const Context &c) const
getHighestUsedBits(c.entries), 0, 0);
op->setPriority(c.distributorConfig.getMaintenancePriorities().splitInconsistentBucket);
- op->setDetailedReason(getReason(c.getBucketId(), c.entries));
+ op->setDetailedReason(std::string(getReason(c.getBucketId(), c.entries)));
return Result::createStoredResult(std::move(op), MaintenancePriority::HIGH);
}
@@ -591,7 +591,7 @@ public:
const std::vector<uint16_t>& nodes() const noexcept { return _nodes; }
uint8_t priority() const noexcept { return _priority; }
- std::string reason() const { return _reason.str(); }
+ std::string_view reason() const { return _reason.view(); }
private:
void updatePriority(uint8_t pri) noexcept {
@@ -637,7 +637,7 @@ MergeNodes::~MergeNodes() = default;
void
MergeNodes::operator+=(const MergeNodes& other) {
- _reason << other._reason.str();
+ _reason << other._reason.view();
_problemFlags |= other._problemFlags;
_nodes.reserve(_nodes.size() + other._nodes.size());
_nodes.insert(_nodes.end(), other._nodes.begin(), other._nodes.end());
@@ -940,7 +940,7 @@ DeleteExtraCopiesStateChecker::check(const Context &c) const
auto ro = std::make_unique<RemoveBucketOperation>(c.node_ctx, BucketAndNodes(c.getBucket(), removedCopies));
ro->setPriority(c.distributorConfig.getMaintenancePriorities().deleteBucketCopy);
- ro->setDetailedReason(reasons.str());
+ ro->setDetailedReason(reasons.view());
return Result::createStoredResult(std::move(ro), MaintenancePriority::HIGH);
}
@@ -1052,7 +1052,7 @@ BucketStateStateChecker::check(const Context &c) const
} else {
op->setPriority(c.distributorConfig.getMaintenancePriorities().activateWithExistingActive);
}
- op->setDetailedReason(reason.str());
+ op->setDetailedReason(reason.view());
return Result::createStoredResult(std::move(op), MaintenancePriority::HIGHEST);
}
@@ -1097,7 +1097,7 @@ GarbageCollectionStateChecker::check(const Context &c) const
<< vespalib::to_s(c.distributorConfig.getGarbageCollectionInterval()) << "]";
op->setPriority(c.distributorConfig.getMaintenancePriorities().garbageCollection);
- op->setDetailedReason(reason.c_str());
+ op->setDetailedReason(reason.view());
return Result::createStoredResult(std::move(op), MaintenancePriority::VERY_LOW);
} else {
return Result::noMaintenanceNeeded();
diff --git a/storage/src/vespa/storage/distributor/top_level_bucket_db_updater.cpp b/storage/src/vespa/storage/distributor/top_level_bucket_db_updater.cpp
index 30306784c20..84d54307e6e 100644
--- a/storage/src/vespa/storage/distributor/top_level_bucket_db_updater.cpp
+++ b/storage/src/vespa/storage/distributor/top_level_bucket_db_updater.cpp
@@ -130,7 +130,7 @@ TopLevelBucketDBUpdater::remove_superfluous_buckets(
&& db_pruning_may_be_elided(old_cluster_state, *new_cluster_state, up_states))
{
LOG(debug, "[bucket space '%s']: eliding DB pruning for state transition '%s' -> '%s'",
- document::FixedBucketSpaces::to_string(elem.first).data(),
+ document::FixedBucketSpaces::to_string(elem.first).c_str(),
old_cluster_state.toString().c_str(), new_cluster_state->toString().c_str());
continue;
}
diff --git a/storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.cpp b/storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.cpp
index ab1d80dc0b9..b078fdcf951 100644
--- a/storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.cpp
+++ b/storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.cpp
@@ -41,7 +41,7 @@ StorageComponentRegisterImpl::registerStorageComponent(StorageComponent& smc)
}
void
-StorageComponentRegisterImpl::setNodeInfo(vespalib::stringref clusterName,
+StorageComponentRegisterImpl::setNodeInfo(std::string_view clusterName,
const lib::NodeType& nodeType,
uint16_t index)
{
diff --git a/storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.h b/storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.h
index 271b38399b6..93f0db39f97 100644
--- a/storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.h
+++ b/storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.h
@@ -47,7 +47,7 @@ public:
void registerStorageComponent(StorageComponent&) override;
- void setNodeInfo(vespalib::stringref clusterName, const lib::NodeType& nodeType, uint16_t index);
+ void setNodeInfo(std::string_view clusterName, const lib::NodeType& nodeType, uint16_t index);
virtual void setNodeStateUpdater(NodeStateUpdater& updater);
virtual void setDocumentTypeRepo(std::shared_ptr<const document::DocumentTypeRepo>);
virtual void setBucketIdFactory(const document::BucketIdFactory&);
diff --git a/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.cpp b/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.cpp
index 5e374f12440..f89d6188b88 100644
--- a/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.cpp
+++ b/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.cpp
@@ -183,7 +183,7 @@ StatusWebServer::handlePage(const framework::HttpUrlPath& urlpath, vespalib::Por
vespalib::string link(urlpath.getPath());
// We allow a fixed path prefix that aliases down to whatever is provided after the prefix.
- vespalib::stringref optional_status_path_prefix = "/contentnode-status/v1/";
+ std::string_view optional_status_path_prefix = "/contentnode-status/v1/";
if (link.starts_with(optional_status_path_prefix)) {
link = link.substr(optional_status_path_prefix.size());
}
diff --git a/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.h b/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.h
index e5eeafc53fa..d92bd37ae34 100644
--- a/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.h
+++ b/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.h
@@ -59,7 +59,7 @@ class StatusWebServer : private config::IFetcherCallback<vespa::config::content:
vespalib::string _serverSpec;
std::unique_ptr<vespalib::string> _result;
- HttpRequest(vespalib::stringref url, vespalib::stringref serverSpec)
+ HttpRequest(std::string_view url, std::string_view serverSpec)
: _url(url),
_serverSpec(serverSpec),
_result()
diff --git a/storage/src/vespa/storage/frameworkimpl/thread/deadlockdetector.cpp b/storage/src/vespa/storage/frameworkimpl/thread/deadlockdetector.cpp
index 7b3ab16790c..098dd0429d0 100644
--- a/storage/src/vespa/storage/frameworkimpl/thread/deadlockdetector.cpp
+++ b/storage/src/vespa/storage/frameworkimpl/thread/deadlockdetector.cpp
@@ -165,7 +165,7 @@ namespace {
} else if (state != DeadLockDetector::OK) {
vespalib::asciistream ost;
ost << "Thread " << id << " has registered tick again.";
- LOGBP(info, "%s", ost.str().data());
+ LOGBP(info, "%s", ost.view().data());
state = DeadLockDetector::OK;
}
}
@@ -199,12 +199,12 @@ DeadLockDetector::handleDeadlock(vespalib::steady_time currentTime,
}
if (warnOnly) {
if (warning_enabled) {
- LOGBT(warning, "deadlockw-" + id, "%s", vespalib::string(error.str()).c_str());
+ LOGBT(warning, "deadlockw-" + id, "%s", vespalib::string(error.view()).c_str());
}
return;
} else {
if (shutdown_enabled || warning_enabled) {
- LOGBT(error, "deadlock-" + id, "%s", vespalib::string(error.str()).c_str());
+ LOGBT(error, "deadlock-" + id, "%s", vespalib::string(error.view()).c_str());
}
}
if (shutdown_enabled) {
@@ -315,7 +315,7 @@ DeadLockDetector::reportHtmlStatus(std::ostream& os,
<< "<pre>\n"
<< getBucketLockInfo()
<< "</pre>\n";
- os << out.str();
+ os << out.view();
}
} // storage
diff --git a/storage/src/vespa/storage/persistence/apply_bucket_diff_state.cpp b/storage/src/vespa/storage/persistence/apply_bucket_diff_state.cpp
index f4184a1561c..a90079d40b2 100644
--- a/storage/src/vespa/storage/persistence/apply_bucket_diff_state.cpp
+++ b/storage/src/vespa/storage/persistence/apply_bucket_diff_state.cpp
@@ -88,7 +88,7 @@ ApplyBucketDiffState::on_entry_complete(std::unique_ptr<Result> result, const do
<< " for " << doc_id.toString()
<< " in " << _bucket
<< ": " << result->toString();
- _fail_message = ss.str();
+ _fail_message = ss.view();
}
}
diff --git a/storage/src/vespa/storage/persistence/asynchandler.cpp b/storage/src/vespa/storage/persistence/asynchandler.cpp
index ab176ebb9cb..8ce4fd4d742 100644
--- a/storage/src/vespa/storage/persistence/asynchandler.cpp
+++ b/storage/src/vespa/storage/persistence/asynchandler.cpp
@@ -284,7 +284,7 @@ AsyncHandler::handle_delete_bucket_throttling(api::DeleteBucketCommand& cmd, Mes
for (auto& meta : meta_entries) {
auto token = throttler.blocking_acquire_one();
remove_by_gid_metric->count.inc();
- std::vector<spi::DocTypeGidAndTimestamp> to_remove = {{meta->getDocumentType(), meta->getGid(), meta->getTimestamp()}};
+ std::vector<spi::DocTypeGidAndTimestamp> to_remove = {{vespalib::string(meta->getDocumentType()), meta->getGid(), meta->getTimestamp()}};
auto task = makeResultTask([bucket = cmd.getBucket(), token = std::move(token),
invoke_delete_on_zero_refs, remove_by_gid_metric,
op_timer = framework::MilliSecTimer(_env._component.getClock())]
diff --git a/storage/src/vespa/storage/persistence/bucketprocessor.cpp b/storage/src/vespa/storage/persistence/bucketprocessor.cpp
index 84df361d2e1..8372de107cb 100644
--- a/storage/src/vespa/storage/persistence/bucketprocessor.cpp
+++ b/storage/src/vespa/storage/persistence/bucketprocessor.cpp
@@ -55,7 +55,7 @@ BucketProcessor::iterateAll(spi::PersistenceProvider& provider,
vespalib::asciistream ss;
ss << "Failed to create iterator: "
<< createIterResult.getErrorMessage();
- throw std::runtime_error(ss.str());
+ throw std::runtime_error(std::string(ss.view()));
}
spi::IteratorId iteratorId(createIterResult.getIteratorId());
@@ -66,7 +66,7 @@ BucketProcessor::iterateAll(spi::PersistenceProvider& provider,
if (result.getErrorCode() != spi::Result::ErrorType::NONE) {
vespalib::asciistream ss;
ss << "Failed: " << result.getErrorMessage();
- throw std::runtime_error(ss.str());
+ throw std::runtime_error(std::string(ss.view()));
}
for (auto& entry : result.steal_entries()) {
diff --git a/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp b/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp
index e44490388e2..8e566604d16 100644
--- a/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp
+++ b/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp
@@ -249,7 +249,7 @@ FileStorManager::on_configure(const StorFilestorConfig& config)
void
FileStorManager::replyDroppedOperation(api::StorageMessage& msg, const document::Bucket& bucket,
- api::ReturnCode::Result returnCode, vespalib::stringref reason)
+ api::ReturnCode::Result returnCode, std::string_view reason)
{
std::ostringstream error;
error << "Dropping " << msg.getType() << " to bucket "
@@ -520,10 +520,10 @@ FileStorManager::onDeleteBucket(const shared_ptr<api::DeleteBucketCommand>& cmd)
<< ", but storage bucket database contains "
<< entry->getBucketInfo().toString();
- LOG(debug, "Rejecting bucket delete: %s", ost.str().data());
+ LOG(debug, "Rejecting bucket delete: %s", ost.view().data());
std::shared_ptr<api::StorageReply> reply = cmd->makeReply();
static_cast<api::DeleteBucketReply&>(*reply).setBucketInfo(entry->getBucketInfo());
- reply->setResult(api::ReturnCode(api::ReturnCode::REJECTED, ost.str()));
+ reply->setResult(api::ReturnCode(api::ReturnCode::REJECTED, ost.view()));
entry.unlock();
sendUp(reply);
return true;
@@ -941,8 +941,8 @@ FileStorManager::updateState()
}
contentBucketSpace.setNodeUpInLastNodeStateSeenByProvider(node_up_in_space);
contentBucketSpace.setNodeMaintenanceInLastNodeStateSeenByProvider(in_maintenance);
- spi::ClusterState spiState(state_and_distr->cluster_state(), _component.getIndex(),
- state_and_distr->distribution(), in_maintenance);
+ spi::ClusterState spiState(state_and_distr->cluster_state_sp(), state_and_distr->distribution_sp(),
+ _component.getIndex(), in_maintenance);
_provider->setClusterState(bucketSpace, spiState);
}
}
diff --git a/storage/src/vespa/storage/persistence/filestorage/filestormanager.h b/storage/src/vespa/storage/persistence/filestorage/filestormanager.h
index e68f8bfe27b..91ff22680da 100644
--- a/storage/src/vespa/storage/persistence/filestorage/filestormanager.h
+++ b/storage/src/vespa/storage/persistence/filestorage/filestormanager.h
@@ -125,7 +125,7 @@ private:
void replyDroppedOperation(api::StorageMessage& msg,
const document::Bucket& bucket,
api::ReturnCode::Result returnCode,
- vespalib::stringref reason);
+ std::string_view reason);
StorBucketDatabase::WrappedEntry ensureConsistentBucket(
const document::Bucket& bucket,
diff --git a/storage/src/vespa/storage/persistence/mergehandler.cpp b/storage/src/vespa/storage/persistence/mergehandler.cpp
index b3207428f5f..0b365d13540 100644
--- a/storage/src/vespa/storage/persistence/mergehandler.cpp
+++ b/storage/src/vespa/storage/persistence/mergehandler.cpp
@@ -655,7 +655,7 @@ MergeHandler::enumerate_newest_document_versions(const std::vector<api::ApplyBuc
if (e._docName.empty()) {
continue;
}
- auto [existing_iter, inserted] = newest_per_doc.insert(std::make_pair(vespalib::stringref(e._docName), e._entry._timestamp));
+ auto [existing_iter, inserted] = newest_per_doc.insert(std::make_pair(std::string_view(e._docName), e._entry._timestamp));
if (!inserted) {
assert(existing_iter != newest_per_doc.end());
existing_iter->second = std::max(existing_iter->second, e._entry._timestamp);
diff --git a/storage/src/vespa/storage/persistence/mergehandler.h b/storage/src/vespa/storage/persistence/mergehandler.h
index 2be45e7bc8b..9afb3d4e4d4 100644
--- a/storage/src/vespa/storage/persistence/mergehandler.h
+++ b/storage/src/vespa/storage/persistence/mergehandler.h
@@ -43,7 +43,7 @@ private:
using MessageTrackerUP = std::unique_ptr<MessageTracker>;
using Timestamp = framework::MicroSecTime;
public:
- using NewestDocumentVersionMapping = vespalib::hash_map<vespalib::stringref, api::Timestamp>;
+ using NewestDocumentVersionMapping = vespalib::hash_map<std::string_view, api::Timestamp>;
enum StateFlag {
IN_USE = 0x01,
diff --git a/storage/src/vespa/storage/persistence/persistenceutil.h b/storage/src/vespa/storage/persistence/persistenceutil.h
index 67e96befe00..f311b3927d6 100644
--- a/storage/src/vespa/storage/persistence/persistenceutil.h
+++ b/storage/src/vespa/storage/persistence/persistenceutil.h
@@ -88,7 +88,7 @@ public:
}
/** Utility function to be able to write a bit less in client. */
- void fail(uint32_t result, const vespalib::string & message = "") {
+ void fail(uint32_t result, std::string_view message = "") {
fail(api::ReturnCode((api::ReturnCode::Result)result, message));
}
/** Set the request to fail with the given failure. */
diff --git a/storage/src/vespa/storage/persistence/provider_error_wrapper.cpp b/storage/src/vespa/storage/persistence/provider_error_wrapper.cpp
index 9a414cd295a..50dc3045acb 100644
--- a/storage/src/vespa/storage/persistence/provider_error_wrapper.cpp
+++ b/storage/src/vespa/storage/persistence/provider_error_wrapper.cpp
@@ -29,14 +29,14 @@ ProviderErrorWrapper::handle(const spi::Result & result) const {
}
}
-void ProviderErrorWrapper::trigger_shutdown_listeners(vespalib::stringref reason) const {
+void ProviderErrorWrapper::trigger_shutdown_listeners(std::string_view reason) const {
std::lock_guard<std::mutex> guard(_mutex);
for (auto& listener : _listeners) {
listener->on_fatal_error(reason);
}
}
-void ProviderErrorWrapper::trigger_resource_exhaustion_listeners(vespalib::stringref reason) const {
+void ProviderErrorWrapper::trigger_resource_exhaustion_listeners(std::string_view reason) const {
std::lock_guard<std::mutex> guard(_mutex);
for (auto& listener : _listeners) {
listener->on_resource_exhaustion_error(reason);
diff --git a/storage/src/vespa/storage/persistence/provider_error_wrapper.h b/storage/src/vespa/storage/persistence/provider_error_wrapper.h
index 7c4518d1db1..d614f593902 100644
--- a/storage/src/vespa/storage/persistence/provider_error_wrapper.h
+++ b/storage/src/vespa/storage/persistence/provider_error_wrapper.h
@@ -23,10 +23,10 @@ class ServiceLayerComponent;
class ProviderErrorListener {
public:
virtual ~ProviderErrorListener() = default;
- virtual void on_fatal_error(vespalib::stringref message) {
+ virtual void on_fatal_error(std::string_view message) {
(void)message;
}
- virtual void on_resource_exhaustion_error(vespalib::stringref message) {
+ virtual void on_resource_exhaustion_error(std::string_view message) {
(void)message;
}
};
@@ -69,8 +69,8 @@ private:
ResultType checkResult(ResultType&& result) const;
void handle(const spi::Result &) const override;
- void trigger_shutdown_listeners(vespalib::stringref reason) const;
- void trigger_resource_exhaustion_listeners(vespalib::stringref reason) const;
+ void trigger_shutdown_listeners(std::string_view reason) const;
+ void trigger_resource_exhaustion_listeners(std::string_view reason) const;
spi::PersistenceProvider& _impl;
std::vector<std::shared_ptr<ProviderErrorListener>> _listeners;
diff --git a/storage/src/vespa/storage/persistence/simplemessagehandler.cpp b/storage/src/vespa/storage/persistence/simplemessagehandler.cpp
index 27304e5d763..c92e165f22b 100644
--- a/storage/src/vespa/storage/persistence/simplemessagehandler.cpp
+++ b/storage/src/vespa/storage/persistence/simplemessagehandler.cpp
@@ -32,7 +32,7 @@ api_read_consistency_to_spi(api::InternalReadConsistency consistency) noexcept {
}
document::FieldSet::SP
-getFieldSet(const document::FieldSetRepo & repo, vespalib::stringref name, MessageTracker & tracker) {
+getFieldSet(const document::FieldSetRepo & repo, std::string_view name, MessageTracker & tracker) {
try {
return repo.getFieldSet(name);
} catch (document::FieldNotFoundException & e) {
diff --git a/storage/src/vespa/storage/persistence/splitbitdetector.h b/storage/src/vespa/storage/persistence/splitbitdetector.h
index 12af51291de..994b808fb9d 100644
--- a/storage/src/vespa/storage/persistence/splitbitdetector.h
+++ b/storage/src/vespa/storage/persistence/splitbitdetector.h
@@ -42,7 +42,7 @@ struct SplitBitDetector
public:
Result() : _result(EMPTY), _singleTarget(false) {}
- Result(vespalib::stringref error)
+ Result(std::string_view error)
: _result(ERROR), _reason(error), _singleTarget(false) {}
Result(const document::BucketId& t1, const document::BucketId& t2,
bool single)
diff --git a/storage/src/vespa/storage/persistence/testandsethelper.h b/storage/src/vespa/storage/persistence/testandsethelper.h
index f586f720e23..21ec7afc805 100644
--- a/storage/src/vespa/storage/persistence/testandsethelper.h
+++ b/storage/src/vespa/storage/persistence/testandsethelper.h
@@ -27,8 +27,8 @@ class TestAndSetException : public std::runtime_error {
api::ReturnCode _code;
public:
explicit TestAndSetException(api::ReturnCode code)
- : std::runtime_error(code.getMessage()),
- _code(std::move(code))
+ : std::runtime_error(std::string(code.getMessage())),
+ _code(std::move(code))
{}
const api::ReturnCode & getCode() const { return _code; }
diff --git a/storage/src/vespa/storage/storageserver/communicationmanager.cpp b/storage/src/vespa/storage/storageserver/communicationmanager.cpp
index 1b119a0e631..c6844f84d57 100644
--- a/storage/src/vespa/storage/storageserver/communicationmanager.cpp
+++ b/storage/src/vespa/storage/storageserver/communicationmanager.cpp
@@ -597,7 +597,7 @@ CommunicationManager::serializeNodeState(const api::GetNodeStateReply& gns, std:
} else {
_component.getStateUpdater().getReportedNodeState()->serialize(tmp, "", includeDescription);
}
- os << tmp.str();
+ os << tmp.view();
}
void
@@ -626,7 +626,7 @@ CommunicationManager::sendDirectRPCReply(RPCRequestWrapper& request,
// due to a higher version having been previously received.
auto& state_reply = dynamic_cast<api::SetSystemStateReply&>(*reply);
if (state_reply.getResult().getResult() == api::ReturnCode::REJECTED) {
- vespalib::string err_msg = state_reply.getResult().getMessage(); // ReturnCode message is stringref
+ vespalib::string err_msg(state_reply.getResult().getMessage()); // ReturnCode message is string_view
request.returnError(FRTE_RPC_METHOD_FAILED, err_msg.c_str());
return;
}
@@ -637,7 +637,7 @@ CommunicationManager::sendDirectRPCReply(RPCRequestWrapper& request,
activate_reply.activateVersion(), activate_reply.actualVersion());
} else {
request.addReturnInt(reply->getResult().getResult());
- vespalib::stringref m = reply->getResult().getMessage();
+ std::string_view m = reply->getResult().getMessage();
request.addReturnString(m.data(), m.size());
if (reply->getType() == api::MessageType::GETNODESTATE_REPLY) {
@@ -664,7 +664,7 @@ CommunicationManager::sendMessageBusReply(StorageTransportContext& context,
// Create an MBus reply and transfer state to it.
if (reply->getResult().getResult() == api::ReturnCode::WRONG_DISTRIBUTION) {
- replyUP = std::make_unique<documentapi::WrongDistributionReply>(reply->getResult().getMessage());
+ replyUP = std::make_unique<documentapi::WrongDistributionReply>(vespalib::string(reply->getResult().getMessage()));
replyUP->swapState(*context._docAPIMsg);
replyUP->setTrace(reply->steal_trace());
replyUP->addError(mbus::Error(documentapi::DocumentProtocol::ERROR_WRONG_DISTRIBUTION,
diff --git a/storage/src/vespa/storage/storageserver/configurable_bucket_resolver.cpp b/storage/src/vespa/storage/storageserver/configurable_bucket_resolver.cpp
index d839bc4d874..55e69109ba4 100644
--- a/storage/src/vespa/storage/storageserver/configurable_bucket_resolver.cpp
+++ b/storage/src/vespa/storage/storageserver/configurable_bucket_resolver.cpp
@@ -1,9 +1,10 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include "configurable_bucket_resolver.h"
#include <vespa/document/base/documentid.h>
#include <vespa/document/bucket/fixed_bucket_spaces.h>
#include <vespa/vespalib/util/exceptions.h>
-#include "configurable_bucket_resolver.h"
+#include <vespa/vespalib/stllike/hash_map.hpp>
using namespace document;
@@ -14,14 +15,15 @@ ConfigurableBucketResolver::ConfigurableBucketResolver(BucketSpaceMapping type_t
{}
ConfigurableBucketResolver::~ConfigurableBucketResolver() = default;
-document::Bucket ConfigurableBucketResolver::bucketFromId(const DocumentId& id) const {
+document::Bucket
+ConfigurableBucketResolver::bucketFromId(const DocumentId& id) const {
if (!id.hasDocType()) {
// Legacy document ids without document type maps to default bucket space
- return Bucket(FixedBucketSpaces::default_space(), BucketId(0));
+ return {FixedBucketSpaces::default_space(), BucketId(0)};
}
auto iter = _type_to_space.find(id.getDocType());
if (iter != _type_to_space.end()) {
- return Bucket(iter->second, BucketId(0));
+ return {iter->second, BucketId(0)};
}
throw UnknownBucketSpaceException("Unknown bucket space mapping for document type '"
+ id.getDocType() + "' in id: '" + id.toString() + "'", VESPA_STRLOC);
@@ -39,9 +41,11 @@ std::shared_ptr<ConfigurableBucketResolver> ConfigurableBucketResolver::from_con
const vespa::config::content::core::BucketspacesConfig& config) {
ConfigurableBucketResolver::BucketSpaceMapping type_to_space;
for (auto& mapping : config.documenttype) {
- type_to_space.emplace(mapping.name, FixedBucketSpaces::from_string(mapping.bucketspace));
+ type_to_space.insert(std::make_pair(mapping.name, FixedBucketSpaces::from_string(mapping.bucketspace)));
}
return std::make_shared<ConfigurableBucketResolver>(std::move(type_to_space));
}
}
+
+VESPALIB_HASH_MAP_INSTANTIATE(vespalib::string, document::BucketSpace);
diff --git a/storage/src/vespa/storage/storageserver/configurable_bucket_resolver.h b/storage/src/vespa/storage/storageserver/configurable_bucket_resolver.h
index 8ef952c305b..e1249900fc3 100644
--- a/storage/src/vespa/storage/storageserver/configurable_bucket_resolver.h
+++ b/storage/src/vespa/storage/storageserver/configurable_bucket_resolver.h
@@ -4,8 +4,8 @@
#include <vespa/config-bucketspaces.h>
#include <vespa/storage/common/bucket_resolver.h>
#include <vespa/vespalib/stllike/hash_fun.h>
+#include <vespa/vespalib/stllike/hash_map.h>
#include <memory>
-#include <unordered_map>
namespace storage {
@@ -18,7 +18,7 @@ namespace storage {
*/
class ConfigurableBucketResolver : public BucketResolver {
public:
- using BucketSpaceMapping = std::unordered_map<vespalib::string, document::BucketSpace, vespalib::hash<vespalib::string>>;
+ using BucketSpaceMapping = vespalib::hash_map<vespalib::string, document::BucketSpace>;
const BucketSpaceMapping _type_to_space;
public:
explicit ConfigurableBucketResolver(BucketSpaceMapping type_to_space) noexcept;
diff --git a/storage/src/vespa/storage/storageserver/documentapiconverter.cpp b/storage/src/vespa/storage/storageserver/documentapiconverter.cpp
index 5b8052a05f8..cabfc103665 100644
--- a/storage/src/vespa/storage/storageserver/documentapiconverter.cpp
+++ b/storage/src/vespa/storage/storageserver/documentapiconverter.cpp
@@ -242,7 +242,7 @@ DocumentApiConverter::toDocumentAPI(api::StorageCommand& fromMsg)
for (uint32_t i = 0; i < from.getCompletedBucketsList().size(); ++i) {
to->getFinishedBuckets().push_back(from.getCompletedBucketsList()[i].bucketId);
}
- to->setErrorMessage(from.getErrorCode().getMessage());
+ to->setErrorMessage(vespalib::string(from.getErrorCode().getMessage()));
toMsg = std::move(to);
break;
}
diff --git a/storage/src/vespa/storage/storageserver/mergethrottler.cpp b/storage/src/vespa/storage/storageserver/mergethrottler.cpp
index c14bc6dc5eb..52593a9b0fa 100644
--- a/storage/src/vespa/storage/storageserver/mergethrottler.cpp
+++ b/storage/src/vespa/storage/storageserver/mergethrottler.cpp
@@ -475,7 +475,7 @@ MergeThrottler::rejectMergeIfOutdated(
<< ", storage node has version "
<< rejectLessThanVersion;
sendReply(cmd,
- api::ReturnCode(api::ReturnCode::WRONG_DISTRIBUTION, oss.str()),
+ api::ReturnCode(api::ReturnCode::WRONG_DISTRIBUTION, oss.view()),
msgGuard, _metrics->chaining);
LOG(debug, "Immediately rejected %s, due to it having state version < %u",
cmd.toString().c_str(), rejectLessThanVersion);
@@ -582,7 +582,7 @@ MergeThrottler::attemptProcessNextQueuedMerge(MessageGuard& msgGuard)
"been started by someone else since it was queued";
LOG(debug, "%s", oss.c_str());
sendReply(dynamic_cast<const api::MergeBucketCommand&>(*msg),
- api::ReturnCode(api::ReturnCode::BUSY, oss.str()),
+ api::ReturnCode(api::ReturnCode::BUSY, oss.view()),
msgGuard, _metrics->chaining);
}
return true;
@@ -852,7 +852,7 @@ MergeThrottler::validateNewMerge(
oss << mergeCmd.toString() << " sent to node "
<< _component.getIndex()
<< ", which is not in its forwarding chain";
- LOG(error, "%s", oss.str().data());
+ LOG(error, "%s", oss.view().data());
} else if (mergeCmd.getChain().size() >= nodeSeq.unordered_nodes().size()) {
// Chain is full but we haven't seen the merge! This means
// the node has probably gone down with a merge it previously
@@ -860,19 +860,19 @@ MergeThrottler::validateNewMerge(
oss << mergeCmd.toString()
<< " is not in node's internal state, but has a "
<< "full chain, meaning it cannot be forwarded.";
- LOG(debug, "%s", oss.str().data());
+ LOG(debug, "%s", oss.view().data());
} else if (nodeSeq.chain_contains_this_node()) {
oss << mergeCmd.toString()
<< " is not in node's internal state, but contains "
<< "this node in its non-full chain. This should not happen!";
- LOG(error, "%s", oss.str().data());
+ LOG(error, "%s", oss.view().data());
} else {
valid = true;
}
if (!valid) {
sendReply(mergeCmd,
- api::ReturnCode(api::ReturnCode::REJECTED, oss.str()),
+ api::ReturnCode(api::ReturnCode::REJECTED, oss.view()),
msgGuard,
_metrics->local);
}
@@ -1184,10 +1184,10 @@ MergeThrottler::bucketIsUnknownOrAborted(const document::Bucket& bucket) const
std::shared_ptr<api::StorageMessage>
MergeThrottler::makeAbortReply(api::StorageCommand& cmd,
- vespalib::stringref reason) const
+ std::string_view reason) const
{
LOG(debug, "Aborting message %s with reason '%s'",
- cmd.toString().c_str(), reason.data());
+ cmd.toString().c_str(), std::string(reason).c_str());
std::unique_ptr<api::StorageReply> reply(cmd.makeReply());
reply->setResult(api::ReturnCode(api::ReturnCode::ABORTED, reason));
return std::shared_ptr<api::StorageMessage>(reply.release());
diff --git a/storage/src/vespa/storage/storageserver/mergethrottler.h b/storage/src/vespa/storage/storageserver/mergethrottler.h
index 1e791136476..1579d486f82 100644
--- a/storage/src/vespa/storage/storageserver/mergethrottler.h
+++ b/storage/src/vespa/storage/storageserver/mergethrottler.h
@@ -405,7 +405,7 @@ private:
std::shared_ptr<api::StorageMessage> makeAbortReply(
api::StorageCommand& cmd,
- vespalib::stringref reason) const;
+ std::string_view reason) const;
void handleOutdatedMerges(const api::SetSystemStateCommand&);
void rejectOperationsInThreadQueue(MessageGuard&, uint32_t minimumStateVersion);
diff --git a/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp b/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp
index eb933f5eb2c..166b0377025 100644
--- a/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp
+++ b/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp
@@ -84,7 +84,7 @@ SharedRpcResources::~SharedRpcResources() {
}
}
-void SharedRpcResources::start_server_and_register_slobrok(vespalib::stringref my_handle) {
+void SharedRpcResources::start_server_and_register_slobrok(std::string_view my_handle) {
LOG(debug, "Starting main RPC supervisor on port %d with slobrok handle '%s'",
_rpc_server_port, vespalib::string(my_handle).c_str());
if (!_orb->Listen(_rpc_server_port)) {
diff --git a/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.h b/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.h
index d8f7eefad53..a99a93abd68 100644
--- a/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.h
+++ b/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.h
@@ -40,7 +40,7 @@ public:
slobrok::api::MirrorAPI& slobrok_mirror() noexcept { return *_slobrok_mirror; }
const slobrok::api::MirrorAPI& slobrok_mirror() const noexcept { return *_slobrok_mirror; }
// To be called after all RPC handlers have been registered.
- void start_server_and_register_slobrok(vespalib::stringref my_handle);
+ void start_server_and_register_slobrok(std::string_view my_handle);
void sync_all_threads();
diff --git a/storage/src/vespa/storage/storageserver/rpc/slime_cluster_state_bundle_codec.cpp b/storage/src/vespa/storage/storageserver/rpc/slime_cluster_state_bundle_codec.cpp
index f143066ac34..dda58d808fe 100644
--- a/storage/src/vespa/storage/storageserver/rpc/slime_cluster_state_bundle_codec.cpp
+++ b/storage/src/vespa/storage/storageserver/rpc/slime_cluster_state_bundle_codec.cpp
@@ -194,7 +194,7 @@ struct StateInserter : vespalib::slime::ObjectTraverser {
: _space_states(space_states) {}
void field(const Memory& symbol, const Inspector& inspector) override {
- _space_states.emplace(FixedBucketSpaces::from_string(symbol.make_stringref()),
+ _space_states.emplace(FixedBucketSpaces::from_string(symbol.make_stringview()),
std::make_shared<const lib::ClusterState>(inspector.asString().make_string()));
}
};
diff --git a/storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.cpp b/storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.cpp
index f8b4f9ef42d..4a6fa058c56 100644
--- a/storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.cpp
+++ b/storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.cpp
@@ -228,7 +228,7 @@ void StorageApiRpcService::send_rpc_v1_request(std::shared_ptr<api::StorageComma
auto reply = cmd->makeReply();
reply->setResult(make_no_address_for_service_error(*cmd->getAddress()));
if (reply->getTrace().shouldTrace(TraceLevel::ERROR)) {
- reply->getTrace().trace(TraceLevel::ERROR, reply->getResult().getMessage());
+ reply->getTrace().trace(TraceLevel::ERROR, vespalib::string(reply->getResult().getMessage()));
}
// Always dispatch async for synchronously generated replies, or we risk nuking the
// stack if the reply receiver keeps resending synchronously as well.
@@ -323,7 +323,7 @@ void StorageApiRpcService::handle_request_done_rpc_error(FRT_RPCRequest& req,
}
void StorageApiRpcService::handle_request_done_decode_error(const RpcRequestContext& req_ctx,
- vespalib::stringref description) {
+ std::string_view description) {
auto& cmd = *req_ctx._originator_cmd;
assert(cmd.has_transport_context()); // Otherwise, reply already (destructively) generated by codec
create_and_dispatch_error_reply(cmd, api::ReturnCode(
@@ -336,7 +336,7 @@ void StorageApiRpcService::create_and_dispatch_error_reply(api::StorageCommand&
cmd.getAddress()->toString().c_str(), error.toString().c_str());
error_reply->getTrace().swap(cmd.getTrace());
if (error_reply->getTrace().shouldTrace(TraceLevel::ERROR)) {
- error_reply->getTrace().trace(TraceLevel::ERROR, error.getMessage());
+ error_reply->getTrace().trace(TraceLevel::ERROR, vespalib::string(error.getMessage()));
}
error_reply->setResult(std::move(error));
_message_dispatcher.dispatch_sync(std::move(error_reply));
diff --git a/storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.h b/storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.h
index 49165b36314..cfab705928f 100644
--- a/storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.h
+++ b/storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.h
@@ -84,7 +84,7 @@ private:
void handle_request_done_rpc_error(FRT_RPCRequest& req, const RpcRequestContext& req_ctx);
void handle_request_done_decode_error(const RpcRequestContext& req_ctx,
- vespalib::stringref description);
+ std::string_view description);
void create_and_dispatch_error_reply(api::StorageCommand& cmd, api::ReturnCode error);
api::ReturnCode map_frt_error_to_storage_api_error(FRT_RPCRequest& req, const RpcRequestContext& req_ctx);
diff --git a/storage/src/vespa/storage/storageserver/service_layer_error_listener.cpp b/storage/src/vespa/storage/storageserver/service_layer_error_listener.cpp
index 3cd8c212dc1..484e70267af 100644
--- a/storage/src/vespa/storage/storageserver/service_layer_error_listener.cpp
+++ b/storage/src/vespa/storage/storageserver/service_layer_error_listener.cpp
@@ -9,7 +9,7 @@ LOG_SETUP(".node.errorlistener");
namespace storage {
-void ServiceLayerErrorListener::on_fatal_error(vespalib::stringref message) {
+void ServiceLayerErrorListener::on_fatal_error(std::string_view message) {
bool expected = false;
if (_shutdown_initiated.compare_exchange_strong(expected, true)) {
LOG(info,
@@ -26,7 +26,7 @@ void ServiceLayerErrorListener::on_fatal_error(vespalib::stringref message) {
}
}
-void ServiceLayerErrorListener::on_resource_exhaustion_error(vespalib::stringref message) {
+void ServiceLayerErrorListener::on_resource_exhaustion_error(std::string_view message) {
LOG(debug, "SPI reports resource exhaustion ('%s'). "
"Applying back-pressure to merge throttler",
vespalib::string(message).c_str());
diff --git a/storage/src/vespa/storage/storageserver/service_layer_error_listener.h b/storage/src/vespa/storage/storageserver/service_layer_error_listener.h
index ae90ad8f711..08633ed25a6 100644
--- a/storage/src/vespa/storage/storageserver/service_layer_error_listener.h
+++ b/storage/src/vespa/storage/storageserver/service_layer_error_listener.h
@@ -29,8 +29,8 @@ public:
_shutdown_initiated(false)
{}
- void on_fatal_error(vespalib::stringref message) override;
- void on_resource_exhaustion_error(vespalib::stringref message) override;
+ void on_fatal_error(std::string_view message) override;
+ void on_resource_exhaustion_error(std::string_view message) override;
};
}
diff --git a/storage/src/vespa/storage/storageserver/statemanager.cpp b/storage/src/vespa/storage/storageserver/statemanager.cpp
index 560982fb6c0..6e476caa909 100644
--- a/storage/src/vespa/storage/storageserver/statemanager.cpp
+++ b/storage/src/vespa/storage/storageserver/statemanager.cpp
@@ -160,7 +160,7 @@ StateManager::reportHtmlStatus(std::ostream& out,
<< "<th>Received at time</th><th>State</th></tr>\n";
for (const auto & it : std::ranges::reverse_view(_systemStateHistory)) {
out << "<tr><td>" << vespalib::to_string(vespalib::to_utc(it.first)) << "</td><td>"
- << xml_content_escaped(it.second->getBaselineClusterState()->toString()) << "</td></tr>\n";
+ << xml_content_escaped(it.second->toString()) << "</td></tr>\n";
}
out << "</table>\n";
}
@@ -692,7 +692,7 @@ StateManager::getNodeInfo() const
stream << End();
stream.finalize();
- return json.str();
+ return std::string(json.view());
}
void
diff --git a/storage/src/vespa/storage/storageserver/storagenode.cpp b/storage/src/vespa/storage/storageserver/storagenode.cpp
index 5b665f830d3..be527928129 100644
--- a/storage/src/vespa/storage/storageserver/storagenode.cpp
+++ b/storage/src/vespa/storage/storageserver/storagenode.cpp
@@ -498,7 +498,7 @@ StorageNode::waitUntilInitialized(vespalib::duration timeout) {
}
void
-StorageNode::requestShutdown(vespalib::stringref reason)
+StorageNode::requestShutdown(std::string_view reason)
{
bool was_stopped = false;
const bool stop_now = _attemptedStopped.compare_exchange_strong(was_stopped, true,
diff --git a/storage/src/vespa/storage/storageserver/storagenode.h b/storage/src/vespa/storage/storageserver/storagenode.h
index 93265bece3c..da57b4c671f 100644
--- a/storage/src/vespa/storage/storageserver/storagenode.h
+++ b/storage/src/vespa/storage/storageserver/storagenode.h
@@ -100,7 +100,7 @@ public:
* is alive, no calls will be made towards the persistence provider.
*/
virtual ResumeGuard pause() = 0;
- void requestShutdown(vespalib::stringref reason) override;
+ void requestShutdown(std::string_view reason) override;
DoneInitializeHandler& getDoneInitializeHandler() { return *this; }
void configure(std::unique_ptr<StorServerConfig> config);
diff --git a/storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.cpp b/storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.cpp
index a1e63f02ac7..7a9bfe860b6 100644
--- a/storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.cpp
+++ b/storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.cpp
@@ -4,8 +4,8 @@
namespace storage {
-TlsStatisticsMetricsWrapper::EndpointMetrics::EndpointMetrics(vespalib::stringref type, metrics::MetricSet* owner)
- : metrics::MetricSet(type, {}, "Endpoint type metrics", owner),
+TlsStatisticsMetricsWrapper::EndpointMetrics::EndpointMetrics(std::string_view type, metrics::MetricSet* owner)
+ : metrics::MetricSet(vespalib::string(type), {}, "Endpoint type metrics", owner),
tls_connections_established("tls-connections-established", {},
"Number of secure mTLS connections established", this),
insecure_connections_established("insecure-connections-established", {},
diff --git a/storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.h b/storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.h
index 8aa28e959df..299fa2eacaa 100644
--- a/storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.h
+++ b/storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.h
@@ -14,7 +14,7 @@ namespace storage {
// periodic metric snapshotting.
class TlsStatisticsMetricsWrapper : public metrics::MetricSet {
struct EndpointMetrics : metrics::MetricSet {
- EndpointMetrics(vespalib::stringref type, metrics::MetricSet* owner);
+ EndpointMetrics(std::string_view type, metrics::MetricSet* owner);
~EndpointMetrics() override;
metrics::LongCountMetric tls_connections_established;
diff --git a/storage/src/vespa/storage/visiting/countvisitor.cpp b/storage/src/vespa/storage/visiting/countvisitor.cpp
index fe1569f84da..6637e7392bd 100644
--- a/storage/src/vespa/storage/visiting/countvisitor.cpp
+++ b/storage/src/vespa/storage/visiting/countvisitor.cpp
@@ -35,7 +35,7 @@ CountVisitor::handleDocuments(const document::BucketId& /*bucketId*/,
hitCounter.addHit(doc->getId(), 0);
if (_doNamespace) {
- _namespaceCount[idString.getNamespace()]++;
+ _namespaceCount[vespalib::string(idString.getNamespace())]++;
}
if (_doUser && idString.hasNumber()) {
@@ -43,7 +43,7 @@ CountVisitor::handleDocuments(const document::BucketId& /*bucketId*/,
}
if (_doGroup && idString.hasGroup()) {
- _groupCount[idString.getGroup()]++;
+ _groupCount[vespalib::string(idString.getGroup())]++;
}
if (_doScheme) {
diff --git a/storage/src/vespa/storage/visiting/recoveryvisitor.cpp b/storage/src/vespa/storage/visiting/recoveryvisitor.cpp
index 27f49f5e7ec..7bd9579d48a 100644
--- a/storage/src/vespa/storage/visiting/recoveryvisitor.cpp
+++ b/storage/src/vespa/storage/visiting/recoveryvisitor.cpp
@@ -6,6 +6,7 @@
#include <vespa/documentapi/messagebus/messages/visitor.h>
#include <vespa/document/fieldvalue/document.h>
#include <vespa/vespalib/text/stringtokenizer.h>
+#include <utility>
#include <vespa/vespalib/stllike/hash_map.hpp>
#include <vespa/log/log.h>
@@ -18,11 +19,11 @@ RecoveryVisitor::RecoveryVisitor(StorageComponent& component,
: Visitor(component)
{
if (params.hasValue("requestfields")) {
- std::string fields = params.get("requestfields");
+ std::string_view fields = params.get("requestfields");
vespalib::StringTokenizer tokenizer(fields);
- for (uint32_t i = 0; i < tokenizer.size(); i++) {
- _requestedFields.insert(tokenizer[i]);
+ for (auto field : tokenizer) {
+ _requestedFields.emplace(field);
}
}
@@ -42,7 +43,7 @@ RecoveryVisitor::handleDocuments(const document::BucketId& bid,
documentapi::DocumentListMessage* cmd = nullptr;
{
- CommandMap::iterator iter = _activeCommands.find(bid);
+ auto iter = _activeCommands.find(bid);
if (iter == _activeCommands.end()) {
CommandPtr ptr(new documentapi::DocumentListMessage(bid));
@@ -54,9 +55,9 @@ RecoveryVisitor::handleDocuments(const document::BucketId& bid,
}
// Remove all fields from the document that are not listed in requestedFields.
- for (size_t i = 0; i < entries.size(); ++i) {
- const spi::DocEntry& entry(*entries[i]);
- std::unique_ptr<document::Document> doc(entry.getDocument()->clone());
+ for (const auto & entrie : entries) {
+ const spi::DocEntry& entry(*entrie);
+ std::shared_ptr<document::Document> doc(entry.getDocument()->clone());
if (_requestedFields.empty()) {
doc->clear();
} else {
@@ -74,10 +75,7 @@ RecoveryVisitor::handleDocuments(const document::BucketId& bid,
hitCounter.addHit(doc->getId(), doc->serialize().size());
int64_t timestamp = doc->getLastModified();
- cmd->getDocuments().push_back(documentapi::DocumentListMessage::Entry(
- timestamp,
- document::Document::SP(doc.release()),
- entry.isRemove()));
+ cmd->getDocuments().emplace_back(timestamp, std::move(doc), entry.isRemove());
}
}
@@ -90,15 +88,15 @@ void RecoveryVisitor::completedBucket(const document::BucketId& bid, HitCounter&
{
std::lock_guard guard(_mutex);
- CommandMap::iterator iter = _activeCommands.find(bid);
+ auto iter = _activeCommands.find(bid);
if (iter != _activeCommands.end()) {
- _msgToSend.reset(iter->second.release());
+ _msgToSend = std::move(iter->second);
_activeCommands.erase(iter);
}
}
- if (_msgToSend.get()) {
+ if (_msgToSend) {
sendMessage(std::move(_msgToSend));
}
}
diff --git a/storage/src/vespa/storage/visiting/reindexing_visitor.cpp b/storage/src/vespa/storage/visiting/reindexing_visitor.cpp
index 5b095ef6af0..c9bde68be3f 100644
--- a/storage/src/vespa/storage/visiting/reindexing_visitor.cpp
+++ b/storage/src/vespa/storage/visiting/reindexing_visitor.cpp
@@ -47,9 +47,9 @@ bool ReindexingVisitor::remap_docapi_message_error_code(api::ReturnCode& in_out_
vespalib::string ReindexingVisitor::make_lock_access_token() const {
vespalib::string prefix = reindexing_bucket_lock_bypass_prefix();
- vespalib::stringref passed_token = visitor_parameters().get(
+ std::string_view passed_token = visitor_parameters().get(
reindexing_bucket_lock_visitor_parameter_key(),
- vespalib::stringref(""));
+ std::string_view(""));
if (passed_token.empty()) {
return prefix;
}
diff --git a/storage/src/vespa/storage/visiting/visitor.cpp b/storage/src/vespa/storage/visiting/visitor.cpp
index ceb356a982c..f9845007159 100644
--- a/storage/src/vespa/storage/visiting/visitor.cpp
+++ b/storage/src/vespa/storage/visiting/visitor.cpp
@@ -458,7 +458,7 @@ Visitor::reportProblem(const api::ReturnCode& problemCode)
os << "[From content node " << _ownNodeIndex << "] ";
os << api::ReturnCode::getResultString(problemCode.getResult())
<< ": " << problemCode.getMessage();
- reportProblem(os.str());
+ reportProblem(std::string(os.view()));
}
void
diff --git a/storage/src/vespa/storage/visiting/visitormetrics.cpp b/storage/src/vespa/storage/visiting/visitormetrics.cpp
index 23c4765c3be..bb296840c93 100644
--- a/storage/src/vespa/storage/visiting/visitormetrics.cpp
+++ b/storage/src/vespa/storage/visiting/visitormetrics.cpp
@@ -2,7 +2,7 @@
#include "visitormetrics.h"
#include <vespa/vespalib/util/exceptions.h>
-#include <vespa/vespalib/stllike/asciistream.h>
+#include <sstream>
namespace storage {
@@ -41,7 +41,7 @@ VisitorMetrics::initThreads(uint16_t threadCount) {
threads.clear();
threads.resize(threadCount);
for (uint32_t i=0; i<threads.size(); ++i) {
- vespalib::asciistream ost;
+ std::ostringstream ost;
ost << "visitor_thread_" << i;
threads[i] = std::make_shared<VisitorThreadMetrics>( ost.str(), ost.str());
registerMetric(*threads[i]);
diff --git a/storage/src/vespa/storage/visiting/visitorthread.cpp b/storage/src/vespa/storage/visiting/visitorthread.cpp
index 9d03f2c597a..1031b48c38f 100644
--- a/storage/src/vespa/storage/visiting/visitorthread.cpp
+++ b/storage/src/vespa/storage/visiting/visitorthread.cpp
@@ -237,8 +237,8 @@ VisitorThread::run(framework::ThreadHandle& thread)
} catch (std::exception& e) {
vespalib::asciistream ost;
ost << "Failed to handle visitor message:" << e.what();
- LOG(warning, "Failed handling visitor message: %s", ost.str().data());
- result = ReturnCode(ReturnCode::INTERNAL_FAILURE, ost.str());
+ LOG(warning, "Failed handling visitor message: %s", ost.view().data());
+ result = ReturnCode(ReturnCode::INTERNAL_FAILURE, ost.view());
if (entry._message.get() && entry._message->getType() == api::MessageType::VISITOR_CREATE) {
_messageSender.closed(entry._visitorId);
_metrics.failedVisitors.inc(1);
@@ -326,18 +326,18 @@ VisitorThread::handleNonExistingVisitorCall(const Event& entry, ReturnCode& code
vespalib::asciistream ost;
ost << "Visitor " << entry._visitorId << " no longer exist";
- code = ReturnCode(ReturnCode::ILLEGAL_PARAMETERS, ost.str());
+ code = ReturnCode(ReturnCode::ILLEGAL_PARAMETERS, ost.view());
}
/**
* Utility function to get a visitor instance from a given library.
*/
std::shared_ptr<Visitor>
-VisitorThread::createVisitor(vespalib::stringref libName,
+VisitorThread::createVisitor(std::string_view libName,
const vdslib::Parameters& params,
vespalib::asciistream & error)
{
- vespalib::string str = libName;
+ vespalib::string str(libName);
std::transform(str.begin(), str.end(), str.begin(), tolower);
auto it = _visitorFactories.find(str);
@@ -423,9 +423,9 @@ VisitorThread::onCreateVisitor(const std::shared_ptr<api::CreateVisitorCommand>&
vespalib::asciistream errors;
visitor = createVisitor(cmd->getLibraryName(), cmd->getParameters(), errors);
if (!visitor) {
- result = ReturnCode(ReturnCode::ILLEGAL_PARAMETERS, errors.str());
+ result = ReturnCode(ReturnCode::ILLEGAL_PARAMETERS, errors.view());
LOG(warning, "CreateVisitor(%s): Failed to create visitor: %s",
- cmd->getInstanceId().c_str(), errors.str().data());
+ cmd->getInstanceId().c_str(), errors.view().data());
break;
}
// Set visitor parameters
@@ -465,17 +465,17 @@ VisitorThread::onCreateVisitor(const std::shared_ptr<api::CreateVisitorCommand>&
vespalib::asciistream ost;
ost << "Failed to parse document select string '"
<< cmd->getDocumentSelection() << "': " << e.getMessage();
- result = ReturnCode(ReturnCode::ILLEGAL_PARAMETERS, ost.str());
+ result = ReturnCode(ReturnCode::ILLEGAL_PARAMETERS, ost.view());
LOG(warning, "CreateVisitor(%s): %s",
- cmd->getInstanceId().c_str(), ost.str().data());
+ cmd->getInstanceId().c_str(), ost.view().data());
break;
} catch (document::select::ParsingFailedException& e) {
vespalib::asciistream ost;
ost << "Failed to parse document select string '"
<< cmd->getDocumentSelection() << "': " << e.getMessage();
- result = ReturnCode(ReturnCode::ILLEGAL_PARAMETERS, ost.str());
+ result = ReturnCode(ReturnCode::ILLEGAL_PARAMETERS, ost.view());
LOG(warning, "CreateVisitor(%s): %s",
- cmd->getInstanceId().c_str(), ost.str().data());
+ cmd->getInstanceId().c_str(), ost.view().data());
break;
}
LOG(debug, "CreateVisitor(%s): Successfully created visitor",
@@ -569,7 +569,7 @@ VisitorThread::onInternal(const std::shared_ptr<api::InternalCommand>& cmd)
auto& rsp = dynamic_cast<RequestStatusPage&>(*cmd);
vespalib::asciistream ost;
getStatus(ost, rsp.getPath());
- _messageSender.send(std::make_shared<RequestStatusPageReply>(rsp, ost.str()));
+ _messageSender.send(std::make_shared<RequestStatusPageReply>(rsp, std::string(ost.view())));
break;
}
default:
diff --git a/storage/src/vespa/storage/visiting/visitorthread.h b/storage/src/vespa/storage/visiting/visitorthread.h
index 034c726e947..693ae6fe78a 100644
--- a/storage/src/vespa/storage/visiting/visitorthread.h
+++ b/storage/src/vespa/storage/visiting/visitorthread.h
@@ -115,7 +115,7 @@ private:
void trimRecentlyCompletedList(vespalib::steady_time currentTime);
void handleNonExistingVisitorCall(const Event& entry, api::ReturnCode& code);
- std::shared_ptr<Visitor> createVisitor(vespalib::stringref libName,
+ std::shared_ptr<Visitor> createVisitor(std::string_view libName,
const vdslib::Parameters& params,
vespalib::asciistream & error);
diff --git a/storage/src/vespa/storageapi/mbusprot/protocolserialization7.cpp b/storage/src/vespa/storageapi/mbusprot/protocolserialization7.cpp
index 0f4a34cc775..dfe11c840d9 100644
--- a/storage/src/vespa/storageapi/mbusprot/protocolserialization7.cpp
+++ b/storage/src/vespa/storageapi/mbusprot/protocolserialization7.cpp
@@ -523,7 +523,7 @@ void ProtocolSerialization7::onEncode(GBBuf& buf, const api::RemoveReply& msg) c
api::StorageCommand::UP ProtocolSerialization7::onDecodeRemoveCommand(BBuf& buf) const {
return decode_bucket_request<protobuf::RemoveRequest>(buf, [&](auto& req, auto& bucket) {
- document::DocumentId doc_id(vespalib::stringref(req.document_id().data(), req.document_id().size()));
+ document::DocumentId doc_id(std::string_view(req.document_id().data(), req.document_id().size()));
auto cmd = std::make_unique<api::RemoveCommand>(bucket, doc_id, req.new_timestamp());
if (req.has_condition()) {
cmd->setCondition(get_tas_condition(req.condition()));
@@ -600,7 +600,7 @@ void ProtocolSerialization7::onEncode(GBBuf& buf, const api::GetReply& msg) cons
api::StorageCommand::UP ProtocolSerialization7::onDecodeGetCommand(BBuf& buf) const {
return decode_bucket_request<protobuf::GetRequest>(buf, [&](auto& req, auto& bucket) {
- document::DocumentId doc_id(vespalib::stringref(req.document_id().data(), req.document_id().size()));
+ document::DocumentId doc_id(std::string_view(req.document_id().data(), req.document_id().size()));
auto op = std::make_unique<api::GetCommand>(bucket, std::move(doc_id),
req.field_set(), req.before_timestamp());
op->set_internal_read_consistency(read_consistency_from_protobuf(req.internal_read_consistency()));
diff --git a/storage/src/vespa/storageapi/mbusprot/serializationhelper.h b/storage/src/vespa/storageapi/mbusprot/serializationhelper.h
index 616059aef0b..e54c24248d4 100644
--- a/storage/src/vespa/storageapi/mbusprot/serializationhelper.h
+++ b/storage/src/vespa/storageapi/mbusprot/serializationhelper.h
@@ -30,12 +30,12 @@ public:
return tmp;
}
- static vespalib::stringref getString(document::ByteBuffer& buf) {
+ static std::string_view getString(document::ByteBuffer& buf) {
uint32_t tmp;
buf.getIntNetwork((int32_t&) tmp);
const char * p = buf.getBufferAtPos();
buf.incPos(tmp);
- vespalib::stringref s(p, tmp);
+ std::string_view s(p, tmp);
return s;
}
diff --git a/storage/src/vespa/storageapi/message/bucket.cpp b/storage/src/vespa/storageapi/message/bucket.cpp
index 499d2f4abe2..38067494f50 100644
--- a/storage/src/vespa/storageapi/message/bucket.cpp
+++ b/storage/src/vespa/storageapi/message/bucket.cpp
@@ -457,7 +457,7 @@ RequestBucketInfoCommand::RequestBucketInfoCommand(
RequestBucketInfoCommand::RequestBucketInfoCommand(
document::BucketSpace bucketSpace,
uint16_t distributor, const lib::ClusterState& state,
- vespalib::stringref distributionHash)
+ std::string_view distributionHash)
: StorageCommand(MessageType::REQUESTBUCKETINFO),
_bucketSpace(bucketSpace),
_buckets(),
diff --git a/storage/src/vespa/storageapi/message/bucket.h b/storage/src/vespa/storageapi/message/bucket.h
index 4aa2ff8b0c1..b34ce624755 100644
--- a/storage/src/vespa/storageapi/message/bucket.h
+++ b/storage/src/vespa/storageapi/message/bucket.h
@@ -357,7 +357,7 @@ public:
RequestBucketInfoCommand(document::BucketSpace bucketSpace,
uint16_t distributor,
const lib::ClusterState& state,
- vespalib::stringref _distributionHash);
+ std::string_view _distributionHash);
RequestBucketInfoCommand(document::BucketSpace bucketSpace,
uint16_t distributor,
diff --git a/storage/src/vespa/storageapi/message/datagram.cpp b/storage/src/vespa/storageapi/message/datagram.cpp
index 103b7ead08c..6c7c8714596 100644
--- a/storage/src/vespa/storageapi/message/datagram.cpp
+++ b/storage/src/vespa/storageapi/message/datagram.cpp
@@ -25,7 +25,7 @@ MapVisitorCommand::print(std::ostream& out, bool verbose,
if (verbose) {
for (const auto & stat : _statistics) {
out << ",\n" << indent << " " << stat.first << ": "
- << vespalib::stringref(stat.second.c_str(), stat.second.length());
+ << std::string_view(stat.second.c_str(), stat.second.length());
}
out << ") : ";
StorageCommand::print(out, verbose, indent);
diff --git a/storage/src/vespa/storageapi/message/persistence.cpp b/storage/src/vespa/storageapi/message/persistence.cpp
index af054855bbe..aaf3cf291c3 100644
--- a/storage/src/vespa/storageapi/message/persistence.cpp
+++ b/storage/src/vespa/storageapi/message/persistence.cpp
@@ -194,7 +194,7 @@ UpdateReply::print(std::ostream& out, bool verbose, const std::string& indent) c
}
GetCommand::GetCommand(const document::Bucket &bucket, const document::DocumentId& docId,
- vespalib::stringref fieldSet, Timestamp before)
+ std::string_view fieldSet, Timestamp before)
: BucketInfoCommand(MessageType::GET, bucket),
_docId(docId),
_beforeTimestamp(before),
diff --git a/storage/src/vespa/storageapi/message/persistence.h b/storage/src/vespa/storageapi/message/persistence.h
index 0676e1d0f44..7df3cf2edcb 100644
--- a/storage/src/vespa/storageapi/message/persistence.h
+++ b/storage/src/vespa/storageapi/message/persistence.h
@@ -206,13 +206,13 @@ class GetCommand : public BucketInfoCommand {
InternalReadConsistency _internal_read_consistency;
public:
GetCommand(const document::Bucket &bucket, const document::DocumentId&,
- vespalib::stringref fieldSet, Timestamp before = MAX_TIMESTAMP);
+ std::string_view fieldSet, Timestamp before = MAX_TIMESTAMP);
~GetCommand() override;
void setBeforeTimestamp(Timestamp ts) { _beforeTimestamp = ts; }
const document::DocumentId& getDocumentId() const { return _docId; }
Timestamp getBeforeTimestamp() const { return _beforeTimestamp; }
const vespalib::string& getFieldSet() const { return _fieldSet; }
- void setFieldSet(vespalib::stringref fieldSet) { _fieldSet = fieldSet; }
+ void setFieldSet(std::string_view fieldSet) { _fieldSet = fieldSet; }
[[nodiscard]] bool has_condition() const noexcept { return _condition.isPresent(); }
[[nodiscard]] const TestAndSetCondition& condition() const noexcept { return _condition; }
void set_condition(TestAndSetCondition cond) { _condition = std::move(cond); }
diff --git a/storage/src/vespa/storageapi/message/removelocation.cpp b/storage/src/vespa/storageapi/message/removelocation.cpp
index 1c7c84a77d6..12693558c42 100644
--- a/storage/src/vespa/storageapi/message/removelocation.cpp
+++ b/storage/src/vespa/storageapi/message/removelocation.cpp
@@ -8,7 +8,7 @@ namespace storage::api {
IMPLEMENT_COMMAND(RemoveLocationCommand, RemoveLocationReply)
IMPLEMENT_REPLY(RemoveLocationReply)
-RemoveLocationCommand::RemoveLocationCommand(vespalib::stringref documentSelection,
+RemoveLocationCommand::RemoveLocationCommand(std::string_view documentSelection,
const document::Bucket &bucket)
: BucketInfoCommand(MessageType::REMOVELOCATION, bucket),
_documentSelection(documentSelection),
diff --git a/storage/src/vespa/storageapi/message/removelocation.h b/storage/src/vespa/storageapi/message/removelocation.h
index d61510244bf..64e5bb0db63 100644
--- a/storage/src/vespa/storageapi/message/removelocation.h
+++ b/storage/src/vespa/storageapi/message/removelocation.h
@@ -11,7 +11,7 @@ namespace storage::api {
class RemoveLocationCommand : public BucketInfoCommand
{
public:
- RemoveLocationCommand(vespalib::stringref documentSelection, const document::Bucket &bucket);
+ RemoveLocationCommand(std::string_view documentSelection, const document::Bucket &bucket);
~RemoveLocationCommand() override;
void print(std::ostream& out, bool verbose, const std::string& indent) const override;
diff --git a/storage/src/vespa/storageapi/message/stat.cpp b/storage/src/vespa/storageapi/message/stat.cpp
index 6a51c41b17b..62ad41f178d 100644
--- a/storage/src/vespa/storageapi/message/stat.cpp
+++ b/storage/src/vespa/storageapi/message/stat.cpp
@@ -11,7 +11,7 @@ IMPLEMENT_COMMAND(GetBucketListCommand, GetBucketListReply)
IMPLEMENT_REPLY(GetBucketListReply)
StatBucketCommand::StatBucketCommand(const document::Bucket& bucket,
- vespalib::stringref documentSelection)
+ std::string_view documentSelection)
: BucketCommand(MessageType::STATBUCKET, bucket),
_docSelection(documentSelection)
{
@@ -32,7 +32,7 @@ StatBucketCommand::print(std::ostream& out, bool verbose,
}
StatBucketReply::StatBucketReply(const StatBucketCommand& cmd,
- vespalib::stringref results)
+ std::string_view results)
: BucketReply(cmd),
_results(results)
{
diff --git a/storage/src/vespa/storageapi/message/stat.h b/storage/src/vespa/storageapi/message/stat.h
index 8b2de193ced..fcda1ce2be3 100644
--- a/storage/src/vespa/storageapi/message/stat.h
+++ b/storage/src/vespa/storageapi/message/stat.h
@@ -20,7 +20,7 @@ private:
vespalib::string _docSelection;
public:
StatBucketCommand(const document::Bucket &bucket,
- vespalib::stringref documentSelection);
+ std::string_view documentSelection);
~StatBucketCommand() override;
const vespalib::string& getDocumentSelection() const { return _docSelection; }
@@ -31,7 +31,7 @@ public:
class StatBucketReply : public BucketReply {
vespalib::string _results;
public:
- explicit StatBucketReply(const StatBucketCommand&, vespalib::stringref results = "");
+ explicit StatBucketReply(const StatBucketCommand&, std::string_view results = "");
const vespalib::string& getResults() const noexcept { return _results; }
void print(std::ostream& out, bool verbose, const std::string& indent) const override;
DECLARE_STORAGEREPLY(StatBucketReply, onStatBucketReply)
@@ -61,7 +61,7 @@ public:
vespalib::string _bucketInformation;
BucketInfo(const document::BucketId& id,
- vespalib::stringref bucketInformation) noexcept
+ std::string_view bucketInformation) noexcept
: _bucket(id),
_bucketInformation(bucketInformation)
{}
diff --git a/storage/src/vespa/storageapi/message/visitor.cpp b/storage/src/vespa/storageapi/message/visitor.cpp
index 821b98ab7b2..272677f872b 100644
--- a/storage/src/vespa/storageapi/message/visitor.cpp
+++ b/storage/src/vespa/storageapi/message/visitor.cpp
@@ -16,9 +16,9 @@ IMPLEMENT_COMMAND(VisitorInfoCommand, VisitorInfoReply)
IMPLEMENT_REPLY(VisitorInfoReply)
CreateVisitorCommand::CreateVisitorCommand(document::BucketSpace bucketSpace,
- vespalib::stringref libraryName,
- vespalib::stringref instanceId,
- vespalib::stringref docSelection)
+ std::string_view libraryName,
+ std::string_view instanceId,
+ std::string_view docSelection)
: StorageCommand(MessageType::VISITOR_CREATE),
_bucketSpace(bucketSpace),
_libName(libraryName),
@@ -146,7 +146,7 @@ CreateVisitorReply::print(std::ostream& out, bool verbose,
}
}
-DestroyVisitorCommand::DestroyVisitorCommand(vespalib::stringref instanceId)
+DestroyVisitorCommand::DestroyVisitorCommand(std::string_view instanceId)
: StorageCommand(MessageType::VISITOR_DESTROY),
_instanceId(instanceId)
{
diff --git a/storage/src/vespa/storageapi/message/visitor.h b/storage/src/vespa/storageapi/message/visitor.h
index 979b8064bd8..0ad1582efd0 100644
--- a/storage/src/vespa/storageapi/message/visitor.h
+++ b/storage/src/vespa/storageapi/message/visitor.h
@@ -52,25 +52,25 @@ private:
public:
CreateVisitorCommand(document::BucketSpace bucketSpace,
- vespalib::stringref libraryName,
- vespalib::stringref instanceId,
- vespalib::stringref docSelection);
+ std::string_view libraryName,
+ std::string_view instanceId,
+ std::string_view docSelection);
/** Create another command with similar visitor settings. */
CreateVisitorCommand(const CreateVisitorCommand& template_);
~CreateVisitorCommand() override;
void setVisitorCmdId(uint32_t id) { _visitorCmdId = id; }
- void setControlDestination(vespalib::stringref d) { _controlDestination = d; }
- void setDataDestination(vespalib::stringref d) { _dataDestination = d; }
+ void setControlDestination(std::string_view d) { _controlDestination = d; }
+ void setDataDestination(std::string_view d) { _dataDestination = d; }
void setParameters(const vdslib::Parameters& params) { _params = params; }
void setMaximumPendingReplyCount(uint32_t count) { _maxPendingReplyCount = count; }
- void setFieldSet(vespalib::stringref fieldSet) { _fieldSet = fieldSet; }
+ void setFieldSet(std::string_view fieldSet) { _fieldSet = fieldSet; }
void setVisitRemoves(bool value = true) { _visitRemoves = value; }
void setVisitInconsistentBuckets(bool visitInconsistent = true) { _visitInconsistentBuckets = visitInconsistent; }
void addBucketToBeVisited(const document::BucketId& id) { _buckets.push_back(id); }
void setVisitorId(const VisitorId id) { _visitorId = id; }
- void setInstanceId(vespalib::stringref id) { _instanceId = id; }
+ void setInstanceId(std::string_view id) { _instanceId = id; }
void setQueueTimeout(duration milliSecs) { _queueTimeout = milliSecs; }
void setFromTime(Timestamp ts) { _fromTime = ts; }
void setToTime(Timestamp ts) { _toTime = ts; }
@@ -147,7 +147,7 @@ private:
vespalib::string _instanceId;
public:
- explicit DestroyVisitorCommand(vespalib::stringref instanceId);
+ explicit DestroyVisitorCommand(std::string_view instanceId);
const vespalib::string & getInstanceId() const { return _instanceId; }
diff --git a/storage/src/vespa/storageapi/messageapi/maintenancecommand.h b/storage/src/vespa/storageapi/messageapi/maintenancecommand.h
index 69e5c8a175c..7c634fb9c40 100644
--- a/storage/src/vespa/storageapi/messageapi/maintenancecommand.h
+++ b/storage/src/vespa/storageapi/messageapi/maintenancecommand.h
@@ -18,7 +18,7 @@ public:
~MaintenanceCommand() override;
const vespalib::string& getReason() const { return _reason; };
- void setReason(vespalib::stringref reason) { _reason = reason; };
+ void setReason(std::string_view reason) { _reason = reason; };
protected:
vespalib::string _reason;
};
diff --git a/storage/src/vespa/storageapi/messageapi/returncode.cpp b/storage/src/vespa/storageapi/messageapi/returncode.cpp
index d3e321b11b6..4c8ebc9d766 100644
--- a/storage/src/vespa/storageapi/messageapi/returncode.cpp
+++ b/storage/src/vespa/storageapi/messageapi/returncode.cpp
@@ -7,7 +7,7 @@ namespace storage::api {
ReturnCode & ReturnCode::operator = (ReturnCode &&) noexcept = default;
-ReturnCode::ReturnCode(Result result, vespalib::stringref msg)
+ReturnCode::ReturnCode(Result result, std::string_view msg)
: _result(result),
_message()
{
diff --git a/storage/src/vespa/storageapi/messageapi/returncode.h b/storage/src/vespa/storageapi/messageapi/returncode.h
index 99ceb32be8b..2e2cf51705c 100644
--- a/storage/src/vespa/storageapi/messageapi/returncode.h
+++ b/storage/src/vespa/storageapi/messageapi/returncode.h
@@ -69,16 +69,16 @@ public:
: _result(result),
_message()
{}
- ReturnCode(Result result, vespalib::stringref msg);
+ ReturnCode(Result result, std::string_view msg);
ReturnCode(const ReturnCode &);
ReturnCode & operator = (const ReturnCode &);
ReturnCode(ReturnCode &&) noexcept = default;
ReturnCode & operator = (ReturnCode &&) noexcept;
- vespalib::stringref getMessage() const {
+ std::string_view getMessage() const {
return _message
- ? _message->operator vespalib::stringref()
- : vespalib::stringref();
+ ? _message->operator std::string_view()
+ : std::string_view();
}
Result getResult() const { return _result; }
diff --git a/storage/src/vespa/storageapi/messageapi/storagemessage.cpp b/storage/src/vespa/storageapi/messageapi/storagemessage.cpp
index f62c6410882..57a7b6537d5 100644
--- a/storage/src/vespa/storageapi/messageapi/storagemessage.cpp
+++ b/storage/src/vespa/storageapi/messageapi/storagemessage.cpp
@@ -106,7 +106,7 @@ MessageType::MessageType::get(Id id)
}
return *it->second;
}
-MessageType::MessageType(vespalib::stringref name, Id id,
+MessageType::MessageType(std::string_view name, Id id,
const MessageType* replyOf)
: _name(name), _id(id), _reply(nullptr), _replyOf(replyOf)
{
@@ -139,7 +139,7 @@ std::ostream & operator << (std::ostream & os, const StorageMessageAddress & add
namespace {
vespalib::string
-createAddress(vespalib::stringref cluster, const lib::NodeType &type, uint16_t index) {
+createAddress(std::string_view cluster, const lib::NodeType &type, uint16_t index) {
vespalib::asciistream os;
os << STORAGEADDRESS_PREFIX << cluster << '/' << type.toString() << '/' << index << "/default";
return os.str();
diff --git a/storage/src/vespa/storageapi/messageapi/storagemessage.h b/storage/src/vespa/storageapi/messageapi/storagemessage.h
index af7f5e6cd7d..326a4ff0f04 100644
--- a/storage/src/vespa/storageapi/messageapi/storagemessage.h
+++ b/storage/src/vespa/storageapi/messageapi/storagemessage.h
@@ -152,7 +152,7 @@ private:
MessageType *_reply;
const MessageType *_replyOf;
- MessageType(vespalib::stringref name, Id id, const MessageType* replyOf = 0);
+ MessageType(std::string_view name, Id id, const MessageType* replyOf = 0);
public:
static const MessageType DOCBLOCK;
static const MessageType DOCBLOCK_REPLY;
diff --git a/storage/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.cpp b/storage/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.cpp
index 146d7f441a3..75be8ce6686 100644
--- a/storage/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.cpp
+++ b/storage/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.cpp
@@ -39,7 +39,7 @@ ComponentRegisterImpl::registerComponent(ManagedComponent& mc)
}
void
-ComponentRegisterImpl::requestShutdown(vespalib::stringref reason)
+ComponentRegisterImpl::requestShutdown(std::string_view reason)
{
std::lock_guard lock(_componentLock);
if (_shutdownListener) {
@@ -89,7 +89,7 @@ ComponentRegisterImpl::setThreadPool(ThreadPool& tp)
}
const StatusReporter*
-ComponentRegisterImpl::getStatusReporter(vespalib::stringref id)
+ComponentRegisterImpl::getStatusReporter(std::string_view id)
{
std::lock_guard lock(_componentLock);
for (auto* component : _components) {
@@ -126,7 +126,7 @@ namespace {
struct MetricHookWrapper : public metrics::UpdateHook {
MetricUpdateHook& _hook;
- MetricHookWrapper(vespalib::stringref name, MetricUpdateHook& hook, vespalib::system_time::duration period)
+ MetricHookWrapper(std::string_view name, MetricUpdateHook& hook, vespalib::system_time::duration period)
: metrics::UpdateHook(name.data(), period), // Expected to point to static name
_hook(hook)
{
@@ -137,7 +137,7 @@ namespace {
}
void
-ComponentRegisterImpl::registerUpdateHook(vespalib::stringref name,
+ComponentRegisterImpl::registerUpdateHook(std::string_view name,
MetricUpdateHook& hook,
vespalib::system_time::duration period)
{
diff --git a/storage/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h b/storage/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h
index 15260cfff0f..0722993b8f1 100644
--- a/storage/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h
+++ b/storage/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h
@@ -36,7 +36,7 @@ namespace storage::framework::defaultimplementation {
struct ShutdownListener {
virtual ~ShutdownListener() = default;
- virtual void requestShutdown(vespalib::stringref reason) = 0;
+ virtual void requestShutdown(std::string_view reason) = 0;
};
class ComponentRegisterImpl : public virtual ComponentRegister,
@@ -63,17 +63,17 @@ public:
metrics::MetricManager& getMetricManager() { return *_metricManager; }
void registerComponent(ManagedComponent&) override;
- void requestShutdown(vespalib::stringref reason) override;
+ void requestShutdown(std::string_view reason) override;
void setMetricManager(metrics::MetricManager&);
void setClock(Clock&);
void setThreadPool(ThreadPool&);
- const StatusReporter* getStatusReporter(vespalib::stringref id) override;
+ const StatusReporter* getStatusReporter(std::string_view id) override;
std::vector<const StatusReporter*> getStatusReporters() override;
void registerMetric(metrics::Metric&) override;
- void registerUpdateHook(vespalib::stringref name, MetricUpdateHook& hook, vespalib::system_time::duration period) override;
+ void registerUpdateHook(std::string_view name, MetricUpdateHook& hook, vespalib::system_time::duration period) override;
void registerShutdownListener(ShutdownListener&);
};
diff --git a/storage/src/vespa/storageframework/defaultimplementation/thread/threadimpl.cpp b/storage/src/vespa/storageframework/defaultimplementation/thread/threadimpl.cpp
index 5a24549c093..740b776f7e9 100644
--- a/storage/src/vespa/storageframework/defaultimplementation/thread/threadimpl.cpp
+++ b/storage/src/vespa/storageframework/defaultimplementation/thread/threadimpl.cpp
@@ -16,7 +16,7 @@ namespace storage::framework::defaultimplementation {
ThreadImpl::ThreadImpl(ThreadPoolImpl& pool,
Runnable& runnable,
- vespalib::stringref id,
+ std::string_view id,
vespalib::duration waitTime,
vespalib::duration maxProcessTime,
int ticksBeforeWait,
diff --git a/storage/src/vespa/storageframework/defaultimplementation/thread/threadimpl.h b/storage/src/vespa/storageframework/defaultimplementation/thread/threadimpl.h
index a0142addbc8..51bf46f5585 100644
--- a/storage/src/vespa/storageframework/defaultimplementation/thread/threadimpl.h
+++ b/storage/src/vespa/storageframework/defaultimplementation/thread/threadimpl.h
@@ -51,7 +51,7 @@ class ThreadImpl final : public Thread
void run();
public:
- ThreadImpl(ThreadPoolImpl&, Runnable&, vespalib::stringref id, vespalib::duration waitTime,
+ ThreadImpl(ThreadPoolImpl&, Runnable&, std::string_view id, vespalib::duration waitTime,
vespalib::duration maxProcessTime, int ticksBeforeWait,
std::optional<vespalib::CpuUsage::Category> cpu_category);
~ThreadImpl() override;
diff --git a/storage/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.cpp b/storage/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.cpp
index 5402965589b..b06826234f0 100644
--- a/storage/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.cpp
+++ b/storage/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.cpp
@@ -46,7 +46,7 @@ ThreadPoolImpl::~ThreadPoolImpl()
}
Thread::UP
-ThreadPoolImpl::startThread(Runnable& runnable, vespalib::stringref id, vespalib::duration waitTime,
+ThreadPoolImpl::startThread(Runnable& runnable, std::string_view id, vespalib::duration waitTime,
vespalib::duration maxProcessTime, int ticksBeforeWait,
std::optional<vespalib::CpuUsage::Category> cpu_category)
{
diff --git a/storage/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.h b/storage/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.h
index d4c259fda2c..592ab78ebfd 100644
--- a/storage/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.h
+++ b/storage/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.h
@@ -22,7 +22,7 @@ public:
ThreadPoolImpl(Clock&);
~ThreadPoolImpl() override;
- std::unique_ptr<Thread> startThread(Runnable&, vespalib::stringref id, vespalib::duration waitTime,
+ std::unique_ptr<Thread> startThread(Runnable&, std::string_view id, vespalib::duration waitTime,
vespalib::duration maxProcessTime, int ticksBeforeWait,
std::optional<vespalib::CpuUsage::Category> cpu_category) override;
void visitThreads(ThreadVisitor&) const override;
diff --git a/storage/src/vespa/storageframework/generic/component/component.cpp b/storage/src/vespa/storageframework/generic/component/component.cpp
index 1488c756b27..e221bac9b93 100644
--- a/storage/src/vespa/storageframework/generic/component/component.cpp
+++ b/storage/src/vespa/storageframework/generic/component/component.cpp
@@ -20,7 +20,7 @@ Component::close()
{
}
-Component::Component(ComponentRegister& cr, vespalib::stringref name)
+Component::Component(ComponentRegister& cr, std::string_view name)
: _componentRegister(&cr),
_name(name),
_status(nullptr),
@@ -89,7 +89,7 @@ Component::startThread(Runnable& runnable, vespalib::duration waitTime, vespalib
}
void
-Component::requestShutdown(vespalib::stringref reason)
+Component::requestShutdown(std::string_view reason)
{
_componentRegister->requestShutdown(reason);
}
diff --git a/storage/src/vespa/storageframework/generic/component/component.h b/storage/src/vespa/storageframework/generic/component/component.h
index fc4b934e7e3..99dff7dfe43 100644
--- a/storage/src/vespa/storageframework/generic/component/component.h
+++ b/storage/src/vespa/storageframework/generic/component/component.h
@@ -101,7 +101,7 @@ class Component : private ManagedComponent
public:
using UP = std::unique_ptr<Component>;
- Component(ComponentRegister&, vespalib::stringref name);
+ Component(ComponentRegister&, std::string_view name);
~Component() override;
/**
@@ -157,7 +157,7 @@ public:
int ticksBeforeWait = 1,
std::optional<vespalib::CpuUsage::Category> cpu_category = std::nullopt) const;
- void requestShutdown(vespalib::stringref reason);
+ void requestShutdown(std::string_view reason);
};
diff --git a/storage/src/vespa/storageframework/generic/component/componentregister.h b/storage/src/vespa/storageframework/generic/component/componentregister.h
index 614b8a87d55..84ebd6049a1 100644
--- a/storage/src/vespa/storageframework/generic/component/componentregister.h
+++ b/storage/src/vespa/storageframework/generic/component/componentregister.h
@@ -21,7 +21,7 @@ struct ComponentRegister {
virtual ~ComponentRegister() {}
virtual void registerComponent(ManagedComponent&) = 0;
- virtual void requestShutdown(vespalib::stringref reason) = 0;
+ virtual void requestShutdown(std::string_view reason) = 0;
};
}
diff --git a/storage/src/vespa/storageframework/generic/metric/metricregistrator.h b/storage/src/vespa/storageframework/generic/metric/metricregistrator.h
index df774fa9864..0caab22ef71 100644
--- a/storage/src/vespa/storageframework/generic/metric/metricregistrator.h
+++ b/storage/src/vespa/storageframework/generic/metric/metricregistrator.h
@@ -24,7 +24,7 @@ struct MetricRegistrator {
virtual ~MetricRegistrator() = default;
virtual void registerMetric(metrics::Metric&) = 0;
- virtual void registerUpdateHook(vespalib::stringref name, MetricUpdateHook& hook, vespalib::system_time::duration period) = 0;
+ virtual void registerUpdateHook(std::string_view name, MetricUpdateHook& hook, vespalib::system_time::duration period) = 0;
};
}
diff --git a/storage/src/vespa/storageframework/generic/status/htmlstatusreporter.cpp b/storage/src/vespa/storageframework/generic/status/htmlstatusreporter.cpp
index 7aa6bd326c4..8fadf388768 100644
--- a/storage/src/vespa/storageframework/generic/status/htmlstatusreporter.cpp
+++ b/storage/src/vespa/storageframework/generic/status/htmlstatusreporter.cpp
@@ -4,7 +4,7 @@
namespace storage::framework {
-HtmlStatusReporter::HtmlStatusReporter(vespalib::stringref id, vespalib::stringref name)
+HtmlStatusReporter::HtmlStatusReporter(std::string_view id, std::string_view name)
: StatusReporter(id, name)
{ }
diff --git a/storage/src/vespa/storageframework/generic/status/htmlstatusreporter.h b/storage/src/vespa/storageframework/generic/status/htmlstatusreporter.h
index 158c4d08011..5541feb8abe 100644
--- a/storage/src/vespa/storageframework/generic/status/htmlstatusreporter.h
+++ b/storage/src/vespa/storageframework/generic/status/htmlstatusreporter.h
@@ -21,7 +21,7 @@
namespace storage::framework {
struct HtmlStatusReporter : public StatusReporter {
- HtmlStatusReporter(vespalib::stringref id, vespalib::stringref name);
+ HtmlStatusReporter(std::string_view id, std::string_view name);
virtual ~HtmlStatusReporter();
/**
diff --git a/storage/src/vespa/storageframework/generic/status/httpurlpath.cpp b/storage/src/vespa/storageframework/generic/status/httpurlpath.cpp
index bd3ba314028..4bade6d0047 100644
--- a/storage/src/vespa/storageframework/generic/status/httpurlpath.cpp
+++ b/storage/src/vespa/storageframework/generic/status/httpurlpath.cpp
@@ -44,7 +44,7 @@ HttpUrlPath::init(const vespalib::string &urlpath)
vespalib::string sub(urlpath.substr(pos+1));
vespalib::StringTokenizer tokenizer(sub, "&", "");
for (uint32_t i=0, n=tokenizer.size(); i<n; ++i) {
- const vespalib::string& s(tokenizer[i]);
+ vespalib::string s(tokenizer[i]);
pos = s.find('=');
if (pos == vespalib::string::npos) {
_attributes[s] = "";
@@ -65,8 +65,7 @@ vespalib::string
HttpUrlPath::getAttribute(const vespalib::string& id,
const vespalib::string& defaultValue) const
{
- std::map<vespalib::string, vespalib::string>::const_iterator it
- = _attributes.find(id);
+ auto it = _attributes.find(id);
return (it == _attributes.end() ? defaultValue : it->second);
}
diff --git a/storage/src/vespa/storageframework/generic/status/statusreporter.cpp b/storage/src/vespa/storageframework/generic/status/statusreporter.cpp
index 2626c4f2346..9c58018d038 100644
--- a/storage/src/vespa/storageframework/generic/status/statusreporter.cpp
+++ b/storage/src/vespa/storageframework/generic/status/statusreporter.cpp
@@ -5,7 +5,7 @@
namespace storage {
namespace framework {
-StatusReporter::StatusReporter(vespalib::stringref id, vespalib::stringref name)
+StatusReporter::StatusReporter(std::string_view id, std::string_view name)
: _id(id),
_name(name)
{
diff --git a/storage/src/vespa/storageframework/generic/status/statusreporter.h b/storage/src/vespa/storageframework/generic/status/statusreporter.h
index a7b5c5b4aaf..7ffbc0a4b3b 100644
--- a/storage/src/vespa/storageframework/generic/status/statusreporter.h
+++ b/storage/src/vespa/storageframework/generic/status/statusreporter.h
@@ -25,7 +25,7 @@ struct StatusReporter {
using Capability = vespalib::net::tls::Capability;
using CapabilitySet = vespalib::net::tls::CapabilitySet;
- StatusReporter(vespalib::stringref id, vespalib::stringref name);
+ StatusReporter(std::string_view id, std::string_view name);
virtual ~StatusReporter();
/**
diff --git a/storage/src/vespa/storageframework/generic/status/statusreportermap.h b/storage/src/vespa/storageframework/generic/status/statusreportermap.h
index 111070a28d6..00e42da9ee5 100644
--- a/storage/src/vespa/storageframework/generic/status/statusreportermap.h
+++ b/storage/src/vespa/storageframework/generic/status/statusreportermap.h
@@ -16,7 +16,7 @@ struct StatusReporter;
struct StatusReporterMap {
virtual ~StatusReporterMap() = default;
- virtual const StatusReporter* getStatusReporter(vespalib::stringref id) = 0;
+ virtual const StatusReporter* getStatusReporter(std::string_view id) = 0;
virtual std::vector<const StatusReporter*> getStatusReporters() = 0;
};
diff --git a/storage/src/vespa/storageframework/generic/status/xmlstatusreporter.cpp b/storage/src/vespa/storageframework/generic/status/xmlstatusreporter.cpp
index a1e205b4663..fbc16181fe1 100644
--- a/storage/src/vespa/storageframework/generic/status/xmlstatusreporter.cpp
+++ b/storage/src/vespa/storageframework/generic/status/xmlstatusreporter.cpp
@@ -6,8 +6,8 @@
namespace storage {
namespace framework {
-XmlStatusReporter::XmlStatusReporter(vespalib::stringref id,
- vespalib::stringref name)
+XmlStatusReporter::XmlStatusReporter(std::string_view id,
+ std::string_view name)
: StatusReporter(id, name)
{
}
@@ -48,7 +48,7 @@ XmlStatusReporter::reportStatus(std::ostream& out,
out << "<?xml version=\"1.0\"?>\n";
vespalib::XmlOutputStream xos(out);
initXmlReport(xos, path);
- vespalib::stringref failure = reportXmlStatus(xos, path);
+ std::string_view failure = reportXmlStatus(xos, path);
if (!failure.empty()) {
using namespace vespalib::xml;
xos << XmlContent("Failed to report XML status: " + failure);
diff --git a/storage/src/vespa/storageframework/generic/status/xmlstatusreporter.h b/storage/src/vespa/storageframework/generic/status/xmlstatusreporter.h
index 7a8486acda3..4ceb6c39050 100644
--- a/storage/src/vespa/storageframework/generic/status/xmlstatusreporter.h
+++ b/storage/src/vespa/storageframework/generic/status/xmlstatusreporter.h
@@ -23,7 +23,7 @@
namespace storage::framework {
struct XmlStatusReporter : public StatusReporter {
- XmlStatusReporter(vespalib::stringref id, vespalib::stringref name);
+ XmlStatusReporter(std::string_view id, std::string_view name);
virtual ~XmlStatusReporter();
virtual void initXmlReport(vespalib::xml::XmlOutputStream&,
diff --git a/storage/src/vespa/storageframework/generic/thread/thread.h b/storage/src/vespa/storageframework/generic/thread/thread.h
index 9fab2be06d1..b0efb42aa44 100644
--- a/storage/src/vespa/storageframework/generic/thread/thread.h
+++ b/storage/src/vespa/storageframework/generic/thread/thread.h
@@ -32,7 +32,7 @@ class Thread : public ThreadHandle {
public:
using UP = std::unique_ptr<Thread>;
- explicit Thread(vespalib::stringref id) : _id(id) {}
+ explicit Thread(std::string_view id) : _id(id) {}
~Thread() override = default;
[[nodiscard]] virtual const vespalib::string& getId() const { return _id; }
diff --git a/storage/src/vespa/storageframework/generic/thread/threadpool.h b/storage/src/vespa/storageframework/generic/thread/threadpool.h
index 9a03424f580..d3f533f0271 100644
--- a/storage/src/vespa/storageframework/generic/thread/threadpool.h
+++ b/storage/src/vespa/storageframework/generic/thread/threadpool.h
@@ -32,7 +32,7 @@ struct ThreadPool {
virtual ~ThreadPool() = default;
virtual std::unique_ptr<Thread>
- startThread(Runnable&, vespalib::stringref id, vespalib::duration waitTime,
+ startThread(Runnable&, std::string_view id, vespalib::duration waitTime,
vespalib::duration maxProcessTime, int ticksBeforeWait,
std::optional<vespalib::CpuUsage::Category> cpu_category) = 0;
diff --git a/storage/src/vespa/storageframework/generic/thread/tickingthread.cpp b/storage/src/vespa/storageframework/generic/thread/tickingthread.cpp
index 35d0f44010b..ea41a5b7fce 100644
--- a/storage/src/vespa/storageframework/generic/thread/tickingthread.cpp
+++ b/storage/src/vespa/storageframework/generic/thread/tickingthread.cpp
@@ -135,7 +135,7 @@ class TickingThreadPoolImpl final : public TickingThreadPool {
};
public:
- TickingThreadPoolImpl(vespalib::stringref name, vespalib::duration waitTime,
+ TickingThreadPoolImpl(std::string_view name, vespalib::duration waitTime,
int ticksBeforeWait, vespalib::duration maxProcessTime)
: _name(name),
_waitTime(waitTime),
@@ -160,7 +160,7 @@ public:
ost << _name.c_str() << " thread " << i;
_threads.push_back(std::shared_ptr<Thread>(pool.startThread(
*_tickers[i],
- ost.str(),
+ ost.view(),
_waitTime,
_maxProcessTime,
_ticksBeforeWait, std::nullopt)));
@@ -211,7 +211,7 @@ private:
TickingThreadPool::UP
TickingThreadPool::createDefault(
- vespalib::stringref name,
+ std::string_view name,
vespalib::duration waitTime,
int ticksBeforeWait,
vespalib::duration maxProcessTime)
@@ -220,7 +220,7 @@ TickingThreadPool::createDefault(
}
TickingThreadPool::UP
-TickingThreadPool::createDefault(vespalib::stringref name, vespalib::duration waitTime)
+TickingThreadPool::createDefault(std::string_view name, vespalib::duration waitTime)
{
return createDefault(name, waitTime, 1, 5s);
}
diff --git a/storage/src/vespa/storageframework/generic/thread/tickingthread.h b/storage/src/vespa/storageframework/generic/thread/tickingthread.h
index 03aea51ad7d..b08bc126aba 100644
--- a/storage/src/vespa/storageframework/generic/thread/tickingthread.h
+++ b/storage/src/vespa/storageframework/generic/thread/tickingthread.h
@@ -80,11 +80,11 @@ struct TickingThreadPool : public ThreadLock {
// TODO STRIPE: Change waitTime default to 100ms when legacy mode is removed.
static TickingThreadPool::UP createDefault(
- vespalib::stringref name,
+ std::string_view name,
vespalib::duration waitTime,
int ticksBeforeWait,
vespalib::duration maxProcessTime);
- static TickingThreadPool::UP createDefault(vespalib::stringref name, vespalib::duration waitTime);
+ static TickingThreadPool::UP createDefault(std::string_view name, vespalib::duration waitTime);
~TickingThreadPool() override = default;