Update any-sync to wait sync for docs
This commit is contained in:
parent
c27e8a9773
commit
3cbecca696
@ -97,18 +97,18 @@ func (mr *MockObjectTreeMockRecorder) Close() *gomock.Call {
|
||||
}
|
||||
|
||||
// DebugDump mocks base method.
|
||||
func (m *MockObjectTree) DebugDump() (string, error) {
|
||||
func (m *MockObjectTree) DebugDump(arg0 objecttree.DescriptionParser) (string, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "DebugDump")
|
||||
ret := m.ctrl.Call(m, "DebugDump", arg0)
|
||||
ret0, _ := ret[0].(string)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// DebugDump indicates an expected call of DebugDump.
|
||||
func (mr *MockObjectTreeMockRecorder) DebugDump() *gomock.Call {
|
||||
func (mr *MockObjectTreeMockRecorder) DebugDump(arg0 interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DebugDump", reflect.TypeOf((*MockObjectTree)(nil).DebugDump))
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DebugDump", reflect.TypeOf((*MockObjectTree)(nil).DebugDump), arg0)
|
||||
}
|
||||
|
||||
// Delete mocks base method.
|
||||
|
||||
@ -221,18 +221,18 @@ func (mr *MockSyncTreeMockRecorder) Close() *gomock.Call {
|
||||
}
|
||||
|
||||
// DebugDump mocks base method.
|
||||
func (m *MockSyncTree) DebugDump() (string, error) {
|
||||
func (m *MockSyncTree) DebugDump(arg0 objecttree.DescriptionParser) (string, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "DebugDump")
|
||||
ret := m.ctrl.Call(m, "DebugDump", arg0)
|
||||
ret0, _ := ret[0].(string)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// DebugDump indicates an expected call of DebugDump.
|
||||
func (mr *MockSyncTreeMockRecorder) DebugDump() *gomock.Call {
|
||||
func (mr *MockSyncTreeMockRecorder) DebugDump(arg0 interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DebugDump", reflect.TypeOf((*MockSyncTree)(nil).DebugDump))
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DebugDump", reflect.TypeOf((*MockSyncTree)(nil).DebugDump), arg0)
|
||||
}
|
||||
|
||||
// Delete mocks base method.
|
||||
|
||||
@ -65,6 +65,7 @@ type BuildDeps struct {
|
||||
TreeStorage treestorage.TreeStorage
|
||||
TreeUsage *atomic.Int32
|
||||
SyncStatus syncstatus.StatusUpdater
|
||||
WaitTreeRemoteSync bool
|
||||
}
|
||||
|
||||
func newWrappedSyncClient(
|
||||
@ -104,6 +105,25 @@ func BuildSyncTreeOrGetRemote(ctx context.Context, id string, deps BuildDeps) (t
|
||||
return
|
||||
}
|
||||
|
||||
waitTree := func(wait bool) (msg *treechangeproto.TreeSyncMessage, err error) {
|
||||
if !wait {
|
||||
return getTreeRemote()
|
||||
}
|
||||
for {
|
||||
msg, err = getTreeRemote()
|
||||
if err == nil {
|
||||
return
|
||||
}
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
err = fmt.Errorf("waiting for object %s interrupted, context closed", id)
|
||||
return
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
deps.TreeStorage, err = deps.SpaceStorage.TreeStorage(id)
|
||||
if err == nil {
|
||||
return buildSyncTree(ctx, false, deps)
|
||||
@ -122,7 +142,7 @@ func BuildSyncTreeOrGetRemote(ctx context.Context, id string, deps BuildDeps) (t
|
||||
return
|
||||
}
|
||||
|
||||
resp, err := getTreeRemote()
|
||||
resp, err := waitTree(deps.WaitTreeRemoteSync)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@ -84,7 +84,7 @@ type Space interface {
|
||||
DeriveTree(ctx context.Context, payload objecttree.ObjectTreeCreatePayload) (res treestorage.TreeStorageCreatePayload, err error)
|
||||
CreateTree(ctx context.Context, payload objecttree.ObjectTreeCreatePayload) (res treestorage.TreeStorageCreatePayload, err error)
|
||||
PutTree(ctx context.Context, payload treestorage.TreeStorageCreatePayload, listener updatelistener.UpdateListener) (t objecttree.ObjectTree, err error)
|
||||
BuildTree(ctx context.Context, id string, listener updatelistener.UpdateListener) (objecttree.ObjectTree, error)
|
||||
BuildTree(ctx context.Context, id string, opts BuildTreeOpts) (t objecttree.ObjectTree, err error)
|
||||
DeleteTree(ctx context.Context, id string) (err error)
|
||||
|
||||
SyncStatus() syncstatus.StatusUpdater
|
||||
@ -176,7 +176,10 @@ func (s *space) Init(ctx context.Context) (err error) {
|
||||
deletionState := deletionstate.NewDeletionState(s.storage)
|
||||
deps := settings.Deps{
|
||||
BuildFunc: func(ctx context.Context, id string, listener updatelistener.UpdateListener) (t synctree.SyncTree, err error) {
|
||||
res, err := s.BuildTree(ctx, id, listener)
|
||||
res, err := s.BuildTree(ctx, id, BuildTreeOpts{
|
||||
Listener: listener,
|
||||
WaitTreeRemoteSync: false,
|
||||
})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@ -289,7 +292,12 @@ func (s *space) PutTree(ctx context.Context, payload treestorage.TreeStorageCrea
|
||||
return
|
||||
}
|
||||
|
||||
func (s *space) BuildTree(ctx context.Context, id string, listener updatelistener.UpdateListener) (t objecttree.ObjectTree, err error) {
|
||||
type BuildTreeOpts struct {
|
||||
Listener updatelistener.UpdateListener
|
||||
WaitTreeRemoteSync bool
|
||||
}
|
||||
|
||||
func (s *space) BuildTree(ctx context.Context, id string, opts BuildTreeOpts) (t objecttree.ObjectTree, err error) {
|
||||
if s.isClosed.Load() {
|
||||
err = ErrSpaceClosed
|
||||
return
|
||||
@ -300,11 +308,12 @@ func (s *space) BuildTree(ctx context.Context, id string, listener updatelistene
|
||||
ObjectSync: s.objectSync,
|
||||
Configuration: s.configuration,
|
||||
HeadNotifiable: s.headSync,
|
||||
Listener: listener,
|
||||
Listener: opts.Listener,
|
||||
AclList: s.aclList,
|
||||
SpaceStorage: s.storage,
|
||||
TreeUsage: &s.treesUsed,
|
||||
SyncStatus: s.syncStatus,
|
||||
WaitTreeRemoteSync: opts.WaitTreeRemoteSync,
|
||||
}
|
||||
return synctree.BuildSyncTreeOrGetRemote(ctx, id, deps)
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user