diff --git a/common/source/java/ch/systemsx/cisd/common/collections/RecordBasedQueuePersister.java b/common/source/java/ch/systemsx/cisd/common/collections/RecordBasedQueuePersister.java
index 663f8831bd8eea4f4bcfa5acd8b8d0f32499661c..035118c0df1d97f39236c865a3493978f1bee0b0 100644
--- a/common/source/java/ch/systemsx/cisd/common/collections/RecordBasedQueuePersister.java
+++ b/common/source/java/ch/systemsx/cisd/common/collections/RecordBasedQueuePersister.java
@@ -143,7 +143,7 @@ public class RecordBasedQueuePersister<E> implements IQueuePersister<E>
         try
         {
             this.randomAccessFile = new RandomAccessFile(queueFile, "rw");
-            if (randomAccessFile.length() == 0)
+            if (randomAccessFile.length() < HEADER_LENGTH)
             {
                 this.recordSize = initialRecordSize;
                 writeFullHeader(randomAccessFile, firstRecord, lastRecord, initialRecordSize);
diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/collections/RecordBasedQueuePersisterTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/collections/RecordBasedQueuePersisterTest.java
index af8a22216d1e182f57fae14a362df25d4e4bdf98..c320907f186d131e3452ac0d0c53b92619bd854a 100644
--- a/common/sourceTest/java/ch/systemsx/cisd/common/collections/RecordBasedQueuePersisterTest.java
+++ b/common/sourceTest/java/ch/systemsx/cisd/common/collections/RecordBasedQueuePersisterTest.java
@@ -17,6 +17,7 @@
 package ch.systemsx.cisd.common.collections;
 
 import java.io.File;
+import java.io.RandomAccessFile;
 import java.util.concurrent.ArrayBlockingQueue;
 
 import org.testng.AssertJUnit;
@@ -58,7 +59,7 @@ public class RecordBasedQueuePersisterTest extends AssertJUnit
     public void testPersist()
     {
         String element =
-                "a string with more characters then "
+                "a string with more characters than "
                         + "RecordBasedQueuePersister.DEFAULT_INITIAL_RECORD_SIZE";
         assertEquals(true, element.length() > RecordBasedQueuePersister.DEFAULT_INITIAL_RECORD_SIZE);
         queue.add(element);
@@ -100,4 +101,29 @@ public class RecordBasedQueuePersisterTest extends AssertJUnit
         assertEquals("", queue.poll());
         assertEquals("foo", queue.poll());
     }
+
+    @Test
+    public void testQueueFileSizeLessThanHeaderSize() throws Exception
+    {
+        assertEquals("Couldn't delete " + TMP, true, FileUtilities.deleteRecursively(TMP));
+        TMP.mkdirs();
+        queue = new ArrayBlockingQueue<String>(10);
+
+        // write a data shorter than header size
+        RandomAccessFile tooShortRaf = new RandomAccessFile(QUEUE_FILE, "rw");
+        tooShortRaf.writeInt(1);
+        tooShortRaf.close();
+
+        persister = new RecordBasedQueuePersister<String>(queue, QUEUE_FILE);
+
+        queue.add("test");
+        persister.persist();
+        persister.close();
+        queue.clear();
+        persister = new RecordBasedQueuePersister<String>(queue, QUEUE_FILE);
+
+        assertEquals(1, queue.size());
+        assertEquals("test", queue.poll());
+    }
+
 }