diff options
-rw-r--r-- | searchcore/src/tests/proton/attribute/attribute_test.cpp | 14 | ||||
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp | 4 |
2 files changed, 17 insertions, 1 deletions
diff --git a/searchcore/src/tests/proton/attribute/attribute_test.cpp b/searchcore/src/tests/proton/attribute/attribute_test.cpp index 41de6827244..8711a21e5e6 100644 --- a/searchcore/src/tests/proton/attribute/attribute_test.cpp +++ b/searchcore/src/tests/proton/attribute/attribute_test.cpp @@ -192,6 +192,11 @@ public: void assertExecuteHistory(std::vector<uint32_t> expExecuteHistory) { EXPECT_EQ(expExecuteHistory, _attributeFieldWriter->getExecuteHistory()); } + SerialNum test_force_commit(AttributeVector &attr, SerialNum serialNum) { + commit(serialNum); + _attributeFieldWriter->sync(); + return attr.getStatus().getLastSyncToken(); + } }; AttributeWriterTest::~AttributeWriterTest() = default; @@ -975,6 +980,15 @@ TEST_F(AttributeWriterTest, forceCommit_clears_search_cache_in_imported_attribut EXPECT_EQ(0u, _mgr->getImportedAttributes()->get("imported_b")->getSearchCache()->size()); } +TEST_F(AttributeWriterTest, ignores_force_commit_serial_not_greater_than_create_serial) +{ + auto a1 = addAttribute("a1"); + a1->setCreateSerialNum(100); + EXPECT_EQ(0u, test_force_commit(*a1, 50u)); + EXPECT_EQ(0u, test_force_commit(*a1, 100u)); + EXPECT_EQ(150u, test_force_commit(*a1, 150u)); +} + class StructWriterTestBase : public AttributeWriterTest { public: DocumentType _type; diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp index a49b27caf36..13695b969bf 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp +++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp @@ -212,7 +212,9 @@ void applyCommit(SerialNum serialNum, AttributeWriter::OnWriteDoneType , AttributeVector &attr) { if (attr.getStatus().getLastSyncToken() <= serialNum) { - attr.commit(serialNum, serialNum); + if (serialNum > attr.getCreateSerialNum()) { + attr.commit(serialNum, serialNum); + } } } |