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:
@@ -1210,7 +1210,7 @@ func mkdirWithParents(repoID, parentDir, newDirPath, user string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
go mergeVirtualRepo(repo.ID, "")
|
mergeVirtualRepoTasks <- repo.ID
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -1529,7 +1529,7 @@ func postFilesAndGenCommit(fileNames []string, repo *repomgr.Repo, user, canonPa
|
|||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
go mergeVirtualRepo(repo.ID, "")
|
mergeVirtualRepoTasks <- repo.ID
|
||||||
|
|
||||||
retJSON, err := formatJSONRet(names, ids, sizes)
|
retJSON, err := formatJSONRet(names, ids, sizes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -2742,7 +2742,7 @@ func putFile(rsp http.ResponseWriter, r *http.Request, repoID, parentDir, user,
|
|||||||
rsp.Write([]byte(fileID))
|
rsp.Write([]byte(fileID))
|
||||||
}
|
}
|
||||||
|
|
||||||
go mergeVirtualRepo(repo.ID, "")
|
mergeVirtualRepoTasks <- repo.ID
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@@ -408,6 +408,8 @@ func main() {
|
|||||||
|
|
||||||
sizeSchedulerInit()
|
sizeSchedulerInit()
|
||||||
|
|
||||||
|
virtualRepoInit()
|
||||||
|
|
||||||
initUpload()
|
initUpload()
|
||||||
|
|
||||||
router := newHTTPRouter()
|
router := newHTTPRouter()
|
||||||
|
@@ -923,7 +923,7 @@ func putUpdateBranchCB(rsp http.ResponseWriter, r *http.Request) *appError {
|
|||||||
return &appError{err, "", http.StatusInternalServerError}
|
return &appError{err, "", http.StatusInternalServerError}
|
||||||
}
|
}
|
||||||
|
|
||||||
mergeVirtualRepo(repoID, "")
|
mergeVirtualRepoTasks <- repoID
|
||||||
|
|
||||||
go updateRepoSize(repoID)
|
go updateRepoSize(repoID)
|
||||||
|
|
||||||
|
@@ -15,6 +15,26 @@ import (
|
|||||||
"github.com/haiwen/seafile-server/fileserver/repomgr"
|
"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) {
|
func mergeVirtualRepo(repoID, excludeRepo string) {
|
||||||
virtual, err := repomgr.IsVirtualRepo(repoID)
|
virtual, err := repomgr.IsVirtualRepo(repoID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Reference in New Issue
Block a user