appendDeleteRecord(i, true, task);
@Override public void run() { try { latchReady.countDown(); ActiveMQTestBase.waitForLatch(latchStart); for (int i = 0; i < NUMBER_OF_ELEMENTS; i++) { Integer toDelete = queueDelete.poll(10, TimeUnit.SECONDS); if (toDelete == null) { break; } if (transactional) { journalImpl.appendDeleteRecordTransactional(toDelete, toDelete, new SimpleEncoding(50, (byte) 1)); journalImpl.appendCommitRecord(i, false); } else { journalImpl.appendDeleteRecord(toDelete, false); } } finishedOK.incrementAndGet(); } catch (Exception e) { e.printStackTrace(); } } };
appendDeleteRecord(i, true, task);
journal.appendDeleteRecord(id, false); } catch (IllegalStateException ignored) {
private static void addJournal(File folder, boolean crash) throws Exception { JournalImpl journal = createJournal(folder, crash); journal.loadInternalOnly(); for (int i = 0; i < 1000; i++) { journal.appendAddRecord(i, (byte) 1, new byte[5], true); } for (int i = 0; i < 100; i++) { journal.appendDeleteRecord(i, true); } journal.compact(); journal.stop(); }
journal.appendDeleteRecord(id, false); } catch (IllegalStateException ignored) {
journalImpl.appendDeleteRecord(1L, false); journalImpl.appendDeleteRecord(2L, false); journalImpl.appendDeleteRecord(3L, false); journalImpl.appendDeleteRecord(4L, false);
@Test public void testReduceFreeFiles() throws Exception { final int JOURNAL_SIZE = 2000; setupAndLoadJournal(JOURNAL_SIZE, 100, 10); Assert.assertEquals(10, factory.listFiles("tt").size()); setupAndLoadJournal(JOURNAL_SIZE, 100, 2); Assert.assertEquals(10, factory.listFiles("tt").size()); for (int i = 0; i < 10; i++) { journalImpl.appendAddRecord(i, (byte) 0, new SimpleEncoding(1, (byte) 0), false); journalImpl.forceMoveNextFile(); } setupAndLoadJournal(JOURNAL_SIZE, 100, 2); Assert.assertEquals(10, records.size()); Assert.assertEquals(12, factory.listFiles("tt").size()); for (int i = 0; i < 10; i++) { journalImpl.appendDeleteRecord(i, false); } journalImpl.forceMoveNextFile(); journalImpl.checkReclaimStatus(); setupAndLoadJournal(JOURNAL_SIZE, 100, 2); Assert.assertEquals(0, records.size()); Assert.assertEquals(2, factory.listFiles("tt").size()); }
@Test public void testPartialDelete() throws Exception { final int JOURNAL_SIZE = 10000; setupAndLoadJournal(JOURNAL_SIZE, 100); journalImpl.setAutoReclaim(false); journalImpl.checkReclaimStatus(); journalImpl.debugWait(); Assert.assertEquals(2, factory.listFiles("tt").size()); UnitTestLogger.LOGGER.debug("Initial:--> " + journalImpl.debug()); UnitTestLogger.LOGGER.debug("_______________________________"); for (int i = 0; i < 50; i++) { journalImpl.appendAddRecord(i, (byte) 1, new SimpleEncoding(1, (byte) 'x'), false); } journalImpl.forceMoveNextFile(); // as the request to a new file is asynchronous, we need to make sure the // async requests are done journalImpl.debugWait(); Assert.assertEquals(3, factory.listFiles("tt").size()); for (int i = 10; i < 50; i++) { journalImpl.appendDeleteRecord(i, false); } journalImpl.debugWait(); setupAndLoadJournal(JOURNAL_SIZE, 100); Assert.assertEquals(10, records.size()); Assert.assertEquals(3, factory.listFiles("tt").size()); }
journalImpl.appendDeleteRecord(i, false);
@Test public void testEmptyPrepare() throws Exception { final int JOURNAL_SIZE = 512 * 4; setupAndLoadJournal(JOURNAL_SIZE, 1); journalImpl.appendPrepareRecord(2L, new SimpleEncoding(10, (byte) 'j'), false); journalImpl.forceMoveNextFile(); journalImpl.appendAddRecord(1L, (byte) 0, new SimpleEncoding(10, (byte) 'k'), false); setupAndLoadJournal(JOURNAL_SIZE, 1); Assert.assertEquals(1, journalImpl.getDataFilesCount()); Assert.assertEquals(1, transactions.size()); journalImpl.forceMoveNextFile(); setupAndLoadJournal(JOURNAL_SIZE, 1); Assert.assertEquals(1, journalImpl.getDataFilesCount()); Assert.assertEquals(1, transactions.size()); journalImpl.appendCommitRecord(2L, false); journalImpl.appendDeleteRecord(1L, false); journalImpl.forceMoveNextFile(); setupAndLoadJournal(JOURNAL_SIZE, 0); journalImpl.forceMoveNextFile(); journalImpl.debugWait(); journalImpl.checkReclaimStatus(); Assert.assertEquals(0, transactions.size()); Assert.assertEquals(0, journalImpl.getDataFilesCount()); }