Skip to content

Commit f2ecc37

Browse files
committed
Add test for tail corruption when last file is corrupted.
1 parent 03359f6 commit f2ecc37

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

diskqueue_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,23 @@ func TestDiskQueueCorruption(t *testing.T) {
247247
dq.Put(msg)
248248

249249
Equal(t, msg, <-dq.ReadChan())
250+
251+
dq.Put(msg)
252+
dq.Put(msg)
253+
// corrupt the last file
254+
dqFn = dq.(*diskQueue).fileName(5)
255+
os.Truncate(dqFn, 100)
256+
257+
Equal(t, int64(2), dq.Depth())
258+
259+
// return one message and try reading again from corrupted file
260+
<-dq.ReadChan()
261+
262+
// give diskqueue time to handle read error
263+
time.Sleep(50 * time.Millisecond)
264+
265+
// the last log file is now considered corrupted leaving no more log messages
266+
Equal(t, int64(0), dq.Depth())
250267
}
251268

252269
type md struct {

0 commit comments

Comments
 (0)