🎨 Improve cloud sync

This commit is contained in:
Liang Ding 2022-07-07 21:41:02 +08:00
parent acddd46012
commit f63d551e2e
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
3 changed files with 44 additions and 17 deletions

View file

@ -41,7 +41,7 @@ require (
github.com/qiniu/go-sdk/v7 v7.13.0
github.com/radovskyb/watcher v1.0.7
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06
github.com/siyuan-note/dejavu v0.0.0-20220706152612-01484c9d21c7
github.com/siyuan-note/dejavu v0.0.0-20220707133820-6e8292d6d3e5
github.com/siyuan-note/encryption v0.0.0-20220612074546-f1dd94fe8676
github.com/siyuan-note/eventbus v0.0.0-20220624162334-ca7c06dc771f
github.com/siyuan-note/filelock v0.0.0-20220704090116-54dfb035283f

View file

@ -426,6 +426,8 @@ github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJV
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/siyuan-note/dejavu v0.0.0-20220706152612-01484c9d21c7 h1:zmn9x7bGlXxt9KB7+3r2QVEcI1bAaanXG1t8BQwL4MI=
github.com/siyuan-note/dejavu v0.0.0-20220706152612-01484c9d21c7/go.mod h1:ral+X0pNW6nSQVvIcxllUXSczCaY4UOCT2iGlO4YNg0=
github.com/siyuan-note/dejavu v0.0.0-20220707133820-6e8292d6d3e5 h1:rGr2cYzD+DCc3flnvsDamaHag66xWVZ7OjHXDACf3CI=
github.com/siyuan-note/dejavu v0.0.0-20220707133820-6e8292d6d3e5/go.mod h1:ral+X0pNW6nSQVvIcxllUXSczCaY4UOCT2iGlO4YNg0=
github.com/siyuan-note/encryption v0.0.0-20220612074546-f1dd94fe8676 h1:QB9TjJQFhXhZ6dAtPpY02DlzHAQm1C+WqZq6OadG8mI=
github.com/siyuan-note/encryption v0.0.0-20220612074546-f1dd94fe8676/go.mod h1:H8fyqqAbp9XreANjeSbc72zEdFfKTXYN34tc1TjZwtw=
github.com/siyuan-note/eventbus v0.0.0-20220624162334-ca7c06dc771f h1:JMobMNZ7AqaKKyEK+WeWFhix/2TDQXgPZDajU00IybU=

View file

@ -442,10 +442,7 @@ func syncRepo(boot, exit, byHand bool) {
return
}
syncContext := map[string]interface{}{dejavu.CtxPushMsg: dejavu.CtxPushMsgToStatusBar}
_, mergeUpserts, mergeRemoves, _,
uploadFileCount, downloadFileCount, uploadChunkCount, downloadChunkCount,
uploadBytes, downloadBytes, err := repo.Sync(cloudInfo, syncContext)
_, mergeResult, trafficStat, err := repo.Sync(cloudInfo, syncContext)
elapsed := time.Since(start)
if nil != err {
@ -468,10 +465,10 @@ func syncRepo(boot, exit, byHand bool) {
}
util.PushStatusBar(fmt.Sprintf(Conf.Language(149), elapsed.Seconds()))
Conf.Sync.Synced = util.CurrentTimeMillis()
msg := fmt.Sprintf(Conf.Language(150), uploadFileCount, downloadFileCount, uploadChunkCount, downloadChunkCount, byteCountSI(uploadBytes), byteCountSI(downloadBytes))
msg := fmt.Sprintf(Conf.Language(150), trafficStat.UploadFileCount, trafficStat.DownloadFileCount, trafficStat.UploadChunkCount, trafficStat.DownloadChunkCount, byteCountSI(trafficStat.UploadBytes), byteCountSI(trafficStat.DownloadBytes))
Conf.Sync.Stat = msg
if 1 > len(mergeUpserts) && 1 > len(mergeRemoves) { // 没有数据变更
if 1 > len(mergeResult.Upserts) && 1 > len(mergeResult.Removes) { // 没有数据变更
syncSameCount++
if 10 < syncSameCount {
syncSameCount = 5
@ -489,10 +486,10 @@ func syncRepo(boot, exit, byHand bool) {
// 有数据变更,需要重建索引
var upserts, removes []string
for _, file := range mergeUpserts {
for _, file := range mergeResult.Upserts {
upserts = append(upserts, file.Path)
}
for _, file := range mergeRemoves {
for _, file := range mergeResult.Removes {
removes = append(removes, file.Path)
}
incReindex(upserts, removes)
@ -583,26 +580,54 @@ func subscribeEvents() {
contextPushMsg(context, msg)
})
eventbus.Subscribe(dejavu.EvtBeforeDownloadCloudIndex, func(context map[string]interface{}) {
msg := "Downloading data repository latest..."
eventbus.Subscribe(dejavu.EvtCloudBeforeDownloadIndex, func(context map[string]interface{}, id string) {
msg := "Downloading data repository index [" + id + "]"
util.SetBootDetails(msg)
contextPushMsg(context, msg)
})
eventbus.Subscribe(dejavu.EvtBeforeDownloadCloudFile, func(context map[string]interface{}, id string) {
msg := "Downloading data repository object [" + id + "]"
eventbus.Subscribe(dejavu.EvtCloudBeforeDownloadFile, func(context map[string]interface{}, id string) {
msg := "Downloading data repository file [" + id + "]"
util.SetBootDetails(msg)
contextPushMsg(context, msg)
//util.LogInfof("%s", msg)
})
eventbus.Subscribe(dejavu.EvtCloudBeforeDownloadChunk, func(context map[string]interface{}, id string) {
msg := "Downloading data repository chunk [" + id + "]"
util.SetBootDetails(msg)
contextPushMsg(context, msg)
//util.LogInfof("%s", msg)
})
eventbus.Subscribe(dejavu.EvtCloudBeforeDownloadRef, func(context map[string]interface{}, ref string) {
msg := "Downloading data repository ref [" + ref + "]"
util.SetBootDetails(msg)
contextPushMsg(context, msg)
})
eventbus.Subscribe(dejavu.EvtBeforeDownloadCloudChunk, func(context map[string]interface{}, id string) {
msg := "Downloading data repository object [" + id + "]"
eventbus.Subscribe(dejavu.EvtCloudBeforeUploadIndex, func(context map[string]interface{}, id string) {
msg := "Uploading data repository index [" + id + "]"
util.SetBootDetails(msg)
contextPushMsg(context, msg)
})
eventbus.Subscribe(dejavu.EvtBeforeUploadObject, func(context map[string]interface{}, id string) {
msg := "Uploading data repository object [" + id + "]"
eventbus.Subscribe(dejavu.EvtCloudBeforeUploadFile, func(context map[string]interface{}, id string) {
msg := "Uploading data repository file [" + id + "]"
util.SetBootDetails(msg)
contextPushMsg(context, msg)
//util.LogInfof("%s", msg)
})
eventbus.Subscribe(dejavu.EvtCloudBeforeUploadChunk, func(context map[string]interface{}, id string) {
msg := "Uploading data repository chunk [" + id + "]"
util.SetBootDetails(msg)
contextPushMsg(context, msg)
//util.LogInfof("%s", msg)
})
eventbus.Subscribe(dejavu.EvtCloudBeforeUploadRef, func(context map[string]interface{}, ref string) {
msg := "Uploading data repository ref [" + ref + "]"
util.SetBootDetails(msg)
contextPushMsg(context, msg)
})