Fixed overflow notification could eventually get into infinate recusion.

git-svn-id: https://svn.apache.org/repos/asf/incubator/activemq/trunk@412759 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Hiram R. Chirino 2006-06-08 14:15:55 +00:00
parent c56ae926a5
commit 703d468a49
3 changed files with 20 additions and 10 deletions

View File

@ -86,7 +86,8 @@ final public class JournalImpl implements Journal {
private ByteBufferPacketPool packetPool;
private long overflowNotificationTime = System.currentTimeMillis();
private Packet markPacket = new ByteArrayPacket(new byte[Location.SERIALIZED_SIZE]);
private boolean doingNotification=false;
public JournalImpl(File logDirectory) throws IOException {
this(new LogFileManager(logDirectory));
}
@ -267,13 +268,17 @@ final public class JournalImpl implements Journal {
// See if we need to issue an overflow notification.
if (eventListener != null && file.isPastHalfActive()
&& overflowNotificationTime + OVERFLOW_RENOTIFICATION_DELAY < System.currentTimeMillis()) {
// We need to send an overflow notification to free up
// some logFiles.
Location safeSpot = file.getFirstRecordLocationOfSecondActiveLogFile();
eventListener.overflowNotification(safeSpot);
overflowNotificationTime = System.currentTimeMillis();
&& overflowNotificationTime + OVERFLOW_RENOTIFICATION_DELAY < System.currentTimeMillis() && !doingNotification ) {
doingNotification = true;
try {
// We need to send an overflow notification to free up
// some logFiles.
Location safeSpot = file.getFirstRecordLocationOfSecondActiveLogFile();
eventListener.overflowNotification(safeSpot);
overflowNotificationTime = System.currentTimeMillis();
} finally {
doingNotification = false;
}
}
// Is it time to roll over?

View File

@ -153,7 +153,7 @@ abstract public class JournalPerfToolSupport implements JournalEventListener {
public void overflowNotification(RecordLocation safeLocation) {
try {
System.out.println("Mark set: "+safeLocation);
// System.out.println("Mark set: "+safeLocation);
journal.setMark(safeLocation, false);
} catch (InvalidRecordLocationException e) {
e.printStackTrace();

View File

@ -30,11 +30,16 @@ import org.apache.activeio.journal.active.JournalImpl;
*/
public class JournalPerfTool extends JournalPerfToolSupport {
private int logFileSize = 1024*1000*5;
private int logFileSize = 1024*1024*50;
private int logFileCount = 4;
public static void main(String[] args) throws Exception {
JournalPerfTool tool = new JournalPerfTool();
tool.syncFrequency=15;
tool.workerIncrement=50;
tool.workerThinkTime=0;
tool.verbose=false;
if( args.length > 0 ) {
tool.journalDirectory = new File(args[0]);
}