summaryrefslogtreecommitdiff
path: root/tests/threads
diff options
context:
space:
mode:
Diffstat (limited to 'tests/threads')
-rw-r--r--tests/threads/refdb.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/tests/threads/refdb.c b/tests/threads/refdb.c
index d8dc77ba5..ae1a935de 100644
--- a/tests/threads/refdb.c
+++ b/tests/threads/refdb.c
@@ -29,11 +29,14 @@ static void *iterate_refs(void *arg)
struct th_data *data = (struct th_data *) arg;
git_reference_iterator *i;
git_reference *ref;
- int count = 0;
+ int count = 0, error;
git_repository *repo;
cl_git_pass(git_repository_open(&repo, data->path));
- cl_git_pass(git_reference_iterator_new(&i, repo));
+ do {
+ error = git_reference_iterator_new(&i, repo);
+ } while (error == GIT_ELOCKED);
+ cl_git_pass(error);
for (count = 0; !git_reference_next(&ref, i); ++count) {
cl_assert(ref != NULL);
@@ -61,11 +64,17 @@ static void *create_refs(void *arg)
cl_git_pass(git_repository_open(&repo, data->path));
- cl_git_pass(git_reference_name_to_id(&head, repo, "HEAD"));
+ do {
+ error = git_reference_name_to_id(&head, repo, "HEAD");
+ } while (error == GIT_ELOCKED);
+ cl_git_pass(error);
for (i = 0; i < 10; ++i) {
p_snprintf(name, sizeof(name), "refs/heads/thread-%03d-%02d", data->id, i);
- cl_git_pass(git_reference_create(&ref[i], repo, name, &head, 0, NULL));
+ do {
+ error = git_reference_create(&ref[i], repo, name, &head, 0, NULL);
+ } while (error == GIT_ELOCKED);
+ cl_git_pass(error);
if (i == 5) {
git_refdb *refdb;