diff --git a/pkg/vm/engine/aoe/storage/db/db.go b/pkg/vm/engine/aoe/storage/db/db.go
index f6231e1c5e1ff37c7bbcb6537bbbc2a586054cec..35b4b3d1e22d40777f26343d92ad4e69ed809fad 100644
--- a/pkg/vm/engine/aoe/storage/db/db.go
+++ b/pkg/vm/engine/aoe/storage/db/db.go
@@ -254,6 +254,8 @@ func (d *DB) ApplySnapshot(dbName string, path string) error {
 	var err error
 	database, _ := d.Store.Catalog.SimpleGetDatabaseByName(dbName)
 	loader := NewDBSSLoader(d.Store.Catalog, database, d.Store.DataTables, path)
+	// TODO: Tem workaround
+	time.Sleep(time.Microsecond * 10)
 	if err = loader.PrepareLoad(); err != nil {
 		return err
 	}
diff --git a/pkg/vm/engine/tae/db/scheduler_test.go b/pkg/vm/engine/tae/db/scheduler_test.go
index 4f9ffcf0f83d76d6eb01b34a31a03a866e3aa6ac..f8b61e033d702dea3a848451dc78e662ce8aacbf 100644
--- a/pkg/vm/engine/tae/db/scheduler_test.go
+++ b/pkg/vm/engine/tae/db/scheduler_test.go
@@ -121,9 +121,10 @@ func TestCheckpoint1(t *testing.T) {
 		assert.Nil(t, err)
 		assert.Nil(t, txn.Commit())
 	}
-	time.Sleep(time.Millisecond * 20)
-	{
-		blockCnt := 0
+
+	blockCnt := 0
+	fn := func() bool {
+		blockCnt = 0
 		blockFn := func(entry *catalog.BlockEntry) error {
 			blockCnt++
 			return nil
@@ -131,9 +132,12 @@ func TestCheckpoint1(t *testing.T) {
 		processor := new(catalog.LoopProcessor)
 		processor.BlockFn = blockFn
 		err := db.Opts.Catalog.RecurLoop(processor)
-		assert.Nil(t, err)
-		assert.Equal(t, 2+3, blockCnt)
+		assert.NoError(t, err)
+		return blockCnt == 2+3
 	}
+	testutils.WaitExpect(1000, fn)
+	fn()
+	assert.Equal(t, 2+3, blockCnt)
 }
 
 func TestCheckpoint2(t *testing.T) {