Search in sources :

Example 76 with ManagedLedger

use of org.apache.bookkeeper.mledger.ManagedLedger in project incubator-pulsar by apache.

the class ManagedCursorTest method markDeleteAcrossLedgers.

@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());
}
Also used : Entry(org.apache.bookkeeper.mledger.Entry) LedgerEntry(org.apache.bookkeeper.client.LedgerEntry) Position(org.apache.bookkeeper.mledger.Position) ManagedLedger(org.apache.bookkeeper.mledger.ManagedLedger) ManagedCursor(org.apache.bookkeeper.mledger.ManagedCursor) Test(org.testng.annotations.Test)

Example 77 with ManagedLedger

use of org.apache.bookkeeper.mledger.ManagedLedger in project incubator-pulsar by apache.

the class ManagedCursorTest method testRateLimitMarkDelete.

@Test(timeOut = 20000)
void testRateLimitMarkDelete() throws Exception {
    ManagedLedgerConfig config = new ManagedLedgerConfig();
    // Throttle to 1/s
    config.setThrottleMarkDelete(1);
    ManagedLedger ledger = factory.open("my_test_ledger", config);
    ManagedCursor c1 = ledger.openCursor("c1");
    Position p1 = ledger.addEntry("dummy-entry-1".getBytes(Encoding));
    Position p2 = ledger.addEntry("dummy-entry-2".getBytes(Encoding));
    Position p3 = ledger.addEntry("dummy-entry-3".getBytes(Encoding));
    assertEquals(c1.getNumberOfEntriesInBacklog(), 3);
    c1.markDelete(p1);
    c1.markDelete(p2);
    c1.markDelete(p3);
    assertEquals(c1.getNumberOfEntriesInBacklog(), 0);
    // Re-open to recover from storage
    ManagedLedgerFactory factory2 = new ManagedLedgerFactoryImpl(bkc, bkc.getZkHandle());
    ledger = factory2.open("my_test_ledger", new ManagedLedgerConfig());
    c1 = ledger.openCursor("c1");
    // Only the 1st mark-delete was persisted
    assertEquals(c1.getNumberOfEntriesInBacklog(), 2);
    factory2.shutdown();
}
Also used : Position(org.apache.bookkeeper.mledger.Position) ManagedLedger(org.apache.bookkeeper.mledger.ManagedLedger) ManagedLedgerFactory(org.apache.bookkeeper.mledger.ManagedLedgerFactory) ManagedLedgerConfig(org.apache.bookkeeper.mledger.ManagedLedgerConfig) ManagedCursor(org.apache.bookkeeper.mledger.ManagedCursor) Test(org.testng.annotations.Test)

Example 78 with ManagedLedger

use of org.apache.bookkeeper.mledger.ManagedLedger in project incubator-pulsar by apache.

the class ManagedCursorTest method errorRecoveringCursor3.

@Test(timeOut = 20000)
void errorRecoveringCursor3() throws Exception {
    ManagedLedger ledger = factory.open("my_test_ledger");
    Position p1 = ledger.addEntry("entry".getBytes());
    ledger.addEntry("entry".getBytes());
    ManagedCursor c1 = ledger.openCursor("c1");
    Position p3 = ledger.addEntry("entry".getBytes());
    assertEquals(c1.getReadPosition(), p3);
    ManagedLedgerFactory factory2 = new ManagedLedgerFactoryImpl(bkc, bkc.getZkHandle());
    bkc.failAfter(4, BKException.Code.ReadException);
    ledger = factory2.open("my_test_ledger");
    c1 = ledger.openCursor("c1");
    // Verify the ManagedCursor was rewind back to the snapshotted position
    assertEquals(c1.getReadPosition(), p3);
    factory2.shutdown();
}
Also used : Position(org.apache.bookkeeper.mledger.Position) ManagedLedger(org.apache.bookkeeper.mledger.ManagedLedger) ManagedLedgerFactory(org.apache.bookkeeper.mledger.ManagedLedgerFactory) ManagedCursor(org.apache.bookkeeper.mledger.ManagedCursor) Test(org.testng.annotations.Test)

Example 79 with ManagedLedger

use of org.apache.bookkeeper.mledger.ManagedLedger in project incubator-pulsar by apache.

the class ManagedCursorTest method seekPosition2.

@Test(timeOut = 20000)
void seekPosition2() throws Exception {
    ManagedLedger ledger = factory.open("my_test_ledger", new ManagedLedgerConfig().setMaxEntriesPerLedger(2));
    ManagedCursor cursor = ledger.openCursor("c1");
    ledger.addEntry("dummy-entry-1".getBytes(Encoding));
    ledger.addEntry("dummy-entry-2".getBytes(Encoding));
    PositionImpl seekPosition = (PositionImpl) ledger.addEntry("dummy-entry-3".getBytes(Encoding));
    ledger.addEntry("dummy-entry-4".getBytes(Encoding));
    ledger.addEntry("dummy-entry-5".getBytes(Encoding));
    ledger.addEntry("dummy-entry-6".getBytes(Encoding));
    cursor.seek(new PositionImpl(seekPosition.getLedgerId(), seekPosition.getEntryId()));
}
Also used : ManagedLedger(org.apache.bookkeeper.mledger.ManagedLedger) ManagedLedgerConfig(org.apache.bookkeeper.mledger.ManagedLedgerConfig) ManagedCursor(org.apache.bookkeeper.mledger.ManagedCursor) Test(org.testng.annotations.Test)

Example 80 with ManagedLedger

use of org.apache.bookkeeper.mledger.ManagedLedger in project incubator-pulsar by apache.

the class ManagedCursorTest method testGetEntryAfterNWithIndividualDeletedMessages.

@Test(timeOut = 20000)
void testGetEntryAfterNWithIndividualDeletedMessages() throws Exception {
    ManagedLedger ledger = factory.open("testGetEnteryAfterNWithIndividualDeletedMessages");
    ManagedCursor c1 = ledger.openCursor("c1");
    Position pos1 = ledger.addEntry("msg1".getBytes());
    Position pos2 = ledger.addEntry("msg2".getBytes());
    Position pos3 = ledger.addEntry("msg3".getBytes());
    Position pos4 = ledger.addEntry("msg4".getBytes());
    Position pos5 = ledger.addEntry("msg5".getBytes());
    c1.delete(pos3);
    c1.delete(pos4);
    Entry e = c1.getNthEntry(3, IndividualDeletedEntries.Exclude);
    assertEquals(e.getDataAndRelease(), "msg5".getBytes());
    e = c1.getNthEntry(3, IndividualDeletedEntries.Include);
    assertEquals(e.getDataAndRelease(), "msg3".getBytes());
}
Also used : Entry(org.apache.bookkeeper.mledger.Entry) LedgerEntry(org.apache.bookkeeper.client.LedgerEntry) Position(org.apache.bookkeeper.mledger.Position) ManagedLedger(org.apache.bookkeeper.mledger.ManagedLedger) ManagedCursor(org.apache.bookkeeper.mledger.ManagedCursor) Test(org.testng.annotations.Test)

Aggregations

ManagedLedger (org.apache.bookkeeper.mledger.ManagedLedger)363 Test (org.testng.annotations.Test)354 ManagedCursor (org.apache.bookkeeper.mledger.ManagedCursor)262 ManagedLedgerConfig (org.apache.bookkeeper.mledger.ManagedLedgerConfig)198 ManagedLedgerException (org.apache.bookkeeper.mledger.ManagedLedgerException)180 Position (org.apache.bookkeeper.mledger.Position)167 Entry (org.apache.bookkeeper.mledger.Entry)151 CountDownLatch (java.util.concurrent.CountDownLatch)117 ManagedLedgerFactory (org.apache.bookkeeper.mledger.ManagedLedgerFactory)98 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)74 AddEntryCallback (org.apache.bookkeeper.mledger.AsyncCallbacks.AddEntryCallback)68 CyclicBarrier (java.util.concurrent.CyclicBarrier)66 ManagedLedgerFactoryConfig (org.apache.bookkeeper.mledger.ManagedLedgerFactoryConfig)59 MarkDeleteCallback (org.apache.bookkeeper.mledger.AsyncCallbacks.MarkDeleteCallback)58 ArrayList (java.util.ArrayList)57 AsyncCallbacks (org.apache.bookkeeper.mledger.AsyncCallbacks)57 Future (java.util.concurrent.Future)56 AtomicReference (java.util.concurrent.atomic.AtomicReference)55 ExecutorService (java.util.concurrent.ExecutorService)54 BKException (org.apache.bookkeeper.client.BKException)54