@@ -87,7 +87,8 @@ class RollbackTest : public EventuallyPersistentStoreTest,
8787 // Test - rollback to seqno of item_v1 and verify that the previous value
8888 // of the item has been restored.
8989 store->setVBucketState (vbid, vbucket_state_replica, false );
90- ASSERT_EQ (ENGINE_SUCCESS, store->rollback (vbid, item_v1.getBySeqno ()));
90+ ASSERT_EQ (TaskStatus::Complete,
91+ store->rollback (vbid, item_v1.getBySeqno ()));
9192 auto result = store->public_getInternal (a, vbid, /* cookie*/ nullptr ,
9293 vbucket_state_replica, {});
9394 ASSERT_EQ (ENGINE_SUCCESS, result.getStatus ());
@@ -122,7 +123,8 @@ class RollbackTest : public EventuallyPersistentStoreTest,
122123 // Test - rollback to seqno of item_v1 and verify that the previous value
123124 // of the item has been restored.
124125 store->setVBucketState (vbid, vbucket_state_replica, false );
125- ASSERT_EQ (ENGINE_SUCCESS, store->rollback (vbid, item_v1.getBySeqno ()));
126+ ASSERT_EQ (TaskStatus::Complete,
127+ store->rollback (vbid, item_v1.getBySeqno ()));
126128 ASSERT_EQ (item_v1.getBySeqno (), store->getVBucket (vbid)->getHighSeqno ());
127129
128130 // a should have the value of 'old'
@@ -181,7 +183,7 @@ class RollbackTest : public EventuallyPersistentStoreTest,
181183
182184 // Rollback should succeed, but rollback to 0
183185 store->setVBucketState (vbid, vbucket_state_replica, false );
184- EXPECT_EQ (ENGINE_SUCCESS , store->rollback (vbid, rollback));
186+ EXPECT_EQ (TaskStatus::Complete , store->rollback (vbid, rollback));
185187
186188 // These keys should be gone after the rollback
187189 for (int i = 0 ; i < 3 ; i++) {
@@ -258,7 +260,7 @@ TEST_P(RollbackTest, RollbackToMiddleOfAnUnPersistedSnapshot) {
258260
259261 /* do rollback */
260262 store->setVBucketState (vbid, vbucket_state_replica, false );
261- EXPECT_EQ (ENGINE_SUCCESS , store->rollback (vbid, rollbackReqSeqno));
263+ EXPECT_EQ (TaskStatus::Complete , store->rollback (vbid, rollbackReqSeqno));
262264
263265 /* confirm that we have rolled back to the disk snapshot */
264266 EXPECT_EQ (rollback_item.getBySeqno (),
@@ -284,8 +286,8 @@ TEST_P(RollbackTest, MB21784) {
284286 // Make the vbucket a replica
285287 store->setVBucketState (vbid, vbucket_state_replica, false );
286288 // Perform a rollback
287- EXPECT_EQ (ENGINE_SUCCESS , store->rollback (vbid, initial_seqno))
288- << " rollback did not return ENGINE_SUCCESS " ;
289+ EXPECT_EQ (TaskStatus::Complete , store->rollback (vbid, initial_seqno))
290+ << " rollback did not return success " ;
289291
290292 // Assert the checkpointmanager clear function (called during rollback)
291293 // has set the opencheckpointid to one
@@ -316,6 +318,21 @@ TEST_P(RollbackTest, MB21784) {
316318 engine->handleDisconnect (cookie);
317319}
318320
321+ TEST_P (RollbackTest, RollbackOnActive) {
322+ /* Store 3 items */
323+ const int numItems = 3 ;
324+ for (int i = 0 ; i < numItems; i++) {
325+ std::string key = " key_" + std::to_string (i);
326+ store_item (vbid, key.c_str (), " not rolled back" );
327+ }
328+
329+ /* Try to rollback on active (default state) vbucket */
330+ EXPECT_EQ (TaskStatus::Abort,
331+ store->rollback (vbid, numItems - 1 /* rollbackReqSeqno*/ ));
332+
333+ EXPECT_EQ (TaskStatus::Abort, store->rollback (vbid, 0 /* rollbackReqSeqno*/ ));
334+ }
335+
319336// Test cases which run in both Full and Value eviction
320337INSTANTIATE_TEST_CASE_P (FullAndValueEviction,
321338 RollbackTest,
0 commit comments