1
0
mirror of https://github.com/haiwen/seafile-server.git synced 2025-09-03 00:14:23 +00:00

create merge virtual repo task pool (#473)

* create merge virtual repo task pool

* use for range
This commit is contained in:
Xiangyue Cai
2021-06-30 11:21:57 +08:00
committed by GitHub
parent d8a4a9a72d
commit 537226aca7
4 changed files with 26 additions and 4 deletions

View File

@@ -1210,7 +1210,7 @@ func mkdirWithParents(repoID, parentDir, newDirPath, user string) error {
return err
}
go mergeVirtualRepo(repo.ID, "")
mergeVirtualRepoTasks <- repo.ID
return nil
}
@@ -1529,7 +1529,7 @@ func postFilesAndGenCommit(fileNames []string, repo *repomgr.Repo, user, canonPa
return "", err
}
go mergeVirtualRepo(repo.ID, "")
mergeVirtualRepoTasks <- repo.ID
retJSON, err := formatJSONRet(names, ids, sizes)
if err != nil {
@@ -2742,7 +2742,7 @@ func putFile(rsp http.ResponseWriter, r *http.Request, repoID, parentDir, user,
rsp.Write([]byte(fileID))
}
go mergeVirtualRepo(repo.ID, "")
mergeVirtualRepoTasks <- repo.ID
return nil
}

View File

@@ -408,6 +408,8 @@ func main() {
sizeSchedulerInit()
virtualRepoInit()
initUpload()
router := newHTTPRouter()

View File

@@ -923,7 +923,7 @@ func putUpdateBranchCB(rsp http.ResponseWriter, r *http.Request) *appError {
return &appError{err, "", http.StatusInternalServerError}
}
mergeVirtualRepo(repoID, "")
mergeVirtualRepoTasks <- repoID
go updateRepoSize(repoID)

View File

@@ -15,6 +15,26 @@ import (
"github.com/haiwen/seafile-server/fileserver/repomgr"
)
const mergeVirtualRepoWorkerNumber = 5
var mergeVirtualRepoTasks = make(chan string, 100)
func virtualRepoInit() {
go createMergeVirtualRepoTaskPool(mergeVirtualRepoWorkerNumber)
}
func createMergeVirtualRepoTaskPool(n int) {
for i := 0; i < n; i++ {
go mergeVirtualRepoWorker()
}
}
func mergeVirtualRepoWorker() {
for repoID := range mergeVirtualRepoTasks {
mergeVirtualRepo(repoID, "")
}
}
func mergeVirtualRepo(repoID, excludeRepo string) {
virtual, err := repomgr.IsVirtualRepo(repoID)
if err != nil {