diff options
author | Henning Baldersheim <balder@oath.com> | 2018-06-07 07:34:57 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@oath.com> | 2018-06-12 22:50:28 +0200 |
commit | 6c04171843d0d9ebc99f6b91303a76c62eb2aef4 (patch) | |
tree | 338ffa8e190c93ef4abab1ebd1ac79036c74cfd2 /documentapi | |
parent | 047ea0bed80966554e29a1db1b35361d946a3866 (diff) |
1 - Use a backing buffer for the DocumentUpdate that always is source of truth.
2 - Use this buffer for re-serialization.
3 - Make deserialization lazy where possible.
Currently lazy on replay and when arriving over the storageapi.
Still needs to eager over documentapi.
4 - Deserialize eagerly in the persistence thread since those are plentyfull and not bottlenecked,
instead of in the single master thread.
Use real repo.
Diffstat (limited to 'documentapi')
4 files changed, 11 insertions, 12 deletions
diff --git a/documentapi/src/tests/messagebus/messagebus_test.cpp b/documentapi/src/tests/messagebus/messagebus_test.cpp index cd2820d8c05..dff3f3f1bac 100644 --- a/documentapi/src/tests/messagebus/messagebus_test.cpp +++ b/documentapi/src/tests/messagebus/messagebus_test.cpp @@ -59,7 +59,7 @@ void Test::testMessage() { // Test one update. UpdateDocumentMessage upd1( document::DocumentUpdate::SP( - new document::DocumentUpdate(*testdoc_type, + new document::DocumentUpdate(*_repo, *testdoc_type, document::DocumentId(document::DocIdString( "testdoc", "testme1"))))); @@ -80,7 +80,7 @@ void Test::testMessage() { // Compare to another. UpdateDocumentMessage upd2( document::DocumentUpdate::SP( - new document::DocumentUpdate(*testdoc_type, + new document::DocumentUpdate(*_repo, *testdoc_type, document::DocumentId(document::DocIdString( "testdoc", "testme2"))))); EXPECT_TRUE(!(upd1.getDocumentUpdate().getId() == upd2.getDocumentUpdate().getId())); diff --git a/documentapi/src/tests/messages/messages50test.cpp b/documentapi/src/tests/messages/messages50test.cpp index 48728ff6057..6705277d5c3 100644 --- a/documentapi/src/tests/messages/messages50test.cpp +++ b/documentapi/src/tests/messages/messages50test.cpp @@ -672,8 +672,7 @@ Messages50Test::testUpdateDocumentMessage() { const DocumentTypeRepo &repo = getTypeRepo(); const document::DocumentType &docType = *repo.getDocumentType("testdoc"); - document::DocumentUpdate::SP - upd(new document::DocumentUpdate(docType, document::DocumentId("doc:scheme:"))); + auto upd(std::make_shared<document::DocumentUpdate>(repo, docType, document::DocumentId("doc:scheme:"))); upd->addFieldPathUpdate(document::FieldPathUpdate::CP( new document::RemoveFieldPathUpdate("intfield", "testdoc.intfield > 0"))); UpdateDocumentMessage msg(upd); @@ -682,7 +681,7 @@ Messages50Test::testUpdateDocumentMessage() EXPECT_EQUAL(MESSAGE_BASE_LENGTH + 89u, serialize("UpdateDocumentMessage", msg)); for (uint32_t lang = 0; lang < NUM_LANGUAGES; ++lang) { mbus::Routable::UP obj = deserialize("UpdateDocumentMessage", DocumentProtocol::MESSAGE_UPDATEDOCUMENT, lang); - if (EXPECT_TRUE(obj.get() != NULL)) { + if (EXPECT_TRUE(obj.get() != nullptr)) { UpdateDocumentMessage &ref = static_cast<UpdateDocumentMessage&>(*obj); EXPECT_EQUAL(*upd, ref.getDocumentUpdate()); EXPECT_EQUAL(666u, ref.getOldTimestamp()); @@ -703,21 +702,21 @@ Messages50Test::testBatchDocumentUpdateMessage() { document::DocumentUpdate::SP upd; - upd.reset(new document::DocumentUpdate(docType, document::DocumentId("userdoc:footype:1234:foo"))); + upd.reset(new document::DocumentUpdate(repo, docType, document::DocumentId("userdoc:footype:1234:foo"))); upd->addFieldPathUpdate(document::FieldPathUpdate::CP( new document::RemoveFieldPathUpdate("intfield", "testdoc.intfield > 0"))); msg.addUpdate(upd); } { document::DocumentUpdate::SP upd; - upd.reset(new document::DocumentUpdate(docType, document::DocumentId("orderdoc(32,17):footype:1234:123456789:foo"))); + upd.reset(new document::DocumentUpdate(repo, docType, document::DocumentId("orderdoc(32,17):footype:1234:123456789:foo"))); upd->addFieldPathUpdate(document::FieldPathUpdate::CP( new document::RemoveFieldPathUpdate("intfield", "testdoc.intfield > 0"))); msg.addUpdate(upd); } try { document::DocumentUpdate::SP upd; - upd.reset(new document::DocumentUpdate(docType, document::DocumentId("userdoc:footype:5678:foo"))); + upd.reset(new document::DocumentUpdate(repo, docType, document::DocumentId("userdoc:footype:5678:foo"))); upd->addFieldPathUpdate(document::FieldPathUpdate::CP( new document::RemoveFieldPathUpdate("intfield", "testdoc.intfield > 0"))); msg.addUpdate(upd); @@ -726,7 +725,7 @@ Messages50Test::testBatchDocumentUpdateMessage() } try { document::DocumentUpdate::SP upd; - upd.reset(new document::DocumentUpdate(docType, document::DocumentId("groupdoc:footype:hable:foo"))); + upd.reset(new document::DocumentUpdate(repo, docType, document::DocumentId("groupdoc:footype:hable:foo"))); upd->addFieldPathUpdate(document::FieldPathUpdate::CP( new document::RemoveFieldPathUpdate("intfield", "testdoc.intfield > 0"))); msg.addUpdate(upd); diff --git a/documentapi/src/tests/messages/messages52test.cpp b/documentapi/src/tests/messages/messages52test.cpp index eaf8bbec8c4..8f5d7381500 100644 --- a/documentapi/src/tests/messages/messages52test.cpp +++ b/documentapi/src/tests/messages/messages52test.cpp @@ -91,7 +91,7 @@ Messages52Test::testUpdateDocumentMessage() const DocumentTypeRepo & repo = getTypeRepo(); const document::DocumentType & docType = *repo.getDocumentType("testdoc"); - auto docUpdate = std::make_shared<document::DocumentUpdate>(docType, document::DocumentId("doc:scheme:")); + auto docUpdate = std::make_shared<document::DocumentUpdate>(repo, docType, document::DocumentId("doc:scheme:")); docUpdate->addFieldPathUpdate(document::FieldPathUpdate::CP( new document::RemoveFieldPathUpdate("intfield", "testdoc.intfield > 0"))); diff --git a/documentapi/src/tests/policies/policies_test.cpp b/documentapi/src/tests/policies/policies_test.cpp index 7852136dfc7..3e804c30415 100644 --- a/documentapi/src/tests/policies/policies_test.cpp +++ b/documentapi/src/tests/policies/policies_test.cpp @@ -621,7 +621,7 @@ Test::testDocumentRouteSelector() EXPECT_TRUE(frame.testSelect(StringList().add("foo").add("bar"))); frame.setMessage(make_unique<UpdateDocumentMessage>( - make_shared<DocumentUpdate>(*_docType, DocumentId("doc:scheme:")))); + make_shared<DocumentUpdate>(*_repo, *_docType, DocumentId("doc:scheme:")))); EXPECT_TRUE(frame.testSelect(StringList().add("foo"))); put = make_unique<PutDocumentMessage>(make_shared<Document>(*_docType, DocumentId("doc:scheme:"))); @@ -650,7 +650,7 @@ Test::testDocumentRouteSelectorIgnore() EXPECT_EQUAL(0u, reply->getNumErrors()); frame.setMessage(make_unique<UpdateDocumentMessage>( - make_shared<DocumentUpdate>(*_docType, DocumentId("doc:scheme:")))); + make_shared<DocumentUpdate>(*_repo, *_docType, DocumentId("doc:scheme:")))); EXPECT_TRUE(frame.testSelect(StringList().add("docproc/cluster.foo"))); } |