diff options
author | Henning Baldersheim <balder@oath.com> | 2018-03-16 22:03:09 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@oath.com> | 2018-03-19 09:59:20 +0100 |
commit | 9335569e415a04beaab3ebcb62e02faf37be7ad3 (patch) | |
tree | 0468dce784c03994f0de8e70a5ad9be3da109dbe /documentapi | |
parent | f52a07e96ccf1baf2b4bbfa148bff540ba35357d (diff) |
Remove MultiOperation
Conflicts:
storage/src/tests/persistence/filestorage/filestormanagertest.cpp
storage/src/vespa/storage/persistence/persistencethread.cpp
Fix merge conflict.
Diffstat (limited to 'documentapi')
11 files changed, 3 insertions, 298 deletions
diff --git a/documentapi/src/tests/policies/policies_test.cpp b/documentapi/src/tests/policies/policies_test.cpp index cc598aef786..bffbefb6ff1 100644 --- a/documentapi/src/tests/policies/policies_test.cpp +++ b/documentapi/src/tests/policies/policies_test.cpp @@ -617,29 +617,6 @@ Test::testDocumentRouteSelector() frame.setMessage(std::move(put)); EXPECT_TRUE(frame.testSelect( StringList().add("foo"))); - { - vdslib::OperationList opList; - - DocumentId id("doc:scheme:"); - Document::UP doc(new Document(*_docType, id)); - opList.addPut(std::move(doc)); - - document::BucketIdFactory factory; - put = frame.setMessage(MultiOperationMessage::create(_repo, factory.getBucketId(id), opList)); - EXPECT_TRUE(frame.testSelect(StringList().add("foo"))); - } - - { - vdslib::OperationList opList; - DocumentId id("doc:scheme:"); - Document::UP doc(new Document(*_repo->getDocumentType("other"), id)); - opList.addPut(std::move(doc)); - - document::BucketIdFactory factory; - put = frame.setMessage(MultiOperationMessage::create(_repo, factory.getBucketId(id), opList)); - EXPECT_TRUE(frame.testSelect(StringList().add("bar"))); - } - frame.setMessage(mbus::Message::UP(new RemoveDocumentMessage(DocumentId("doc:scheme:")))); EXPECT_TRUE(frame.testSelect(StringList().add("foo").add("bar"))); diff --git a/documentapi/src/vespa/documentapi/documentapi.h b/documentapi/src/vespa/documentapi/documentapi.h index a64fbc866d8..dff4125e624 100644 --- a/documentapi/src/vespa/documentapi/documentapi.h +++ b/documentapi/src/vespa/documentapi/documentapi.h @@ -15,7 +15,6 @@ #include <vespa/documentapi/messagebus/messages/updatedocumentmessage.h> #include <vespa/documentapi/messagebus/messages/searchresultmessage.h> #include <vespa/documentapi/messagebus/messages/visitor.h> -#include <vespa/documentapi/messagebus/messages/multioperationmessage.h> #include <vespa/documentapi/messagebus/messages/documentsummarymessage.h> #include <vespa/documentapi/messagebus/messages/wrongdistributionreply.h> #include <vespa/documentapi/messagebus/messages/getbucketlistmessage.h> diff --git a/documentapi/src/vespa/documentapi/messagebus/documentprotocol.h b/documentapi/src/vespa/documentapi/messagebus/documentprotocol.h index c3417d85197..aea3f390c71 100644 --- a/documentapi/src/vespa/documentapi/messagebus/documentprotocol.h +++ b/documentapi/src/vespa/documentapi/messagebus/documentprotocol.h @@ -59,7 +59,7 @@ public: MESSAGE_DESTROYVISITOR = DOCUMENT_MESSAGE + 8, MESSAGE_VISITORINFO = DOCUMENT_MESSAGE + 9, MESSAGE_SEARCHRESULT = DOCUMENT_MESSAGE + 11, - MESSAGE_MULTIOPERATION = DOCUMENT_MESSAGE + 13, + //MESSAGE_MULTIOPERATION = DOCUMENT_MESSAGE + 13, MESSAGE_DOCUMENTSUMMARY = DOCUMENT_MESSAGE + 14, MESSAGE_MAPVISITOR = DOCUMENT_MESSAGE + 15, MESSAGE_GETBUCKETSTATE = DOCUMENT_MESSAGE + 18, @@ -83,7 +83,7 @@ public: REPLY_DESTROYVISITOR = DOCUMENT_REPLY + 8, REPLY_VISITORINFO = DOCUMENT_REPLY + 9, REPLY_SEARCHRESULT = DOCUMENT_REPLY + 11, - REPLY_MULTIOPERATION = DOCUMENT_REPLY + 13, + //REPLY_MULTIOPERATION = DOCUMENT_REPLY + 13, REPLY_DOCUMENTSUMMARY = DOCUMENT_REPLY + 14, REPLY_MAPVISITOR = DOCUMENT_REPLY + 15, REPLY_GETBUCKETSTATE = DOCUMENT_REPLY + 18, diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/CMakeLists.txt b/documentapi/src/vespa/documentapi/messagebus/messages/CMakeLists.txt index f55e7782901..3fa7e6086e9 100644 --- a/documentapi/src/vespa/documentapi/messagebus/messages/CMakeLists.txt +++ b/documentapi/src/vespa/documentapi/messagebus/messages/CMakeLists.txt @@ -18,7 +18,6 @@ vespa_add_library(documentapi_documentapimessages OBJECT getbucketstatereply.cpp getdocumentmessage.cpp getdocumentreply.cpp - multioperationmessage.cpp putdocumentmessage.cpp queryresultmessage.cpp removedocumentmessage.cpp diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/multioperationmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/multioperationmessage.cpp deleted file mode 100644 index 0512ef1e76e..00000000000 --- a/documentapi/src/vespa/documentapi/messagebus/messages/multioperationmessage.cpp +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -#include "multioperationmessage.h" -#include <vespa/vdslib/container/mutabledocumentlist.h> -#include <vespa/vespalib/util/exceptions.h> -#include <vespa/document/update/documentupdate.h> -#include <vespa/document/bucket/bucketidfactory.h> - -namespace documentapi { - -MultiOperationMessage::MultiOperationMessage(const document::DocumentTypeRepo::SP & repo, const document::BucketId& bucketId) : - VisitorMessage(), - _bucketId(bucketId), - _buffer(0), - _operations(repo, 0, 0), - _keepTimeStamps(false) -{ -} - -MultiOperationMessage::MultiOperationMessage(const document::DocumentTypeRepo::SP & repo, const document::BucketId& bucketId, int bufferSize) : - VisitorMessage(), - _bucketId(bucketId), - _buffer(bufferSize), - _operations(repo, &_buffer[0], _buffer.size(), false), - _keepTimeStamps(false) -{ -} - - -MultiOperationMessage::MultiOperationMessage(const document::DocumentTypeRepo::SP & repo, - const document::BucketId& bucketId, - const std::vector<char> &buffer, - bool timeStamps) : - VisitorMessage(), - _bucketId(bucketId), - _operations(repo, 0, 0), - _keepTimeStamps(timeStamps) -{ - setOperations(repo, buffer); -} - -MultiOperationMessage::MultiOperationMessage(const document::BucketId& bucketId, - vdslib::DocumentList &operations, - bool timeStamps) : - VisitorMessage(), - _bucketId(bucketId), - _buffer(), - _operations(operations.getTypeRepo(), 0, 0), - _keepTimeStamps(timeStamps) -{ - _buffer.resize(operations.getBufferSize()); - memcpy(&_buffer[0], operations.getBuffer(), _buffer.size()); - _operations = vdslib::DocumentList(operations.getTypeRepo(), &_buffer[0], _buffer.size(), true); -} - -MultiOperationMessage::~MultiOperationMessage() { -} - -void -MultiOperationMessage::setOperations(const document::DocumentTypeRepo::SP & repo, const std::vector<char> &buffer) -{ - _buffer = buffer; - if (_buffer.size() > 0) { - _operations = vdslib::DocumentList(repo, &_buffer[0], _buffer.size(), true); - } - verifyBucketId(); -} - -void -MultiOperationMessage::setOperations(vdslib::DocumentList &operations) -{ - if (&_buffer[0] == operations.getBuffer()) { - _buffer.resize(operations.getBufferSize()); - } else { - _buffer.resize(operations.getBufferSize()); - memcpy(&_buffer[0], operations.getBuffer(), _buffer.size()); - } - _operations = vdslib::DocumentList(operations.getTypeRepo(), &_buffer[0], _buffer.size(), true); - verifyBucketId(); -} - -void -MultiOperationMessage::verifyBucketId() const { - document::BucketIdFactory fac; - - for (vdslib::DocumentList::const_iterator iter = _operations.begin(); - iter != _operations.end(); - iter++) { - document::DocumentId docId = iter->getDocumentId(); - document::BucketId bucketId = fac.getBucketId(docId); - bucketId.setUsedBits(_bucketId.getUsedBits()); - if (bucketId != _bucketId) { - throw vespalib::IllegalArgumentException(vespalib::make_string("Operations added to a MultiOperationMessage must belong to the specified bucketId. Document %s with bucket id %s does not match bucket id %s", docId.toString().c_str(), bucketId.toString().c_str(), _bucketId.toString().c_str())); - } - } -} - -mbus::Message::UP -MultiOperationMessage::create(const document::DocumentTypeRepo::SP & repo, const document::BucketId& bucketId, const vdslib::OperationList &opl) { - std::unique_ptr<MultiOperationMessage> msg( - new MultiOperationMessage(repo, bucketId, opl.getRequiredBufferSize())); - std::vector<char> &buf = msg->getBuffer(); - vdslib::MutableDocumentList mdl(repo, &(buf[0]), buf.size()); - if (! mdl.addOperationList(opl)) { - abort(); - } - msg->setOperations(mdl); - return mbus::Message::UP(msg.release()); -} - -uint32_t -MultiOperationMessage::getApproxSize() const -{ - return _operations.getBufferSize(); -} - -DocumentReply::UP -MultiOperationMessage::doCreateReply() const -{ - return DocumentReply::UP(new VisitorReply(DocumentProtocol::REPLY_MULTIOPERATION)); -} - -uint32_t MultiOperationMessage::getType() const -{ - return DocumentProtocol::MESSAGE_MULTIOPERATION; -} - -} diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/multioperationmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/multioperationmessage.h deleted file mode 100644 index 7a8f0833f0c..00000000000 --- a/documentapi/src/vespa/documentapi/messagebus/messages/multioperationmessage.h +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#pragma once - -#include "visitor.h" -#include "documentreply.h" -#include <vespa/vdslib/container/parameters.h> -#include <vespa/vdslib/container/documentlist.h> -#include <vespa/vdslib/container/operationlist.h> -#include <vespa/document/bucket/bucketid.h> -#include <vespa/documentapi/messagebus/documentprotocol.h> - -namespace documentapi { - -/** - * @class MultiOperationMessage - * @ingroup message - * - * @brief Encapsulates a set of operations (PUT, REMOVE, UPDATE). - */ -class MultiOperationMessage : public VisitorMessage { -private: - document::BucketId _bucketId; - std::vector<char> _buffer; - vdslib::DocumentList _operations; - bool _keepTimeStamps; - -protected: - DocumentReply::UP doCreateReply() const override; - -public: - typedef std::unique_ptr<MultiOperationMessage> UP; - - MultiOperationMessage(const document::DocumentTypeRepo::SP & repo, const document::BucketId& bucketId); - MultiOperationMessage(const document::DocumentTypeRepo::SP & repo, const document::BucketId& bucketId, int bufferSize); - MultiOperationMessage(const document::DocumentTypeRepo::SP & repo, const document::BucketId& bucketId, - const std::vector<char>& buffer, bool keepTimeStamps = false); - MultiOperationMessage(const document::BucketId& bucketId, vdslib::DocumentList& docList, bool keepTimeStamps = false); - ~MultiOperationMessage(); - - static mbus::Message::UP create(const document::DocumentTypeRepo::SP & repo, const document::BucketId& bucketId, const vdslib::OperationList& operations); - - std::vector<char>& getBuffer() { return _buffer; } - const std::vector<char>& getBuffer() const { return _buffer; } - - void setOperations(const document::DocumentTypeRepo::SP & repo, const std::vector<char>& buffer); - void setOperations(vdslib::DocumentList& operations); - const vdslib::DocumentList& getOperations() const { return _operations; } - - void serialize(document::ByteBuffer& buf) const; - - uint32_t getApproxSize() const override; - - uint32_t getType() const override; - const document::BucketId& getBucketId() const { return _bucketId; } - - bool keepTimeStamps() const { return _keepTimeStamps;} - void keepTimeStamps(bool b) { _keepTimeStamps = b;} - - string toString() const override { return "multioperationmessage"; } - -private: - void verifyBucketId() const; -}; - -} - diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/writedocumentreply.h b/documentapi/src/vespa/documentapi/messagebus/messages/writedocumentreply.h index 01730bde359..f8c5c6335d5 100644 --- a/documentapi/src/vespa/documentapi/messagebus/messages/writedocumentreply.h +++ b/documentapi/src/vespa/documentapi/messagebus/messages/writedocumentreply.h @@ -7,7 +7,7 @@ namespace documentapi { /** * This reply class is used by operations that perform writes to VDS/search, - * that is: Put, Remove, Update, MultiOperation. + * that is: Put, Remove, Update. */ class WriteDocumentReply : public DocumentAcceptedReply { private: diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.cpp index c763723ada1..42120b8052a 100644 --- a/documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.cpp +++ b/documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.cpp @@ -5,7 +5,6 @@ #include <vespa/document/select/parser.h> #include <vespa/documentapi/messagebus/documentprotocol.h> #include <vespa/documentapi/messagebus/messages/batchdocumentupdatemessage.h> -#include <vespa/documentapi/messagebus/messages/multioperationmessage.h> #include <vespa/documentapi/messagebus/messages/putdocumentmessage.h> #include <vespa/documentapi/messagebus/messages/updatedocumentmessage.h> #include <vespa/documentapi/messagebus/messages/documentignoredreply.h> @@ -140,19 +139,6 @@ DocumentRouteSelectorPolicy::select(mbus::RoutingContext &context, const vespali } } - case DocumentProtocol::MESSAGE_MULTIOPERATION: - { - const MultiOperationMessage& mom = static_cast<const MultiOperationMessage&>(msg); - for (vdslib::DocumentList::const_iterator iter = mom.getOperations().begin(); - iter != mom.getOperations().end(); - iter++) { - document::Document::UP doc = iter->getDocument(); - if (it->second->contains(*doc) == Result::False) { - return false; - } - } - return true; - } case DocumentProtocol::MESSAGE_BATCHDOCUMENTUPDATE: { const BatchDocumentUpdateMessage& mom = static_cast<const BatchDocumentUpdateMessage&>(msg); diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/storagepolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/storagepolicy.cpp index b7b451e8ddf..723c6fc836a 100644 --- a/documentapi/src/vespa/documentapi/messagebus/policies/storagepolicy.cpp +++ b/documentapi/src/vespa/documentapi/messagebus/policies/storagepolicy.cpp @@ -134,10 +134,6 @@ StoragePolicy::doSelect(mbus::RoutingContext &context) id = _bucketIdFactory.getBucketId(static_cast<const UpdateDocumentMessage&>(msg).getDocumentUpdate().getId()); break; - case DocumentProtocol::MESSAGE_MULTIOPERATION: - id = (static_cast<const MultiOperationMessage&>(msg)).getBucketId(); - break; - case DocumentProtocol::MESSAGE_STATBUCKET: id = static_cast<const StatBucketMessage&>(msg).getBucketId(); break; diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories50.cpp b/documentapi/src/vespa/documentapi/messagebus/routablefactories50.cpp index 7eb227cd382..b5a4a8306b1 100644 --- a/documentapi/src/vespa/documentapi/messagebus/routablefactories50.cpp +++ b/documentapi/src/vespa/documentapi/messagebus/routablefactories50.cpp @@ -618,51 +618,6 @@ RoutableFactories50::MapVisitorReplyFactory::doEncode(const DocumentReply &obj, return true; } -DocumentMessage::UP -RoutableFactories50::MultiOperationMessageFactory::doDecode(document::ByteBuffer &buf) const -{ - int64_t bucketId = decodeLong(buf); - - int32_t len = decodeInt(buf); - std::vector<char> tmp(len); - buf.getBytes(&tmp[0], len); - - DocumentMessage::UP ret(new MultiOperationMessage(_repo, document::BucketId(bucketId), tmp, decodeBoolean(buf))); - return ret; -} - -bool -RoutableFactories50::MultiOperationMessageFactory::doEncode(const DocumentMessage &obj, vespalib::GrowableByteBuffer &buf) const -{ - const MultiOperationMessage &msg = static_cast<const MultiOperationMessage&>(obj); - buf.putLong(msg.getBucketId().getRawId()); - - uint64_t docBlockSize = msg.getOperations().spaceNeeded(); - buf.putInt(docBlockSize); - char* pos = buf.allocate(docBlockSize); - vdslib::DocumentList copy(msg.getOperations(), pos, docBlockSize); - - buf.putBoolean(msg.keepTimeStamps()); - - return true; -} - -DocumentReply::UP -RoutableFactories50::MultiOperationReplyFactory::doDecode(document::ByteBuffer &buf) const -{ - WriteDocumentReply* reply = new WriteDocumentReply(DocumentProtocol::REPLY_MULTIOPERATION); - reply->setHighestModificationTimestamp(decodeLong(buf)); - return DocumentReply::UP(reply); -} - -bool -RoutableFactories50::MultiOperationReplyFactory::doEncode(const DocumentReply &obj, vespalib::GrowableByteBuffer &buf) const -{ - const WriteDocumentReply& reply = (const WriteDocumentReply&)obj; - buf.putLong(reply.getHighestModificationTimestamp()); - return true; -} - void RoutableFactories50::PutDocumentMessageFactory::decodeInto(PutDocumentMessage & msg, document::ByteBuffer & buf) const { msg.setDocument(make_shared<document::Document>(_repo, buf)); diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories50.h b/documentapi/src/vespa/documentapi/messagebus/routablefactories50.h index 4ca069f3f9a..37a7f6d7e61 100644 --- a/documentapi/src/vespa/documentapi/messagebus/routablefactories50.h +++ b/documentapi/src/vespa/documentapi/messagebus/routablefactories50.h @@ -280,19 +280,6 @@ public: DocumentReply::UP doDecode(document::ByteBuffer &buf) const override; bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override; }; - class MultiOperationMessageFactory : public DocumentMessageFactory { - document::DocumentTypeRepo::SP _repo; - protected: - DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override; - bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override; - public: - MultiOperationMessageFactory(const document::DocumentTypeRepo::SP &r) : _repo(r) {} - }; - class MultiOperationReplyFactory : public DocumentReplyFactory { - protected: - DocumentReply::UP doDecode(document::ByteBuffer &buf) const override; - bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override; - }; class PutDocumentMessageFactory : public DocumentMessageFactory { protected: const document::DocumentTypeRepo &_repo; |