another change to stop the LogFlusher thread
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/aql/translator/AqlTranslator.java b/asterix-app/src/main/java/edu/uci/ics/asterix/aql/translator/AqlTranslator.java
index 3fa9e56..f22d2fb 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/aql/translator/AqlTranslator.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/aql/translator/AqlTranslator.java
@@ -128,7 +128,7 @@
ADDED_PENDINGOP_RECORD_TO_METADATA
}
- public static final boolean IS_DEBUG_MODE = true;//true
+ public static final boolean IS_DEBUG_MODE = false;//true
private final List<Statement> aqlStatements;
private final PrintWriter out;
private final SessionConfig sessionConfig;
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/bootstrap/MetadataBootstrap.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/bootstrap/MetadataBootstrap.java
index be95c99..4a02bc5 100644
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/bootstrap/MetadataBootstrap.java
+++ b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/bootstrap/MetadataBootstrap.java
@@ -92,7 +92,7 @@
*/
public class MetadataBootstrap {
private static final Logger LOGGER = Logger.getLogger(MetadataBootstrap.class.getName());
- public static final boolean IS_DEBUG_MODE = true;//true
+ public static final boolean IS_DEBUG_MODE = false;//true
private static IAsterixAppRuntimeContext runtimeContext;
diff --git a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/LogManager.java b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/LogManager.java
index 90d0d68..7e83140 100644
--- a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/LogManager.java
+++ b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/LogManager.java
@@ -163,7 +163,7 @@
return txnSubsystem;
}
- public long getAppendLSN() {
+ public synchronized long getAppendLSN() {
return appendLSN;
}
@@ -260,7 +260,7 @@
return logFileSize * fileId + offset;
}
- public void renewLogFiles() {
+ public synchronized void renewLogFiles() {
terminateLogFlusher();
deleteAllLogFiles();
initializeLogManager();
@@ -268,11 +268,6 @@
private void terminateLogFlusher() {
logFlusher.terminate();
- try {
- logFlusher.join();
- } catch (InterruptedException e) {
- throw new IllegalStateException(e);
- }
}
private void deleteAllLogFiles() {
@@ -372,7 +367,7 @@
class LogFlusher extends Thread {
private final static LogPage POISON_PILL = new LogPage(null, ILogRecord.COMMIT_LOG_SIZE, null);
- private final LogManager logMgr;
+ private final LogManager logMgr;//for debugging
private final LinkedBlockingQueue<LogPage> emptyQ;
private final LinkedBlockingQueue<LogPage> flushQ;
private LogPage flushPage;
@@ -391,7 +386,20 @@
flushPage.notify();
}
}
+ POISON_PILL.isStop(false);
flushQ.offer(POISON_PILL);
+ synchronized (POISON_PILL) {
+ if(!POISON_PILL.isStop()) {
+ try {
+ POISON_PILL.wait();
+ } catch (InterruptedException e) {
+ throw new IllegalStateException("Unexpected interrupted exception", e);
+ }
+ if (!POISON_PILL.isStop()) {
+ throw new IllegalStateException("LogFlusher thread is igonoring termination request.");
+ }
+ }
+ }
}
@Override
@@ -401,11 +409,15 @@
try {
flushPage = flushQ.take();
if (flushPage == POISON_PILL) {
- break;
+ synchronized (POISON_PILL) {
+ POISON_PILL.isStop(true);
+ POISON_PILL.notify();
+ break;
+ }
}
flushPage.flush();
} catch (InterruptedException e) {
- //ignore
+ throw new IllegalStateException("Unexpected interrupted exception", e);
}
emptyQ.offer(flushPage);
}
diff --git a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/LogReader.java b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/LogReader.java
index 8c4f2ae..80e6f4a 100644
--- a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/LogReader.java
+++ b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/LogReader.java
@@ -26,7 +26,7 @@
public class LogReader implements ILogReader {
- public static final boolean IS_DEBUG_MODE = true;//true
+ public static final boolean IS_DEBUG_MODE = false;//true
private static final Logger LOGGER = Logger.getLogger(LogReader.class.getName());
private final LogManager logMgr;
private final long logFileSize;