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;