summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
Diffstat (limited to 'services')
-rw-r--r--services/comments/comments.go1
-rw-r--r--services/gitdiff/gitdiff.go2
-rw-r--r--services/mirror/mirror.go152
-rw-r--r--services/mirror/mirror_test.go1
-rw-r--r--services/pull/commit_status.go1
-rw-r--r--services/pull/pull.go1
-rw-r--r--services/release/release_test.go1
7 files changed, 87 insertions, 72 deletions
diff --git a/services/comments/comments.go b/services/comments/comments.go
index 1ae5e2743f..ba40bf582d 100644
--- a/services/comments/comments.go
+++ b/services/comments/comments.go
@@ -49,6 +49,7 @@ func CreateCodeComment(doer *models.User, repo *models.Repository, issue *models
if err != nil {
return nil, fmt.Errorf("OpenRepository: %v", err)
}
+ defer gitRepo.Close()
// FIXME validate treePath
// Get latest commit referencing the commented line
diff --git a/services/gitdiff/gitdiff.go b/services/gitdiff/gitdiff.go
index c2c5675d9f..9c2aef5c97 100644
--- a/services/gitdiff/gitdiff.go
+++ b/services/gitdiff/gitdiff.go
@@ -678,6 +678,7 @@ func GetDiffRangeWithWhitespaceBehavior(repoPath, beforeCommitID, afterCommitID
if err != nil {
return nil, err
}
+ defer gitRepo.Close()
commit, err := gitRepo.GetCommit(afterCommitID)
if err != nil {
@@ -750,6 +751,7 @@ func GetRawDiffForFile(repoPath, startCommit, endCommit string, diffType RawDiff
if err != nil {
return fmt.Errorf("OpenRepository: %v", err)
}
+ defer repo.Close()
commit, err := repo.GetCommit(endCommit)
if err != nil {
diff --git a/services/mirror/mirror.go b/services/mirror/mirror.go
index 11430c2070..8c8131b5c2 100644
--- a/services/mirror/mirror.go
+++ b/services/mirror/mirror.go
@@ -197,8 +197,10 @@ func runSync(m *models.Mirror) ([]*mirrorSyncResult, bool) {
return nil, false
}
if err = models.SyncReleasesWithTags(m.Repo, gitRepo); err != nil {
+ gitRepo.Close()
log.Error("Failed to synchronize tags to releases for repository: %v", err)
}
+ gitRepo.Close()
if err := m.Repo.UpdateSize(); err != nil {
log.Error("Failed to update size for mirror repository: %v", err)
@@ -290,97 +292,103 @@ func Update() {
func SyncMirrors() {
// Start listening on new sync requests.
for repoID := range mirrorQueue.Queue() {
- log.Trace("SyncMirrors [repo_id: %v]", repoID)
- mirrorQueue.Remove(repoID)
+ syncMirror(repoID)
+ }
+}
+
+func syncMirror(repoID string) {
+ log.Trace("SyncMirrors [repo_id: %v]", repoID)
+ mirrorQueue.Remove(repoID)
+
+ m, err := models.GetMirrorByRepoID(com.StrTo(repoID).MustInt64())
+ if err != nil {
+ log.Error("GetMirrorByRepoID [%s]: %v", repoID, err)
+ return
+
+ }
+
+ results, ok := runSync(m)
+ if !ok {
+ return
+ }
+
+ m.ScheduleNextUpdate()
+ if err = models.UpdateMirror(m); err != nil {
+ log.Error("UpdateMirror [%s]: %v", repoID, err)
+ return
+ }
- m, err := models.GetMirrorByRepoID(com.StrTo(repoID).MustInt64())
+ var gitRepo *git.Repository
+ if len(results) == 0 {
+ log.Trace("SyncMirrors [repo_id: %d]: no commits fetched", m.RepoID)
+ } else {
+ gitRepo, err = git.OpenRepository(m.Repo.RepoPath())
if err != nil {
- log.Error("GetMirrorByRepoID [%s]: %v", repoID, err)
- continue
+ log.Error("OpenRepository [%d]: %v", m.RepoID, err)
+ return
}
+ defer gitRepo.Close()
+ }
- results, ok := runSync(m)
- if !ok {
+ for _, result := range results {
+ // Discard GitHub pull requests, i.e. refs/pull/*
+ if strings.HasPrefix(result.refName, "refs/pull/") {
continue
}
- m.ScheduleNextUpdate()
- if err = models.UpdateMirror(m); err != nil {
- log.Error("UpdateMirror [%s]: %v", repoID, err)
+ // Create reference
+ if result.oldCommitID == gitShortEmptySha {
+ if err = SyncCreateAction(m.Repo, result.refName); err != nil {
+ log.Error("SyncCreateAction [repo_id: %d]: %v", m.RepoID, err)
+ }
continue
}
- var gitRepo *git.Repository
- if len(results) == 0 {
- log.Trace("SyncMirrors [repo_id: %d]: no commits fetched", m.RepoID)
- } else {
- gitRepo, err = git.OpenRepository(m.Repo.RepoPath())
- if err != nil {
- log.Error("OpenRepository [%d]: %v", m.RepoID, err)
- continue
+ // Delete reference
+ if result.newCommitID == gitShortEmptySha {
+ if err = SyncDeleteAction(m.Repo, result.refName); err != nil {
+ log.Error("SyncDeleteAction [repo_id: %d]: %v", m.RepoID, err)
}
+ continue
}
- for _, result := range results {
- // Discard GitHub pull requests, i.e. refs/pull/*
- if strings.HasPrefix(result.refName, "refs/pull/") {
- continue
- }
-
- // Create reference
- if result.oldCommitID == gitShortEmptySha {
- if err = SyncCreateAction(m.Repo, result.refName); err != nil {
- log.Error("SyncCreateAction [repo_id: %d]: %v", m.RepoID, err)
- }
- continue
- }
-
- // Delete reference
- if result.newCommitID == gitShortEmptySha {
- if err = SyncDeleteAction(m.Repo, result.refName); err != nil {
- log.Error("SyncDeleteAction [repo_id: %d]: %v", m.RepoID, err)
- }
- continue
- }
-
- // Push commits
- oldCommitID, err := git.GetFullCommitID(gitRepo.Path, result.oldCommitID)
- if err != nil {
- log.Error("GetFullCommitID [%d]: %v", m.RepoID, err)
- continue
- }
- newCommitID, err := git.GetFullCommitID(gitRepo.Path, result.newCommitID)
- if err != nil {
- log.Error("GetFullCommitID [%d]: %v", m.RepoID, err)
- continue
- }
- commits, err := gitRepo.CommitsBetweenIDs(newCommitID, oldCommitID)
- if err != nil {
- log.Error("CommitsBetweenIDs [repo_id: %d, new_commit_id: %s, old_commit_id: %s]: %v", m.RepoID, newCommitID, oldCommitID, err)
- continue
- }
- if err = SyncPushAction(m.Repo, SyncPushActionOptions{
- RefName: result.refName,
- OldCommitID: oldCommitID,
- NewCommitID: newCommitID,
- Commits: models.ListToPushCommits(commits),
- }); err != nil {
- log.Error("SyncPushAction [repo_id: %d]: %v", m.RepoID, err)
- continue
- }
+ // Push commits
+ oldCommitID, err := git.GetFullCommitID(gitRepo.Path, result.oldCommitID)
+ if err != nil {
+ log.Error("GetFullCommitID [%d]: %v", m.RepoID, err)
+ continue
}
-
- // Get latest commit date and update to current repository updated time
- commitDate, err := git.GetLatestCommitTime(m.Repo.RepoPath())
+ newCommitID, err := git.GetFullCommitID(gitRepo.Path, result.newCommitID)
if err != nil {
- log.Error("GetLatestCommitDate [%d]: %v", m.RepoID, err)
+ log.Error("GetFullCommitID [%d]: %v", m.RepoID, err)
continue
}
-
- if err = models.UpdateRepositoryUpdatedTime(m.RepoID, commitDate); err != nil {
- log.Error("Update repository 'updated_unix' [%d]: %v", m.RepoID, err)
+ commits, err := gitRepo.CommitsBetweenIDs(newCommitID, oldCommitID)
+ if err != nil {
+ log.Error("CommitsBetweenIDs [repo_id: %d, new_commit_id: %s, old_commit_id: %s]: %v", m.RepoID, newCommitID, oldCommitID, err)
continue
}
+ if err = SyncPushAction(m.Repo, SyncPushActionOptions{
+ RefName: result.refName,
+ OldCommitID: oldCommitID,
+ NewCommitID: newCommitID,
+ Commits: models.ListToPushCommits(commits),
+ }); err != nil {
+ log.Error("SyncPushAction [repo_id: %d]: %v", m.RepoID, err)
+ continue
+ }
+ }
+
+ // Get latest commit date and update to current repository updated time
+ commitDate, err := git.GetLatestCommitTime(m.Repo.RepoPath())
+ if err != nil {
+ log.Error("GetLatestCommitDate [%d]: %v", m.RepoID, err)
+ return
+ }
+
+ if err = models.UpdateRepositoryUpdatedTime(m.RepoID, commitDate); err != nil {
+ log.Error("Update repository 'updated_unix' [%d]: %v", m.RepoID, err)
+ return
}
}
diff --git a/services/mirror/mirror_test.go b/services/mirror/mirror_test.go
index 9ad11b7265..37e8a7be57 100644
--- a/services/mirror/mirror_test.go
+++ b/services/mirror/mirror_test.go
@@ -51,6 +51,7 @@ func TestRelease_MirrorDelete(t *testing.T) {
gitRepo, err := git.OpenRepository(repoPath)
assert.NoError(t, err)
+ defer gitRepo.Close()
findOptions := models.FindReleasesOptions{IncludeDrafts: true, IncludeTags: true}
initCount, err := models.GetReleaseCountByRepoID(mirror.ID, findOptions)
diff --git a/services/pull/commit_status.go b/services/pull/commit_status.go
index 2872db7bd2..ca00cdaad9 100644
--- a/services/pull/commit_status.go
+++ b/services/pull/commit_status.go
@@ -55,6 +55,7 @@ func IsPullCommitStatusPass(pr *models.PullRequest) (bool, error) {
if err != nil {
return false, errors.Wrap(err, "OpenRepository")
}
+ defer headGitRepo.Close()
if !headGitRepo.IsBranchExist(pr.HeadBranch) {
return false, errors.New("Head branch does not exist, can not merge")
diff --git a/services/pull/pull.go b/services/pull/pull.go
index 4e981b2b26..7a9c2ef9ad 100644
--- a/services/pull/pull.go
+++ b/services/pull/pull.go
@@ -48,6 +48,7 @@ func checkForInvalidation(requests models.PullRequestList, repoID int64, doer *m
if err != nil {
log.Error("PullRequestList.InvalidateCodeComments: %v", err)
}
+ gitRepo.Close()
}()
return nil
}
diff --git a/services/release/release_test.go b/services/release/release_test.go
index d30dfee286..effab21251 100644
--- a/services/release/release_test.go
+++ b/services/release/release_test.go
@@ -27,6 +27,7 @@ func TestRelease_Create(t *testing.T) {
gitRepo, err := git.OpenRepository(repoPath)
assert.NoError(t, err)
+ defer gitRepo.Close()
assert.NoError(t, CreateRelease(gitRepo, &models.Release{
RepoID: repo.ID,