summaryrefslogtreecommitdiffstats
path: root/documentapi
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@oath.com>2018-03-16 22:03:09 +0100
committerHenning Baldersheim <balder@oath.com>2018-03-19 09:59:20 +0100
commit9335569e415a04beaab3ebcb62e02faf37be7ad3 (patch)
tree0468dce784c03994f0de8e70a5ad9be3da109dbe /documentapi
parentf52a07e96ccf1baf2b4bbfa148bff540ba35357d (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')
-rw-r--r--documentapi/src/tests/policies/policies_test.cpp23
-rw-r--r--documentapi/src/vespa/documentapi/documentapi.h1
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/documentprotocol.h4
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/CMakeLists.txt1
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/multioperationmessage.cpp128
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/multioperationmessage.h66
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/writedocumentreply.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.cpp14
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/storagepolicy.cpp4
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routablefactories50.cpp45
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routablefactories50.h13
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;