@Test(timeOut = 20000) void markDeleteAcrossLedgers() throws Exception { ManagedLedger ml1 = factory.open("my_test_ledger"); ManagedCursor mc1 = ml1.openCursor("c1"); // open ledger id 3 for ml1 // markDeletePosition for mc1 is 3:-1 // readPosition is 3:0 ml1.close(); mc1.close(); // force removal of this ledger from the cache factory.close(ml1); ManagedLedger ml2 = factory.open("my_test_ledger"); ManagedCursor mc2 = ml2.openCursor("c1"); // open ledger id 5 for ml2 // this entry is written at 5:0 Position pos = ml2.addEntry("dummy-entry-1".getBytes(Encoding)); List<Entry> entries = mc2.readEntries(1); assertEquals(entries.size(), 1); assertEquals(new String(entries.get(0).getData(), Encoding), "dummy-entry-1"); entries.forEach(e -> e.release()); mc2.delete(pos); // verify if the markDeletePosition moves from 3:-1 to 5:0 assertEquals(mc2.getMarkDeletedPosition(), pos); assertEquals(mc2.getMarkDeletedPosition().getNext(), mc2.getReadPosition()); }
@Test(timeOut = 20000) void markDeleteAcrossLedgers() throws Exception { ManagedLedger ml1 = factory.open("my_test_ledger"); ManagedCursor mc1 = ml1.openCursor("c1"); // open ledger id 3 for ml1 // markDeletePosition for mc1 is 3:-1 // readPosition is 3:0 ml1.close(); mc1.close(); // force removal of this ledger from the cache factory.close(ml1); ManagedLedger ml2 = factory.open("my_test_ledger"); ManagedCursor mc2 = ml2.openCursor("c1"); // open ledger id 5 for ml2 // this entry is written at 5:0 Position pos = ml2.addEntry("dummy-entry-1".getBytes(Encoding)); List<Entry> entries = mc2.readEntries(1); assertEquals(entries.size(), 1); assertEquals(new String(entries.get(0).getData(), Encoding), "dummy-entry-1"); entries.forEach(e -> e.release()); mc2.delete(pos); // verify if the markDeletePosition moves from 3:-1 to 5:0 assertEquals(mc2.getMarkDeletedPosition(), pos); assertEquals(mc2.getMarkDeletedPosition().getNext(), mc2.getReadPosition()); }