From 583b1b84293635633199123ff759849fbd09f7f2 Mon Sep 17 00:00:00 2001
From: Mura Li <typeless@users.noreply.github.com>
Date: Sun, 21 Oct 2018 04:48:33 +0800
Subject: [PATCH] Retry test-fixtures loading in case of transaction rollback
 (#5125)

---
 models/test_fixtures.go | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/models/test_fixtures.go b/models/test_fixtures.go
index d7f59ec3b5..2a70bc9816 100644
--- a/models/test_fixtures.go
+++ b/models/test_fixtures.go
@@ -19,5 +19,14 @@ func InitFixtures(helper testfixtures.Helper, dir string) (err error) {
 
 // LoadFixtures load fixtures for a test database
 func LoadFixtures() error {
-	return fixtures.Load()
+	var err error
+	// Database transaction conflicts could occur and result in ROLLBACK
+	// As a simple workaround, we just retry 5 times.
+	for i := 0; i < 5; i++ {
+		err = fixtures.Load()
+		if err == nil {
+			break
+		}
+	}
+	return err
 }