summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_test.cpp14
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp4
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);
+ }
}
}