@Override public void appendAddRecord(long id, byte recordType, Persister persister, Object record, boolean sync) throws Exception { SyncIOCompletion callback = getSyncCallback(sync); appendAddRecord(id, recordType, persister, record, sync, callback); if (callback != null) { callback.waitCompletion(); } }
private boolean needsCompact() throws Exception { JournalFile[] dataFiles = getDataFiles(); long totalLiveSize = 0; for (JournalFile file : dataFiles) { totalLiveSize += file.getLiveSize(); } long totalBytes = dataFiles.length * (long) fileSize; long compactMargin = (long) (totalBytes * compactPercentage); boolean needCompact = totalLiveSize < compactMargin && dataFiles.length > compactMinFiles; return needCompact; }
@Override public void appendCommitRecord(final long txID, final boolean sync) throws Exception { SyncIOCompletion syncCompletion = getSyncCallback(sync); appendCommitRecord(txID, sync, syncCompletion, true); if (syncCompletion != null) { syncCompletion.waitCompletion(); } }
private JournalFile reinitializeFile(final JournalFile file) throws Exception { long newFileID = generateFileID(); SequentialFile sf = file.getFile(); sf.open(1, false); int position = JournalImpl.initFileHeader(fileFactory, sf, userVersion, newFileID); JournalFile jf = new JournalFileImpl(sf, newFileID, JournalImpl.FORMAT_VERSION); sf.position(position); sf.close(); return jf; }
@Override public void appendPrepareRecord(final long txID, final EncodingSupport transactionData, final boolean sync) throws Exception { SyncIOCompletion syncCompletion = getSyncCallback(sync); appendPrepareRecord(txID, transactionData, sync, syncCompletion); if (syncCompletion != null) { syncCompletion.waitCompletion(); } }
@Override public void appendDeleteRecord(final long id, final boolean sync) throws Exception { SyncIOCompletion callback = getSyncCallback(sync); appendDeleteRecord(id, sync, callback); if (callback != null) { callback.waitCompletion(); } }
@Override public void appendUpdateRecord(final long id, final byte recordType, final Persister persister, final Object record, final boolean sync) throws Exception { SyncIOCompletion callback = getSyncCallback(sync); appendUpdateRecord(id, recordType, persister, record, sync, callback); if (callback != null) { callback.waitCompletion(); } }
@Override public void appendRollbackRecord(final long txID, final boolean sync) throws Exception { SyncIOCompletion syncCompletion = getSyncCallback(sync); appendRollbackRecord(txID, sync, syncCompletion); if (syncCompletion != null) { syncCompletion.waitCompletion(); } }
/** * Wait completion at the latest file only */ public void waitCompletion() throws Exception { waitFirstCallback(); currentCallback.waitCompletion(); }
/** * Creates files for journal synchronization of a replicated backup. * * In order to simplify synchronization, the file IDs in the backup match those in the live * server. * * @param fileID the fileID to use when creating the file. */ public JournalFile createRemoteBackupSyncFile(long fileID) throws Exception { return createFile(false, false, true, false, fileID); }
/** * Used by load, when the transaction was not loaded correctly */ public void forget() { // The transaction was not committed or rolled back in the file, so we // reverse any pos counts we added for (JournalFile jf : pendingFiles) { jf.decPosCount(); } }
private JournalFile reinitializeFile(final JournalFile file) throws Exception { long newFileID = generateFileID(); SequentialFile sf = file.getFile(); sf.open(1, false); int position = JournalImpl.initFileHeader(fileFactory, sf, userVersion, newFileID); JournalFile jf = new JournalFileImpl(sf, newFileID, JournalImpl.FORMAT_VERSION); sf.position(position); sf.close(); return jf; }
private boolean needsCompact() throws Exception { JournalFile[] dataFiles = getDataFiles(); long totalLiveSize = 0; for (JournalFile file : dataFiles) { totalLiveSize += file.getLiveSize(); } long totalBytes = dataFiles.length * (long) fileSize; long compactMargin = (long) (totalBytes * compactPercentage); boolean needCompact = totalLiveSize < compactMargin && dataFiles.length > compactMinFiles; return needCompact; }
@Override public void appendAddRecord(long id, byte recordType, Persister persister, Object record, boolean sync) throws Exception { SyncIOCompletion callback = getSyncCallback(sync); appendAddRecord(id, recordType, persister, record, sync, callback); if (callback != null) { callback.waitCompletion(); } }
@Override public void appendCommitRecord(final long txID, final boolean sync) throws Exception { SyncIOCompletion syncCompletion = getSyncCallback(sync); appendCommitRecord(txID, sync, syncCompletion, true); if (syncCompletion != null) { syncCompletion.waitCompletion(); } }
@Override public void appendPrepareRecord(final long txID, final EncodingSupport transactionData, final boolean sync) throws Exception { SyncIOCompletion syncCompletion = getSyncCallback(sync); appendPrepareRecord(txID, transactionData, sync, syncCompletion); if (syncCompletion != null) { syncCompletion.waitCompletion(); } }
@Override public void appendDeleteRecord(final long id, final boolean sync) throws Exception { SyncIOCompletion callback = getSyncCallback(sync); appendDeleteRecord(id, sync, callback); if (callback != null) { callback.waitCompletion(); } }
@Override public void appendUpdateRecord(final long id, final byte recordType, final Persister persister, final Object record, final boolean sync) throws Exception { SyncIOCompletion callback = getSyncCallback(sync); appendUpdateRecord(id, recordType, persister, record, sync, callback); if (callback != null) { callback.waitCompletion(); } }
@Override public void appendRollbackRecord(final long txID, final boolean sync) throws Exception { SyncIOCompletion syncCompletion = getSyncCallback(sync); appendRollbackRecord(txID, sync, syncCompletion); if (syncCompletion != null) { syncCompletion.waitCompletion(); } }
/** * Wait completion at the latest file only */ public void waitCompletion() throws Exception { waitFirstCallback(); currentCallback.waitCompletion(); }