comparison src/org/dancres/blitz/txn/PersistentPersonality.java @ 17:4580bb12db30

Separate command execution from command logging.
author Dan Creswell <dan.creswell@gmail.com>
date Sun, 05 Jul 2009 16:26:25 +0100
parents 3dc0c5604566
children a77f0a9ed93c
comparison
equal deleted inserted replaced
16:46ac1a45718a 17:4580bb12db30
1 package org.dancres.blitz.txn; 1 package org.dancres.blitz.txn;
2 2
3 import java.util.logging.Level; 3 import java.util.logging.Level;
4 4
5 import org.prevayler.implementation.SnapshotPrevayler; 5 import org.prevayler.implementation.SnapshotPrevayler;
6 import org.prevayler.implementation.SnapshotPrevaylerImpl; 6 import org.prevayler.implementation.PrevaylerCore;
7 7
8 import org.prevayler.PrevalentSystem; 8 import org.prevayler.PrevalentSystem;
9 9
10 import org.dancres.blitz.config.Persistent; 10 import org.dancres.blitz.config.Persistent;
11 11
30 TxnManager.theLogger.log(Level.INFO, "Max logs before sync: " + 30 TxnManager.theLogger.log(Level.INFO, "Max logs before sync: " +
31 theModel.getMaxLogsBeforeSync()); 31 theModel.getMaxLogsBeforeSync());
32 TxnManager.theLogger.log(Level.INFO, "Reset log stream: " + 32 TxnManager.theLogger.log(Level.INFO, "Reset log stream: " +
33 theModel.shouldResetLogStream()); 33 theModel.shouldResetLogStream());
34 TxnManager.theLogger.log(Level.INFO, "Write barrier window: " + 34 TxnManager.theLogger.log(Level.INFO, "Write barrier window: " +
35 theModel.getBatchWriteWindowSize()); 35 theModel.getBatchWriteWindowSizeMs() + ", " + theModel.getBatchWriteWindowSizeNs());
36 36
37 if (theModel.useConcurrentWriteBatcher()) 37 if (theModel.useConcurrentWriteBatcher())
38 TxnManager.theLogger.log(Level.INFO, 38 TxnManager.theLogger.log(Level.INFO,
39 "*** Using concurrent batcher ***"); 39 "*** Concurrent batching enabled ***");
40 40
41 if (theModel.shouldCleanLogs()) { 41 if (theModel.shouldCleanLogs()) {
42 TxnManager.theLogger.log(Level.WARNING, 42 TxnManager.theLogger.log(Level.WARNING,
43 "*** Automatically cleaning logs *** [EXPERIMENTAL]"); 43 "*** Automatically cleaning logs *** [EXPERIMENTAL]");
44 } 44 }
56 throws Exception { 56 throws Exception {
57 57
58 PersistentReboot myReboot = new PersistentReboot(theModel); 58 PersistentReboot myReboot = new PersistentReboot(theModel);
59 myReboot.execute(); 59 myReboot.execute();
60 60
61 SnapshotPrevayler myPrevayler = 61 PrevaylerCore myPrevayler =
62 new SnapshotPrevaylerImpl(aSystem, 62 new PrevaylerCore(aSystem,
63 theLogDir, 63 theLogDir,
64 theModel.shouldResetLogStream(), 64 theModel.shouldResetLogStream(),
65 theModel.shouldCleanLogs(), 65 theModel.shouldCleanLogs(),
66 theModel.getLogBufferSize()); 66 theModel.getLogBufferSize());
67 67
68 if (theModel.getBatchWriteWindowSize() != 0) { 68 if ((theModel.getBatchWriteWindowSizeMs() != 0) ||
69 int myWindowSize = theModel.getBatchWriteWindowSize(); 69 (theModel.getBatchWriteWindowSizeNs() != 0)) {
70 long myWindowSizeMs = theModel.getBatchWriteWindowSizeMs();
71 int myWindowSizeNs = theModel.getBatchWriteWindowSizeNs();
70 72
71 if (theModel.useConcurrentWriteBatcher()) { 73 if (theModel.useConcurrentWriteBatcher()) {
72 myPrevayler = 74 return new ConcurrentWriteBatcher(myPrevayler, myWindowSizeMs, myWindowSizeNs);
73 new ConcurrentWriteBatcher(myPrevayler, myWindowSize);
74 } else { 75 } else {
75 myPrevayler = 76 return new WriteBatcher(myPrevayler, myWindowSizeMs, myWindowSizeNs);
76 new WriteBatcher(myPrevayler, myWindowSize);
77 } 77 }
78 } 78 } else
79 79 return new NullBatcher(myPrevayler);
80 return myPrevayler;
81 } 80 }
82 81
83 public void destroy() { 82 public void destroy() {
84 Disk.destroy(); 83 Disk.destroy();
85 Disk.clean(theLogDir); 84 Disk.clean(theLogDir);