protected void delete(final long... arguments) throws Exception { for (long element : arguments) { beforeJournalOperation(); journal.appendDeleteRecord(element, sync); removeRecordsForID(element); } journal.debugWait(); }
@Test public void testCompactFirstFileReclaimed() throws Exception { setup(2, 60 * 1024, false); final byte recordType = (byte) 0; journal = new JournalImpl(fileSize, minFiles, minFiles, 0, 0, fileFactory, filePrefix, fileExtension, maxAIO); journal.start(); journal.loadInternalOnly(); journal.appendAddRecord(1, recordType, "test".getBytes(), true); journal.forceMoveNextFile(); journal.appendUpdateRecord(1, recordType, "update".getBytes(), true); journal.appendDeleteRecord(1, true); journal.appendAddRecord(2, recordType, "finalRecord".getBytes(), true); for (int i = 10; i < 100; i++) { journal.appendAddRecord(i, recordType, ("tst" + i).getBytes(), true); journal.forceMoveNextFile(); journal.appendUpdateRecord(i, recordType, ("uptst" + i).getBytes(), true); journal.appendDeleteRecord(i, true); } journal.testCompact(); journal.stop(); List<RecordInfo> records1 = new ArrayList<>(); List<PreparedTransactionInfo> preparedRecords = new ArrayList<>(); journal.start(); journal.load(records1, preparedRecords, null); assertEquals(1, records1.size()); }
try { startFlag.await(5, TimeUnit.SECONDS); journal.appendDeleteRecord(2, false); } catch (java.lang.IllegalStateException expected) { } catch (Exception e) {
@Test public void testMultipleAddUpdateDeleteDifferentRecordLengths() throws Exception { setup(10, 20480, true); createJournal(); startJournal(); load(); for (int i = 0; i < 100; i++) { byte[] record = generateRecord(RandomUtil.randomInterval(1500, 10000)); journal.appendAddRecord(i, (byte) 0, record, false); records.add(new RecordInfo(i, (byte) 0, record, false, (short) 0)); } for (int i = 0; i < 100; i++) { byte[] record = generateRecord(10 + RandomUtil.randomInterval(1500, 10000)); journal.appendUpdateRecord(i, (byte) 0, record, false); records.add(new RecordInfo(i, (byte) 0, record, true, (short) 0)); } for (int i = 0; i < 100; i++) { journal.appendDeleteRecord(i, false); removeRecordsForID(i); } stopJournal(); createJournal(); startJournal(); loadAndCheck(); stopJournal(); }