From a695f6b5bc3c028b51653af53ca4b2cfaacf4868 Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Mon, 24 Sep 2018 11:14:49 +0200 Subject: Remove deprecated memorytouse setting in stor-server.def. --- storage/src/vespa/storage/config/stor-server.def | 5 ----- 1 file changed, 5 deletions(-) (limited to 'storage/src') diff --git a/storage/src/vespa/storage/config/stor-server.def b/storage/src/vespa/storage/config/stor-server.def index fbc29e0234b..36ca88dd7de 100644 --- a/storage/src/vespa/storage/config/stor-server.def +++ b/storage/src/vespa/storage/config/stor-server.def @@ -13,11 +13,6 @@ cluster_name string default="storage" restart ## to identify the node, and to decide what data should be on it. node_index int default=0 restart -## The maximum amount of memory to use in the storage node. -## Currently default is 2 GB. -## DEPRECATED! -memorytouse long default=2147483647 restart - ## Set whether this is a distributor or a storage node. This will decide what ## storage links are set up. is_distributor bool restart -- cgit v1.2.3 From 3c56e9fc27d245fa7c489c689a56eb1e5bdea117 Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Mon, 24 Sep 2018 11:33:36 +0200 Subject: Remove deprecated iterators_per_bucket setting from stor-visitor.def. --- storage/src/tests/visiting/visitortest.cpp | 42 ++-------------------- .../src/vespa/storage/visiting/stor-visitor.def | 10 ------ 2 files changed, 2 insertions(+), 50 deletions(-) (limited to 'storage/src') diff --git a/storage/src/tests/visiting/visitortest.cpp b/storage/src/tests/visiting/visitortest.cpp index 11e5e355f0c..46b0f4d830d 100644 --- a/storage/src/tests/visiting/visitortest.cpp +++ b/storage/src/tests/visiting/visitortest.cpp @@ -30,10 +30,6 @@ using msg_ptr_vector = std::vector; struct TestParams { - TestParams& iteratorsPerBucket(uint32_t n) { - _iteratorsPerBucket = n; - return *this; - } TestParams& maxVisitorMemoryUsage(uint32_t bytes) { _maxVisitorMemoryUsage = bytes; return *this; @@ -47,7 +43,6 @@ struct TestParams return *this; } - uint32_t _iteratorsPerBucket {1}; uint32_t _maxVisitorMemoryUsage {UINT32_MAX}; uint32_t _parallelBuckets {1}; mbus::Error _autoReplyError; @@ -62,7 +57,6 @@ private: CPPUNIT_TEST(testNormalUsage); CPPUNIT_TEST(testFailedCreateIterator); CPPUNIT_TEST(testFailedGetIter); - CPPUNIT_TEST(iterators_per_bucket_config_is_ignored_and_hardcoded_to_1); CPPUNIT_TEST(testDocumentAPIClientError); CPPUNIT_TEST(testNoDocumentAPIResendingForFailedVisitor); CPPUNIT_TEST(testIteratorCreatedForFailedVisitor); @@ -90,7 +84,6 @@ public: void testNormalUsage(); void testFailedCreateIterator(); void testFailedGetIter(); - void iterators_per_bucket_config_is_ignored_and_hardcoded_to_1(); void testDocumentAPIClientError(); void testNoDocumentAPIResendingForFailedVisitor(); void testIteratorCreatedForFailedVisitor(); @@ -183,9 +176,6 @@ VisitorTest::initializeTest(const TestParams& params) { vdstestlib::DirConfig config(getStandardConfig(true, "visitortest")); config.getConfig("stor-visitor").set("visitorthreads", "1"); - config.getConfig("stor-visitor").set( - "iterators_per_bucket", - std::to_string(params._iteratorsPerBucket)); config.getConfig("stor-visitor").set( "defaultparalleliterators", std::to_string(params._parallelBuckets)); @@ -596,33 +586,6 @@ VisitorTest::testFailedGetIter() CPPUNIT_ASSERT(waitUntilNoActiveVisitors()); } -void VisitorTest::iterators_per_bucket_config_is_ignored_and_hardcoded_to_1() { - initializeTest(TestParams().iteratorsPerBucket(20)); - auto cmd = makeCreateVisitor(); - _top->sendDown(cmd); - sendCreateIteratorReply(); - - auto getIterCmd = fetchSingleCommand(*_bottom); - CPPUNIT_ASSERT_EQUAL(spi::IteratorId(1234), - getIterCmd->getIteratorId()); - sendGetIterReply(*getIterCmd); - - CPPUNIT_ASSERT_EQUAL(size_t(0), _bottom->getNumCommands()); - - std::vector docs; - std::vector docIds; - std::vector infoMessages; - getMessagesAndReply(_documents.size(), getSession(0), docs, docIds, infoMessages); - CPPUNIT_ASSERT_EQUAL(size_t(0), infoMessages.size()); - CPPUNIT_ASSERT_EQUAL(size_t(0), docIds.size()); - - auto destroyIterCmd = fetchSingleCommand(*_bottom); - - verifyCreateVisitorReply(api::ReturnCode::OK); - CPPUNIT_ASSERT(waitUntilNoActiveVisitors()); - CPPUNIT_ASSERT_EQUAL(0L, getFailedVisitorDestinationReplyCount()); -} - void VisitorTest::testDocumentAPIClientError() { @@ -709,7 +672,7 @@ VisitorTest::testNoDocumentAPIResendingForFailedVisitor() void VisitorTest::testIteratorCreatedForFailedVisitor() { - initializeTest(TestParams().iteratorsPerBucket(1).parallelBuckets(2)); + initializeTest(TestParams().parallelBuckets(2)); std::shared_ptr cmd( makeCreateVisitor()); cmd->addBucketToBeVisited(document::BucketId(16, 4)); @@ -928,8 +891,7 @@ void VisitorTest::testNoMoreIteratorsSentWhileMemoryUsedAboveLimit() { initializeTest(TestParams().maxVisitorMemoryUsage(1) - .parallelBuckets(1) - .iteratorsPerBucket(1)); + .parallelBuckets(1)); std::shared_ptr cmd( makeCreateVisitor()); _top->sendDown(cmd); diff --git a/storage/src/vespa/storage/visiting/stor-visitor.def b/storage/src/vespa/storage/visiting/stor-visitor.def index 6f16bcb60a2..72b3699fe2d 100644 --- a/storage/src/vespa/storage/visiting/stor-visitor.def +++ b/storage/src/vespa/storage/visiting/stor-visitor.def @@ -17,16 +17,6 @@ ignorenonexistingvisitortimelimit int default=300 restart ## 100 buckets, 8 of them will be visited in parallel. defaultparalleliterators int default=8 -## The number of iterators we send for each bucket being visited from visitor -## thread. For streaming search we would likely want two or three. Since -## supporting more than one is a new feature, default is still one. -## (If you visit 8 buckets in parallel and have 2 iterators per bucket, this -## will be 16 requests to persistence layer, but only 8 will be able to execute -## at the same time, since only one operation can be executed at the same time -## for one bucket) -## DEPRECATED: ignored by backend, 1 is always used. -iterators_per_bucket int default=1 - ## Default number of maximum client replies pending. defaultpendingmessages int default=32 -- cgit v1.2.3 From abdd74bab2a9c834e6b13bd88270896e2f59af1f Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Mon, 24 Sep 2018 16:14:32 +0200 Subject: Remove workarounds added during transition to multiple bucket spaces. --- .../src/tests/distributor/bucketdbupdatertest.cpp | 25 ---------------------- .../storageserver/communicationmanagertest.cpp | 16 ++++++-------- .../storage/distributor/pendingclusterstate.cpp | 7 +----- .../storage/storageserver/communicationmanager.cpp | 12 ++--------- 4 files changed, 9 insertions(+), 51 deletions(-) (limited to 'storage/src') diff --git a/storage/src/tests/distributor/bucketdbupdatertest.cpp b/storage/src/tests/distributor/bucketdbupdatertest.cpp index 56f88b7f98f..53f80854bef 100644 --- a/storage/src/tests/distributor/bucketdbupdatertest.cpp +++ b/storage/src/tests/distributor/bucketdbupdatertest.cpp @@ -61,7 +61,6 @@ class BucketDBUpdaterTest : public CppUnit::TestFixture, CPPUNIT_TEST(testDistributorChangeWithGrouping); CPPUNIT_TEST(testNormalUsageInitializing); // Check that we send request bucket info when storage node is initializing, and send another when it's up. CPPUNIT_TEST(testFailedRequestBucketInfo); - CPPUNIT_TEST(testEncodeErrorHandling); CPPUNIT_TEST(testBitChange); // Check what happens when distribution bits change CPPUNIT_TEST(testNodeDown); CPPUNIT_TEST(testStorageNodeInMaintenanceClearsBucketsForNode); @@ -123,7 +122,6 @@ protected: void testDistributorChangeWithGrouping(); void testNormalUsageInitializing(); void testFailedRequestBucketInfo(); - void testEncodeErrorHandling(); void testNoResponses(); void testBitChange(); void testInconsistentChecksum(); @@ -810,29 +808,6 @@ BucketDBUpdaterTest::testFailedRequestBucketInfo() _senderDown.getCommands()); } -void -BucketDBUpdaterTest::testEncodeErrorHandling() -{ - setSystemState(lib::ClusterState("distributor:1 .0.s:i storage:1")); - - CPPUNIT_ASSERT_EQUAL(_bucketSpaces.size(), _sender.commands.size()); - - // Not yet passing on system state. - CPPUNIT_ASSERT_EQUAL(size_t(0), _senderDown.commands.size()); - for (uint32_t i = 0; i < _bucketSpaces.size(); ++i) { - std::shared_ptr reply = - getFakeBucketReply(lib::ClusterState("distributor:1 .0.s:i storage:1"), - *((RequestBucketInfoCommand*)_sender.commands[i].get()), - 0, - 10); - - reply->setResult(api::ReturnCode::ENCODE_ERROR); - getBucketDBUpdater().onRequestBucketInfoReply(reply); - } - CPPUNIT_ASSERT_EQUAL(std::string("Set system state"), - _senderDown.getCommands()); -} - void BucketDBUpdaterTest::testDownWhileInit() { diff --git a/storage/src/tests/storageserver/communicationmanagertest.cpp b/storage/src/tests/storageserver/communicationmanagertest.cpp index 3b72585b076..6af2733f3b9 100644 --- a/storage/src/tests/storageserver/communicationmanagertest.cpp +++ b/storage/src/tests/storageserver/communicationmanagertest.cpp @@ -29,7 +29,7 @@ struct CommunicationManagerTest : public CppUnit::TestFixture { void testRepliesAreDequeuedInFifoOrder(); void bucket_space_config_can_be_updated_live(); void unmapped_bucket_space_documentapi_request_returns_error_reply(); - void unmapped_bucket_space_for_get_documentapi_request_returns_empty_reply(); + void unmapped_bucket_space_for_get_documentapi_request_returns_error_reply(); static constexpr uint32_t MESSAGE_WAIT_TIME_SEC = 60; @@ -54,7 +54,7 @@ struct CommunicationManagerTest : public CppUnit::TestFixture { CPPUNIT_TEST(testRepliesAreDequeuedInFifoOrder); CPPUNIT_TEST(bucket_space_config_can_be_updated_live); CPPUNIT_TEST(unmapped_bucket_space_documentapi_request_returns_error_reply); - CPPUNIT_TEST(unmapped_bucket_space_for_get_documentapi_request_returns_empty_reply); + CPPUNIT_TEST(unmapped_bucket_space_for_get_documentapi_request_returns_error_reply); CPPUNIT_TEST_SUITE_END(); }; @@ -349,11 +349,7 @@ void CommunicationManagerTest::unmapped_bucket_space_documentapi_request_returns CPPUNIT_ASSERT_EQUAL(uint64_t(1), f.comm_mgr->metrics().bucketSpaceMappingFailures.getValue()); } -// Legacy DocumentAPI routing protocols will send Gets to _all_ clusters even -// if they do not contain a particular document type. By sending an empty reply -// we signal a mergeable "not found" to the sender rather than a non-mergeable -// fatal error. -void CommunicationManagerTest::unmapped_bucket_space_for_get_documentapi_request_returns_empty_reply() { +void CommunicationManagerTest::unmapped_bucket_space_for_get_documentapi_request_returns_error_reply() { CommunicationManagerFixture f; BucketspacesConfigBuilder config; @@ -363,9 +359,9 @@ void CommunicationManagerTest::unmapped_bucket_space_for_get_documentapi_request f.comm_mgr->handleMessage(f.documentapi_get_message_for_space("fluff")); CPPUNIT_ASSERT_EQUAL(size_t(1), f.reply_handler.replies.size()); auto& reply = *f.reply_handler.replies[0]; - CPPUNIT_ASSERT(!reply.hasErrors()); - auto& get_reply = dynamic_cast(reply); - CPPUNIT_ASSERT(!get_reply.hasDocument()); + CPPUNIT_ASSERT(reply.hasErrors()); + CPPUNIT_ASSERT_EQUAL(static_cast(api::ReturnCode::REJECTED), reply.getError(0).getCode()); + CPPUNIT_ASSERT_EQUAL(uint64_t(1), f.comm_mgr->metrics().bucketSpaceMappingFailures.getValue()); } } // storage diff --git a/storage/src/vespa/storage/distributor/pendingclusterstate.cpp b/storage/src/vespa/storage/distributor/pendingclusterstate.cpp index 471ce7e2b27..1996ae9d2af 100644 --- a/storage/src/vespa/storage/distributor/pendingclusterstate.cpp +++ b/storage/src/vespa/storage/distributor/pendingclusterstate.cpp @@ -233,12 +233,7 @@ PendingClusterState::onRequestBucketInfoReply(const std::shared_ptrsecond; api::ReturnCode result(reply->getResult()); - if (result == api::ReturnCode::Result::ENCODE_ERROR) { - // Handle failure to encode bucket space due to use of old storage api - // protocol. Pretend that request succeeded with no buckets returned. - // TODO remove this workaround for Vespa 7 - LOG(debug, "Got ENCODE_ERROR, pretending success with no buckets"); - } else if (!result.success()) { + if (!result.success()) { framework::MilliSecTime resendTime(_clock); resendTime += framework::MilliSecTime(100); _delayedRequests.emplace_back(resendTime, bucketSpaceAndNode); diff --git a/storage/src/vespa/storage/storageserver/communicationmanager.cpp b/storage/src/vespa/storage/storageserver/communicationmanager.cpp index 5a1c2aed113..7fb85ef0ecc 100644 --- a/storage/src/vespa/storage/storageserver/communicationmanager.cpp +++ b/storage/src/vespa/storage/storageserver/communicationmanager.cpp @@ -259,16 +259,8 @@ void CommunicationManager::fail_with_unresolvable_bucket_space( LOG(debug, "Could not map DocumentAPI message to internal bucket: %s", error_message.c_str()); MBUS_TRACE(msg->getTrace(), 6, "Communication manager: Failing message as its document type has no known bucket space mapping"); std::unique_ptr reply; - if (msg->getType() == documentapi::DocumentProtocol::MESSAGE_GETDOCUMENT) { - // HACK: to avoid breaking legacy routing of GetDocumentMessages to _all_ clusters - // regardless of them having a document type or not, we remap missing bucket spaces - // to explicit Not Found replies (empty document GetDocumentReply). - // TODO remove this workaround for Vespa 7 - reply = std::make_unique(std::shared_ptr()); - } else { - reply = std::make_unique(); - reply->addError(mbus::Error(documentapi::DocumentProtocol::ERROR_REJECTED, error_message)); - } + reply = std::make_unique(); + reply->addError(mbus::Error(documentapi::DocumentProtocol::ERROR_REJECTED, error_message)); msg->swapState(*reply); _metrics.bucketSpaceMappingFailures.inc(); _messageBusSession->reply(std::move(reply)); -- cgit v1.2.3 From e6899fbbefb64f3ab0a57e8502af3287e4d92f17 Mon Sep 17 00:00:00 2001 From: Geir Storli Date: Tue, 25 Sep 2018 13:30:37 +0000 Subject: Remove metrics for persistence provider that were deprecated and broken (not thread safe) on Vespa 6. --- .../src/vespa/persistence/spi/CMakeLists.txt | 1 - .../persistence/spi/metricpersistenceprovider.cpp | 301 --------------------- .../persistence/spi/metricpersistenceprovider.h | 65 ----- .../persistence/filestorage/filestormanager.cpp | 4 +- .../persistence/filestorage/filestormanager.h | 2 - 5 files changed, 1 insertion(+), 372 deletions(-) delete mode 100644 persistence/src/vespa/persistence/spi/metricpersistenceprovider.cpp delete mode 100644 persistence/src/vespa/persistence/spi/metricpersistenceprovider.h (limited to 'storage/src') diff --git a/persistence/src/vespa/persistence/spi/CMakeLists.txt b/persistence/src/vespa/persistence/spi/CMakeLists.txt index f9146c5a833..771da9a7453 100644 --- a/persistence/src/vespa/persistence/spi/CMakeLists.txt +++ b/persistence/src/vespa/persistence/spi/CMakeLists.txt @@ -8,7 +8,6 @@ vespa_add_library(persistence_spi OBJECT context.cpp docentry.cpp exceptions.cpp - metricpersistenceprovider.cpp partitionstate.cpp persistenceprovider.cpp read_consistency.cpp diff --git a/persistence/src/vespa/persistence/spi/metricpersistenceprovider.cpp b/persistence/src/vespa/persistence/spi/metricpersistenceprovider.cpp deleted file mode 100644 index d62285da6d3..00000000000 --- a/persistence/src/vespa/persistence/spi/metricpersistenceprovider.cpp +++ /dev/null @@ -1,301 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -#include "metricpersistenceprovider.h" -#include -#include -#include - -#include -LOG_SETUP(".persistence.spi.metrics"); - -#define PRE_PROCESS(opIndex) \ - metrics::MetricTimer metricTimer; - -#define POST_PROCESS(opIndex, result) \ - metricTimer.stop( \ - *_functionMetrics[opIndex]->_metric[result.getErrorCode()]); \ - if (result.hasError()) { \ - LOG(debug, "SPI::%s failed: %s", \ - _functionMetrics[opIndex]->getName().c_str(), \ - result.toString().c_str()); \ - } - -namespace storage { -namespace spi { - -namespace { - typedef MetricPersistenceProvider Impl; -} - -using metrics::DoubleAverageMetric; -using std::make_unique; - -Impl::ResultMetrics::~ResultMetrics() { } - -Impl::ResultMetrics::ResultMetrics(const char* opName) - : metrics::MetricSet(opName, {}, ""), - _metric(Result::ERROR_COUNT) -{ - metrics::Metric::Tags noTags; - _metric[Result::NONE] = make_unique("success", noTags, "", this); - _metric[Result::TRANSIENT_ERROR] = make_unique("transient_error", noTags, "", this); - _metric[Result::PERMANENT_ERROR] = make_unique("permanent_error", noTags, "", this); - _metric[Result::TIMESTAMP_EXISTS] = make_unique("timestamp_exists", noTags, "", this); - _metric[Result::FATAL_ERROR] = make_unique("fatal_error", noTags, "", this); - _metric[Result::RESOURCE_EXHAUSTED] = make_unique("resource_exhausted", noTags, "", this); - // Assert that the above initialized all entries in vector - for (size_t i=0; i<_metric.size(); ++i) assert(_metric[i].get()); -} - -Impl::MetricPersistenceProvider(PersistenceProvider& next) - : metrics::MetricSet("spi", {}, ""), - _next(&next), - _functionMetrics(23) -{ - defineResultMetrics(0, "initialize"); - defineResultMetrics(1, "getPartitionStates"); - defineResultMetrics(2, "listBuckets"); - defineResultMetrics(3, "setClusterState"); - defineResultMetrics(4, "setActiveState"); - defineResultMetrics(5, "getBucketInfo"); - defineResultMetrics(6, "put"); - defineResultMetrics(7, "remove"); - defineResultMetrics(8, "removeIfFound"); - defineResultMetrics(9, "removeEntry"); - defineResultMetrics(10, "update"); - defineResultMetrics(11, "flush"); - defineResultMetrics(12, "get"); - defineResultMetrics(13, "createIterator"); - defineResultMetrics(14, "iterate"); - defineResultMetrics(15, "destroyIterator"); - defineResultMetrics(16, "createBucket"); - defineResultMetrics(17, "deleteBucket"); - defineResultMetrics(18, "getModifiedBuckets"); - defineResultMetrics(19, "maintain"); - defineResultMetrics(20, "split"); - defineResultMetrics(21, "join"); - defineResultMetrics(22, "move"); -} - -Impl::~MetricPersistenceProvider() { } - -void -Impl::defineResultMetrics(int index, const char* name) -{ - _functionMetrics[index] = make_unique(name); - registerMetric(*_functionMetrics[index]); -} - -// Implementation of SPI functions - -Result -Impl::initialize() -{ - PRE_PROCESS(0); - Result r(_next->initialize()); - POST_PROCESS(0, r); - return r; -} - -PartitionStateListResult -Impl::getPartitionStates() const -{ - PRE_PROCESS(1); - PartitionStateListResult r(_next->getPartitionStates()); - POST_PROCESS(1, r); - return r; -} - -BucketIdListResult -Impl::listBuckets(BucketSpace bucketSpace, PartitionId v1) const -{ - PRE_PROCESS(2); - BucketIdListResult r(_next->listBuckets(bucketSpace, v1)); - POST_PROCESS(2, r); - return r; -} - -Result -Impl::setClusterState(BucketSpace bucketSpace, const ClusterState& v1) -{ - PRE_PROCESS(3); - Result r(_next->setClusterState(bucketSpace, v1)); - POST_PROCESS(3, r); - return r; -} - -Result -Impl::setActiveState(const Bucket& v1, BucketInfo::ActiveState v2) -{ - PRE_PROCESS(4); - Result r(_next->setActiveState(v1, v2)); - POST_PROCESS(4, r); - return r; -} - -BucketInfoResult -Impl::getBucketInfo(const Bucket& v1) const -{ - PRE_PROCESS(5); - BucketInfoResult r(_next->getBucketInfo(v1)); - POST_PROCESS(5, r); - return r; -} - -Result -Impl::put(const Bucket& v1, Timestamp v2, const DocumentSP& v3, Context& v4) -{ - PRE_PROCESS(6); - Result r(_next->put(v1, v2, v3, v4)); - POST_PROCESS(6, r); - return r; -} - -RemoveResult -Impl::remove(const Bucket& v1, Timestamp v2, const DocumentId& v3, Context& v4) -{ - PRE_PROCESS(7); - RemoveResult r(_next->remove(v1, v2, v3, v4)); - POST_PROCESS(7, r); - return r; -} - -RemoveResult -Impl::removeIfFound(const Bucket& v1, Timestamp v2, const DocumentId& v3, - Context& v4) -{ - PRE_PROCESS(8); - RemoveResult r(_next->removeIfFound(v1, v2, v3, v4)); - POST_PROCESS(8, r); - return r; -} - -Result -Impl::removeEntry(const Bucket& v1, Timestamp v2, Context& v3) -{ - PRE_PROCESS(9); - Result r(_next->removeEntry(v1, v2, v3)); - POST_PROCESS(9, r); - return r; -} - -UpdateResult -Impl::update(const Bucket& v1, Timestamp v2, const DocumentUpdateSP& v3, Context& v4) -{ - PRE_PROCESS(10); - UpdateResult r(_next->update(v1, v2, v3, v4)); - POST_PROCESS(10, r); - return r; -} - -Result -Impl::flush(const Bucket& v1, Context& v2) -{ - PRE_PROCESS(11); - Result r(_next->flush(v1, v2)); - POST_PROCESS(11, r); - return r; -} - -GetResult -Impl::get(const Bucket& v1, const document::FieldSet& v2, const DocumentId& v3, Context& v4) const -{ - PRE_PROCESS(12); - GetResult r(_next->get(v1, v2, v3, v4)); - POST_PROCESS(12, r); - return r; -} - -CreateIteratorResult -Impl::createIterator(const Bucket& v1, const document::FieldSet& v2, - const Selection& v3, IncludedVersions v4, Context& v5) -{ - PRE_PROCESS(13); - CreateIteratorResult r(_next->createIterator(v1, v2, v3, v4, v5)); - POST_PROCESS(13, r); - return r; -} - -IterateResult -Impl::iterate(IteratorId v1, uint64_t v2, Context& v3) const -{ - PRE_PROCESS(14); - IterateResult r(_next->iterate(v1, v2, v3)); - POST_PROCESS(14, r); - return r; -} - -Result -Impl::destroyIterator(IteratorId v1, Context& v2) -{ - PRE_PROCESS(15); - Result r(_next->destroyIterator(v1, v2)); - POST_PROCESS(15, r); - return r; -} - -Result -Impl::createBucket(const Bucket& v1, Context& v2) -{ - PRE_PROCESS(16); - Result r(_next->createBucket(v1, v2)); - POST_PROCESS(16, r); - return r; -} - -Result -Impl::deleteBucket(const Bucket& v1, Context& v2) -{ - PRE_PROCESS(17); - Result r(_next->deleteBucket(v1, v2)); - POST_PROCESS(17, r); - return r; -} - -BucketIdListResult -Impl::getModifiedBuckets(BucketSpace bucketSpace) const -{ - PRE_PROCESS(18); - BucketIdListResult r(_next->getModifiedBuckets(bucketSpace)); - POST_PROCESS(18, r); - return r; -} - -Result -Impl::maintain(const Bucket& v1, MaintenanceLevel v2) -{ - PRE_PROCESS(19); - Result r(_next->maintain(v1, v2)); - POST_PROCESS(19, r); - return r; -} - -Result -Impl::split(const Bucket& v1, const Bucket& v2, const Bucket& v3, Context& v4) -{ - PRE_PROCESS(20); - Result r(_next->split(v1, v2, v3, v4)); - POST_PROCESS(20, r); - return r; -} - -Result -Impl::join(const Bucket& v1, const Bucket& v2, const Bucket& v3, Context& v4) -{ - PRE_PROCESS(21); - Result r(_next->join(v1, v2, v3, v4)); - POST_PROCESS(21, r); - return r; -} - -Result -Impl::move(const Bucket& v1, PartitionId v2, Context& v3) -{ - PRE_PROCESS(22); - Result r(_next->move(v1, v2, v3)); - POST_PROCESS(22, r); - return r; -} - -} // spi -} // storage diff --git a/persistence/src/vespa/persistence/spi/metricpersistenceprovider.h b/persistence/src/vespa/persistence/spi/metricpersistenceprovider.h deleted file mode 100644 index b804fd21550..00000000000 --- a/persistence/src/vespa/persistence/spi/metricpersistenceprovider.h +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -/** - * SPI implementation wrapper to add metrics. - */ - -#pragma once - -#include "persistenceprovider.h" -#include -#include - -namespace storage::spi { - -class MetricPersistenceProvider : public PersistenceProvider, - public metrics::MetricSet -{ - struct ResultMetrics : public metrics::MetricSet { - std::vector > _metric; - - ResultMetrics(const char* opName); - ~ResultMetrics(); - }; - PersistenceProvider* _next; - std::vector> _functionMetrics; - -public: - typedef std::unique_ptr UP; - - MetricPersistenceProvider(PersistenceProvider&); - ~MetricPersistenceProvider(); - - void setNextProvider(PersistenceProvider& p) { _next = &p; } - - // Implementation of the PersistenceProvider API - Result initialize() override; - PartitionStateListResult getPartitionStates() const override; - BucketIdListResult listBuckets(BucketSpace bucketSpace, PartitionId) const override; - Result setClusterState(BucketSpace bucketSpace, const ClusterState&) override; - Result setActiveState(const Bucket&, BucketInfo::ActiveState) override; - BucketInfoResult getBucketInfo(const Bucket&) const override; - Result put(const Bucket&, Timestamp, const DocumentSP&, Context&) override; - RemoveResult remove(const Bucket&, Timestamp, const DocumentId&, Context&) override; - RemoveResult removeIfFound(const Bucket&, Timestamp, const DocumentId&, Context&) override; - Result removeEntry(const Bucket&, Timestamp, Context&) override; - UpdateResult update(const Bucket&, Timestamp, const DocumentUpdateSP&, Context&) override; - Result flush(const Bucket&, Context&) override; - GetResult get(const Bucket&, const document::FieldSet&, const DocumentId&, Context&) const override; - CreateIteratorResult createIterator(const Bucket&, const document::FieldSet&, const Selection&, - IncludedVersions, Context&) override; - IterateResult iterate(IteratorId, uint64_t maxByteSize, Context&) const override; - Result destroyIterator(IteratorId, Context&) override; - Result createBucket(const Bucket&, Context&) override; - Result deleteBucket(const Bucket&, Context&) override; - BucketIdListResult getModifiedBuckets(BucketSpace bucketSpace) const override; - Result maintain(const Bucket&, MaintenanceLevel level) override; - Result split(const Bucket& source, const Bucket& target1, const Bucket& target2, Context&) override; - Result join(const Bucket& source1, const Bucket& source2, const Bucket& target, Context&) override; - Result move(const Bucket&, PartitionId target, Context&) override; - -private: - void defineResultMetrics(int index, const char* name); -}; - -} - diff --git a/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp b/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp index e7323d07480..76e04852178 100644 --- a/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp +++ b/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp @@ -34,8 +34,7 @@ FileStorManager(const config::ConfigUri & configUri, const spi::PartitionStateLi _partitions(partitions), _providerCore(provider), _providerErrorWrapper(_providerCore), - _providerMetric(new spi::MetricPersistenceProvider(_providerErrorWrapper)), - _provider(_providerMetric.get()), + _provider(&_providerErrorWrapper), _bucketIdFactory(_component.getBucketIdFactory()), _configUri(configUri), _disks(), @@ -47,7 +46,6 @@ FileStorManager(const config::ConfigUri & configUri, const spi::PartitionStateLi _threadMonitor(), _closed(false) { - _metrics->registerMetric(*_providerMetric), _configFetcher.subscribe(_configUri.getConfigId(), this); _configFetcher.start(); _component.registerMetric(*_metrics); diff --git a/storage/src/vespa/storage/persistence/filestorage/filestormanager.h b/storage/src/vespa/storage/persistence/filestorage/filestormanager.h index 5c52e6c6a23..8c7e206237b 100644 --- a/storage/src/vespa/storage/persistence/filestorage/filestormanager.h +++ b/storage/src/vespa/storage/persistence/filestorage/filestormanager.h @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -56,7 +55,6 @@ class FileStorManager : public StorageLinkQueued, const spi::PartitionStateList& _partitions; spi::PersistenceProvider& _providerCore; ProviderErrorWrapper _providerErrorWrapper; - spi::MetricPersistenceProvider::UP _providerMetric; spi::PersistenceProvider* _provider; const document::BucketIdFactory& _bucketIdFactory; -- cgit v1.2.3