private static RecordInfo parseRecord(final Properties properties) throws Exception { long id = parseLong("id", properties); byte userRecordType = parseByte("userRecordType", properties); boolean isUpdate = parseBoolean("isUpdate", properties); byte[] data = parseEncoding("data", properties); return new RecordInfo(id, userRecordType, data, isUpdate, (short) 0); }
private static RecordInfo parseRecord(final Properties properties) throws Exception { long id = parseLong("id", properties); byte userRecordType = parseByte("userRecordType", properties); boolean isUpdate = parseBoolean("isUpdate", properties); byte[] data = parseEncoding("data", properties); return new RecordInfo(id, userRecordType, data, isUpdate, (short) 0); }
private synchronized void addTxRecord(JDBCJournalRecord record) throws Exception { if (logger.isTraceEnabled()) { logger.trace("addTxRecord " + record + ", started=" + started + ", failed=" + failed); } checkStatus(); TransactionHolder txHolder = transactions.get(record.getTxId()); if (txHolder == null) { txHolder = new TransactionHolder(record.getTxId()); transactions.put(record.getTxId(), txHolder); } // We actually only need the record ID in this instance. if (record.isTransactional()) { RecordInfo info = new RecordInfo(record.getId(), record.getRecordType(), new byte[0], record.isUpdate(), record.getCompactCount()); if (record.getRecordType() == JDBCJournalRecord.DELETE_RECORD_TX) { txHolder.recordsToDelete.add(info); } else { txHolder.recordInfos.add(info); } } else { txHolder.prepared = true; } }
RecordInfo toRecordInfo() throws IOException { return new RecordInfo(getId(), getUserRecordType(), getRecordData(), isUpdate(), getCompactCount()); }
protected void addWithSize(final int size, final long... arguments) throws Exception { for (long element : arguments) { byte[] record = generateRecord(size); beforeJournalOperation(); journal.appendAddRecord(element, (byte) 0, record, sync); records.add(new RecordInfo(element, (byte) 0, record, false, (short) 0)); } journal.debugWait(); }
protected void update(final long... arguments) throws Exception { for (long element : arguments) { byte[] updateRecord = generateRecord(recordLength); beforeJournalOperation(); journal.appendUpdateRecord(element, (byte) 0, updateRecord, sync); records.add(new RecordInfo(element, (byte) 0, updateRecord, true, (short) 0)); } journal.debugWait(); }
protected void deleteTx(final long txID, final long... arguments) throws Exception { TransactionHolder tx = getTransaction(txID); for (long element : arguments) { beforeJournalOperation(); journal.appendDeleteRecordTransactional(txID, element); tx.deletes.add(new RecordInfo(element, (byte) 0, null, true, (short) 0)); } journal.debugWait(); }
reader.onReadAddRecord(new RecordInfo(recordID, userRecordType, record, false, compactCount)); break; reader.onReadUpdateRecord(new RecordInfo(recordID, userRecordType, record, true, compactCount)); break; reader.onReadAddRecordTX(transactionID, new RecordInfo(recordID, userRecordType, record, false, compactCount)); break; reader.onReadUpdateRecordTX(transactionID, new RecordInfo(recordID, userRecordType, record, true, compactCount)); break; reader.onReadDeleteRecordTX(transactionID, new RecordInfo(recordID, (byte) 0, record, true, compactCount)); break;
reader.onReadAddRecord(new RecordInfo(recordID, userRecordType, record, false, compactCount)); break; reader.onReadUpdateRecord(new RecordInfo(recordID, userRecordType, record, true, compactCount)); break; reader.onReadAddRecordTX(transactionID, new RecordInfo(recordID, userRecordType, record, false, compactCount)); break; reader.onReadUpdateRecordTX(transactionID, new RecordInfo(recordID, userRecordType, record, true, compactCount)); break; reader.onReadDeleteRecordTX(transactionID, new RecordInfo(recordID, (byte) 0, record, true, compactCount)); break;
protected void updateTx(final long txID, final long... arguments) throws Exception { TransactionHolder tx = getTransaction(txID); for (long element : arguments) { byte[] updateRecord = generateRecord(recordLength - (JournalImpl.SIZE_ADD_RECORD_TX + 1)); beforeJournalOperation(); journal.appendUpdateRecordTransactional(txID, element, (byte) 0, updateRecord); tx.records.add(new RecordInfo(element, (byte) 0, updateRecord, true, (short) 0)); } journal.debugWait(); }
protected void addTx(final long txID, final long... arguments) throws Exception { TransactionHolder tx = getTransaction(txID); for (long element : arguments) { // SIZE_BYTE + SIZE_LONG + SIZE_LONG + SIZE_INT + record.length + // SIZE_BYTE byte[] record = generateRecord(recordLength - (JournalImpl.SIZE_ADD_RECORD_TX + 1)); beforeJournalOperation(); journal.appendAddRecordTransactional(txID, element, (byte) 0, record); tx.records.add(new RecordInfo(element, (byte) 0, record, false, (short) 0)); } journal.debugWait(); }
byte[] data = outputBuffer.buffer(); RecordInfo record = new RecordInfo(getId(uid, typeName), RECORD_TYPE, data, false, (short)0); previousRecord = getContentForType(typeName).putIfAbsent(uid, record);
byte[] data = outputBuffer.buffer(); RecordInfo record = new RecordInfo(getId(uid, typeName), RECORD_TYPE, data, false, (short)0); previousRecord = getContentForType(typeName).putIfAbsent(uid, record);
byte[] data = outputBuffer.buffer(); RecordInfo record = new RecordInfo(getId(uid, typeName), RECORD_TYPE, data, false, (short)0); previousRecord = getContentForType(typeName).putIfAbsent(uid, record);
byte[] data = outputBuffer.buffer(); RecordInfo record = new RecordInfo(getId(uid, typeName), RECORD_TYPE, data, false, (short)0); previousRecord = getContentForType(typeName).putIfAbsent(uid, record);
byte[] data = outputBuffer.buffer(); RecordInfo record = new RecordInfo(getId(uid, typeName), RECORD_TYPE, data, false, (short)0); previousRecord = getContentForType(typeName).putIfAbsent(uid, record);
byte[] data = outputBuffer.buffer(); RecordInfo record = new RecordInfo(getId(uid, typeName), RECORD_TYPE, data, false, (short)0); previousRecord = getContentForType(typeName).putIfAbsent(uid, record);
@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(); }