useLockFile = getBoolean("Transaction.UseLockFile"); logFile = new LogFile(dir, repository, useLockFile, syncOnWrite);
public final synchronized void commit(boolean release) throws IOException { if (phase != RUN) throw new IllegalStateException("Can not commit."); if (logmon.isLoggable(BasicLevel.DEBUG)) logmon.log(BasicLevel.DEBUG, "NTransaction, commit(" + release + ')'); Hashtable<Object, Operation> log = perThreadContext.get().getLog(); if (! log.isEmpty()) { logFile.commit(log); log.clear(); } setPhase(COMMIT); if (logmon.isLoggable(BasicLevel.DEBUG)) logmon.log(BasicLevel.DEBUG, "NTransaction, committed"); if (release) { setPhase(FREE); // wake-up an eventually user's thread in begin notify(); } }
garbage(); } else { logFile = new RandomAccessFile(logFilePN, mode);
garbage(); } else { logFile = new RandomAccessFile(logFilePN, mode);
write(op.type); if (op.dirName != null) { writeUTF(op.dirName); } else { write(emptyUTFString); writeUTF(op.name); if ((op.type == Operation.SAVE) || (op.type == Operation.CREATE)) { logMemorySize += op.value.length; writeInt(op.value.length); write(op.value); write(Operation.END); reset(); garbage();
write(op.type); if (op.dirName != null) { writeUTF(op.dirName); } else { write(emptyUTFString); writeUTF(op.name); if ((op.type == Operation.SAVE) || (op.type == Operation.CREATE)) { logMemorySize += op.value.length; writeInt(op.value.length); write(op.value); write(Operation.END); reset(); garbage();
logFile = new LogFile(dir, repository, useLockFile, syncOnWrite);
/** * Close the transaction module. * It waits all transactions termination, the module will be initialized * anew before reusing it. * The log file is garbaged then closed. */ public synchronized void close() { if (logmon.isLoggable(BasicLevel.DEBUG)) logmon.log(BasicLevel.DEBUG, "NTransaction, closes"); if (phase == INIT) return; while (phase != FREE) { // Wait for the transaction subsystem to be free try { wait(); } catch (InterruptedException exc) { } } setPhase(FINALIZE); logFile.stop(); setPhase(INIT); if (logmon.isLoggable(BasicLevel.INFO)) { logmon.log(BasicLevel.INFO, "NTransaction, closed: " + toString()); } }
/** * Close the transaction module. * It waits all transactions termination, the module will be initialized * anew before reusing it. * The log file is garbaged then closed. */ public synchronized void close() { if (logmon.isLoggable(BasicLevel.DEBUG)) logmon.log(BasicLevel.DEBUG, "NTransaction, closes"); if (phase == INIT) return; while (phase != FREE) { // Wait for the transaction subsystem to be free try { wait(); } catch (InterruptedException exc) { } } setPhase(FINALIZE); logFile.stop(); setPhase(INIT); if (logmon.isLoggable(BasicLevel.INFO)) { logmon.log(BasicLevel.INFO, "NTransaction, closed: " + toString()); } }
void stop() { if (logmon.isLoggable(BasicLevel.DEBUG)) logmon.log(BasicLevel.DEBUG, "NTransaction.LogFile, stops"); try { garbage(); logFile.close(); repository.close(); } catch (IOException exc) { logmon.log(BasicLevel.WARN, "NTransaction.LogFile, can't close logfile", exc); } if ((lockFile != null) && (! lockFile.delete())) { logmon.log(BasicLevel.FATAL, "NTransaction.LogFile, - can't delete lockfile: " + lockFile.getAbsolutePath()); } if (logmon.isLoggable(BasicLevel.DEBUG)) logmon.log(BasicLevel.DEBUG, "NTransaction.LogFile, stopped."); } }
void stop() { if (logmon.isLoggable(BasicLevel.DEBUG)) logmon.log(BasicLevel.DEBUG, "NTransaction.LogFile, stops"); try { garbage(); logFile.close(); repository.close(); } catch (IOException exc) { logmon.log(BasicLevel.WARN, "NTransaction.LogFile, can't close logfile", exc); } if ((lockFile != null) && (! lockFile.delete())) { logmon.log(BasicLevel.FATAL, "NTransaction.LogFile, - can't delete lockfile: " + lockFile.getAbsolutePath()); } if (logmon.isLoggable(BasicLevel.DEBUG)) logmon.log(BasicLevel.DEBUG, "NTransaction.LogFile, stopped."); } }
public final synchronized void commit(boolean release) throws IOException { if (phase != RUN) throw new IllegalStateException("Can not commit."); if (logmon.isLoggable(BasicLevel.DEBUG)) logmon.log(BasicLevel.DEBUG, "NTransaction, commit(" + release + ')'); Hashtable log = ((Context) perThreadContext.get()).getLog(); if (! log.isEmpty()) { logFile.commit(log); log.clear(); } setPhase(COMMIT); if (logmon.isLoggable(BasicLevel.DEBUG)) logmon.log(BasicLevel.DEBUG, "NTransaction, committed"); if (release) { setPhase(FREE); // wake-up an eventually user's thread in begin notify(); } }
/** * Returns the size of disk log in Kb. * * @return The size of disk log in Kb. */ public final int getLogFileSize() { return (logFile.getLogFileSize() /Kb); }
/** * Returns the size of disk log in Kb. * * @return The size of disk log in Kb. */ public final int getLogFileSize() { return (logFile.getLogFileSize() /Kb); }