diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManager.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManager.java
index 7f74f52..7d61462 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManager.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManager.java
@@ -81,8 +81,8 @@
 
     public LogManager(TransactionSubsystem txnSubsystem) {
         this.txnSubsystem = txnSubsystem;
-        logManagerProperties =
-                new LogManagerProperties(this.txnSubsystem.getTransactionProperties(), this.txnSubsystem.getId());
+        logManagerProperties = new LogManagerProperties(this.txnSubsystem.getTransactionProperties(),
+                this.txnSubsystem.getId());
         logFileSize = logManagerProperties.getLogPartitionSize();
         logPageSize = logManagerProperties.getLogPageSize();
         numLogPages = logManagerProperties.getNumLogPages();
@@ -157,12 +157,12 @@
          * written at the last offset of the current file.
          */
         final int logSize = logRecord.getLogSize();
-        if (!appendPage.hasSpace(logSize)) {
-            if (getLogFileOffset(appendLSN.get()) + logSize >= logFileSize) {
-                prepareNextLogFile();
-            }
-            appendPage.isFull(true);
-            getAndInitNewPage(logSize);
+        // Make sure the log will not exceed the log file size
+        if (getLogFileOffset(appendLSN.get()) + logSize >= logFileSize) {
+            prepareNextLogFile();
+            prepareNextPage(logSize);
+        } else if (!appendPage.hasSpace(logSize)) {
+            prepareNextPage(logSize);
         }
         appendPage.append(logRecord, appendLSN.get());
 
@@ -175,6 +175,11 @@
         appendLSN.addAndGet(logSize);
     }
 
+    protected void prepareNextPage(int logSize) {
+        appendPage.isFull(true);
+        getAndInitNewPage(logSize);
+    }
+
     protected void getAndInitNewPage(int logSize) {
         if (logSize > logPageSize) {
             // for now, alloc a new buffer for each large page
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManagerWithReplication.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManagerWithReplication.java
index f27c13f..c81225f 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManagerWithReplication.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManagerWithReplication.java
@@ -99,12 +99,12 @@
         }
 
         final int logRecordSize = logRecord.getLogSize();
-        if (!appendPage.hasSpace(logRecordSize)) {
-            if (getLogFileOffset(appendLSN.get()) + logRecordSize > logFileSize) {
-                prepareNextLogFile();
-            }
-            appendPage.isFull(true);
-            getAndInitNewPage(logRecordSize);
+        // Make sure the log will not exceed the log file size
+        if (getLogFileOffset(appendLSN.get()) + logRecordSize >= logFileSize) {
+            prepareNextLogFile();
+            prepareNextPage(logRecordSize);
+        } else if (!appendPage.hasSpace(logRecordSize)) {
+            prepareNextPage(logRecordSize);
         }
         appendPage.appendWithReplication(logRecord, appendLSN.get());
 
