Browse Source

Merge pull request #3959 from xiang90/fix_storage_test

storage: make RestoreContinueUnfinishedCompaction more reliable
Xiang Li 10 years ago
parent
commit
127b529582
1 changed files with 15 additions and 6 deletions
  1. 15 6
      storage/kvstore_test.go

+ 15 - 6
storage/kvstore_test.go

@@ -630,13 +630,22 @@ func TestRestoreContinueUnfinishedCompaction(t *testing.T) {
 	revbytes := newRevBytes()
 	// TODO: compact should delete main=2 key too
 	revToBytes(revision{main: 1}, revbytes)
-	tx = s1.b.BatchTx()
-	tx.Lock()
-	ks, _ := tx.UnsafeRange(keyBucketName, revbytes, nil, 0)
-	if len(ks) != 0 {
-		t.Errorf("key for rev %+v still exists, want deleted", bytesToRev(revbytes))
+
+	// The disk compaction is done asynchronously and requires more time on slow disk.
+	// try 5 times for CI with slow IO.
+	for i := 0; i < 5; i++ {
+		tx = s1.b.BatchTx()
+		tx.Lock()
+		ks, _ := tx.UnsafeRange(keyBucketName, revbytes, nil, 0)
+		if len(ks) != 0 {
+			time.Sleep(100 * time.Millisecond)
+			continue
+		}
+		tx.Unlock()
+		return
 	}
-	tx.Unlock()
+
+	t.Errorf("key for rev %+v still exists, want deleted", bytesToRev(revbytes))
 }
 
 func TestTxnBlockBackendForceCommit(t *testing.T) {