Mercurial > hg > blitz_condensed
annotate src/org/dancres/blitz/txn/batch/OptimisticBatcher.java @ 34:6f68e94c1fb8 default tip
Add CondensedStats monitoring utility, equivalent to vmstat
author | Dominic Cleal <dominic-cleal@cdo2.com> |
---|---|
date | Thu, 05 Aug 2010 11:07:25 +0100 |
parents | a77f0a9ed93c |
children |
rev | line source |
---|---|
32
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
1 package org.dancres.blitz.txn.batch; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
2 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
3 import org.prevayler.Command; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
4 import org.prevayler.PrevalentSystem; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
5 import org.prevayler.implementation.PrevaylerCore; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
6 import org.prevayler.implementation.SnapshotPrevayler; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
7 import org.prevayler.implementation.Snapshotter; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
8 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
9 import java.io.IOException; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
10 import java.io.Serializable; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
11 import java.util.ArrayList; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
12 import java.util.Iterator; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
13 import java.util.concurrent.atomic.AtomicInteger; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
14 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
15 public class OptimisticBatcher implements SnapshotPrevayler { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
16 private PrevaylerCore _prevayler; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
17 private boolean _writing = false; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
18 private ArrayList<WriteRequest> _writes = new ArrayList<WriteRequest>(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
19 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
20 // private AtomicInteger _inCount = new AtomicInteger(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
21 // private AtomicInteger _outCount = new AtomicInteger(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
22 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
23 public OptimisticBatcher(PrevaylerCore aPrevayler) { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
24 _prevayler = aPrevayler; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
25 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
26 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
27 public PrevalentSystem system() { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
28 return _prevayler.system(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
29 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
30 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
31 public Serializable executeCommand(Command aCommand) throws Exception { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
32 return write(aCommand, true); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
33 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
34 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
35 public Serializable executeCommand(Command aCommand, boolean sync) |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
36 throws Exception { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
37 return write(aCommand, sync); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
38 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
39 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
40 private Serializable write(Command aComm, boolean sync) throws Exception { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
41 boolean someoneWriting = false; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
42 WriteRequest myReq = null; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
43 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
44 synchronized(this) { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
45 someoneWriting = _writing; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
46 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
47 // If someone is already writing, we add to their queue of work |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
48 // |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
49 if (_writing) { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
50 myReq = new WriteRequest(aComm); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
51 _writes.add(myReq); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
52 } else { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
53 _writing = true; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
54 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
55 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
56 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
57 // If we are waiting on someone's queue |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
58 // |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
59 if (someoneWriting) { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
60 // If we want to wait until the log is flushed |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
61 // |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
62 if (sync) |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
63 myReq.await(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
64 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
65 return aComm.execute(_prevayler.system()); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
66 } else { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
67 // We are handling the write queue, write our stuff now |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
68 // |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
69 _prevayler.logCommand(aComm, false); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
70 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
71 ArrayList<WriteRequest> myAllWrites = new ArrayList<WriteRequest>(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
72 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
73 // While there other writes scoop them up and write them |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
74 // |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
75 ArrayList<WriteRequest> myBuffer = new ArrayList<WriteRequest>(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
76 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
77 while (haveWrites()) { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
78 synchronized(this) { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
79 myBuffer.clear(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
80 myBuffer.addAll(_writes); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
81 _writes.clear(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
82 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
83 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
84 Iterator<WriteRequest> myWrites = myBuffer.iterator(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
85 while (myWrites.hasNext()) |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
86 _prevayler.logCommand(myWrites.next().getCommand(), false); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
87 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
88 myAllWrites.addAll(myBuffer); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
89 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
90 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
91 // Now dispatch execution of all logged commands - execute our own first |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
92 // |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
93 try { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
94 return aComm.execute(_prevayler.system()); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
95 } finally { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
96 Iterator<WriteRequest> myTargets = myAllWrites.iterator(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
97 while (myTargets.hasNext()) { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
98 // _outCount.incrementAndGet(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
99 myTargets.next().dispatch(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
100 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
101 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
102 // System.out.println("Logger: incount = " + _inCount + " outcount = " + _outCount); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
103 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
104 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
105 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
106 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
107 private boolean haveWrites() throws Exception { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
108 synchronized(this) { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
109 if (_writes.size() > 0) |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
110 return true; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
111 else { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
112 _writing = false; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
113 _prevayler.flush(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
114 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
115 return false; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
116 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
117 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
118 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
119 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
120 public Snapshotter takeSnapshot() throws IOException { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
121 return _prevayler.takeSnapshot(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
122 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
123 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
124 private class WriteRequest { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
125 private Command _comm; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
126 private Object _lock = new Object(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
127 private boolean _exit = false; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
128 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
129 WriteRequest(Command aComm) { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
130 // _inCount.incrementAndGet(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
131 _comm = aComm; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
132 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
133 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
134 Command getCommand() { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
135 return _comm; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
136 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
137 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
138 void dispatch() { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
139 synchronized(_lock) { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
140 _exit = true; |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
141 _lock.notify(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
142 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
143 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
144 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
145 void await() { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
146 synchronized(_lock) { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
147 while (! _exit) { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
148 try { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
149 _lock.wait(); |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
150 } catch (InterruptedException anIE) { |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
151 |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
152 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
153 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
154 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
155 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
156 } |
a77f0a9ed93c
Add support for optimistic log batching.
Dan Creswell <dan.creswell@gmail.com>
parents:
diff
changeset
|
157 } |