Refactor synctree
This commit is contained in:
parent
6518a0f971
commit
e1784aa2fb
@ -132,17 +132,16 @@ func BuildSyncTreeOrGetRemote(ctx context.Context, id string, deps BuildDeps) (t
|
||||
return
|
||||
}
|
||||
|
||||
store, err := deps.SpaceStorage.TreeStorage(id)
|
||||
deps.TreeStorage, err = deps.SpaceStorage.TreeStorage(id)
|
||||
if err == nil {
|
||||
return buildSyncTree(ctx, false, deps)
|
||||
}
|
||||
|
||||
if err != nil && err != storage.ErrUnknownTreeId {
|
||||
return
|
||||
}
|
||||
|
||||
isFirstBuild := false
|
||||
if err == storage.ErrUnknownTreeId {
|
||||
isFirstBuild = true
|
||||
|
||||
var resp *treechangeproto.TreeSyncMessage
|
||||
resp, err = getTreeRemote()
|
||||
resp, err := getTreeRemote()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@ -155,22 +154,20 @@ func BuildSyncTreeOrGetRemote(ctx context.Context, id string, deps BuildDeps) (t
|
||||
Heads: fullSyncResp.Heads,
|
||||
}
|
||||
|
||||
// basically building tree with inmemory storage and validating that it was without errors
|
||||
// basically building tree with in-memory storage and validating that it was without errors
|
||||
err = tree.ValidateRawTree(payload, deps.AclList)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
// now we are sure that we can save it to the storage
|
||||
store, err = deps.SpaceStorage.CreateTreeStorage(payload)
|
||||
deps.TreeStorage, err = deps.SpaceStorage.CreateTreeStorage(payload)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
deps.TreeStorage = store
|
||||
return BuildSyncTree(ctx, isFirstBuild, deps)
|
||||
return buildSyncTree(ctx, true, deps)
|
||||
}
|
||||
|
||||
func BuildSyncTree(
|
||||
func buildSyncTree(
|
||||
ctx context.Context,
|
||||
isFirstBuild bool,
|
||||
deps BuildDeps) (t tree.ObjectTree, err error) {
|
||||
|
||||
@ -103,7 +103,7 @@ func Test_BuildSyncTree(t *testing.T) {
|
||||
syncClientMock.EXPECT().CreateHeadUpdate(syncTreeMatcher{objTreeMock, syncClientMock, updateListenerMock}, gomock.Nil()).Return(headUpdate)
|
||||
syncClientMock.EXPECT().BroadcastAsyncOrSendResponsible(gomock.Eq(headUpdate)).Return(nil)
|
||||
|
||||
tr, err := BuildSyncTree(ctx, syncClientMock, storageMock, updateListenerMock, aclListMock, false)
|
||||
tr, err := buildSyncTree(ctx, syncClientMock, storageMock, updateListenerMock, aclListMock, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
t.Run("AddRawChanges update", func(t *testing.T) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user