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;
