diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/LogManagerTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/LogManagerTest.java
index 6a70a29..1c8ac62 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/LogManagerTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/LogManagerTest.java
@@ -19,6 +19,7 @@
 package org.apache.asterix.test.txn;
 
 import java.lang.reflect.Method;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -36,6 +37,7 @@
 import org.apache.asterix.common.transactions.ITransactionContext;
 import org.apache.asterix.common.transactions.ITransactionManager;
 import org.apache.asterix.common.transactions.LogRecord;
+import org.apache.asterix.common.transactions.LogSource;
 import org.apache.asterix.common.transactions.LogType;
 import org.apache.asterix.common.transactions.TransactionOptions;
 import org.apache.asterix.common.transactions.TxnId;
@@ -43,6 +45,7 @@
 import org.apache.asterix.metadata.entities.Dataset;
 import org.apache.asterix.test.common.TestTupleReference;
 import org.apache.asterix.transaction.management.service.logging.LogManager;
+import org.apache.asterix.transaction.management.service.transaction.TransactionContextFactory;
 import org.apache.asterix.transaction.management.service.transaction.TransactionManagementConstants.LockManagerConstants;
 import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
@@ -164,6 +167,27 @@
         interruptedLogPageSwitch();
     }
 
+    @Test
+    public void waitLogTest() throws Exception {
+        final INcApplicationContext ncAppCtx = (INcApplicationContext) integrationUtil.ncs[0].getApplicationContext();
+        LogRecord logRecord = new LogRecord();
+        final long txnId = 1;
+        logRecord.setTxnCtx(TransactionContextFactory.create(new TxnId(txnId),
+                new TransactionOptions(ITransactionManager.AtomicityLevel.ENTITY_LEVEL)));
+        logRecord.setLogSource(LogSource.LOCAL);
+        logRecord.setLogType(LogType.WAIT);
+        logRecord.setTxnId(txnId);
+        logRecord.isFlushed(false);
+        logRecord.computeAndSetLogSize();
+        Thread transactor = new Thread(() -> {
+            final LogManager logManager = (LogManager) ncAppCtx.getTransactionSubsystem().getLogManager();
+            logManager.log(logRecord);
+        });
+        transactor.start();
+        transactor.join(TimeUnit.SECONDS.toMillis(30));
+        Assert.assertTrue(logRecord.isFlushed());
+    }
+
     private static ITransactionContext beingTransaction(INcApplicationContext ncAppCtx, ILSMIndex index,
             long resourceId) {
         final TxnId txnId = new TxnId(1);
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogRecord.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogRecord.java
index 7e61266..d85fd70 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogRecord.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogRecord.java
@@ -255,11 +255,6 @@
                 computeAndSetLogSize();
                 break;
             case LogType.WAIT:
-                if (buffer.remaining() < ILogRecord.DS_LEN) {
-                    return RecordReadStatus.TRUNCATED;
-                }
-                datasetId = buffer.getInt();
-                resourceId = 0l;
                 computeAndSetLogSize();
                 break;
             case LogType.JOB_COMMIT:
